Web安全測試中常見邏輯漏洞解析(實戰篇)
Web安全測試中常見邏輯漏洞解析(實戰篇)
簡要:
越權漏洞是比較常見的漏洞類型,越權漏洞能夠理解爲,一個正常的用戶A一般只可以對本身的一些信息進行增刪改查,可是因爲程序員的一時疏忽,對信息進行增刪改查的時候沒有進行一個判斷,判斷所須要操做的信息是否屬於對應的用戶,致使用戶A能夠操做其餘人的信息。php
邏輯漏洞挖掘一直是安全測試中「經久不衰」的話題。相比SQL注入、XSS漏洞等傳統安全漏洞,如今的攻擊者更傾向於利用業務邏輯層的應用安全問題,這類問題每每危害巨大,可能形成了企業的資產損失和名譽受損,而且傳統的安全防護設備和措施收效甚微。Web安全測試中邏輯漏洞的挖掘經驗:html
一:訂單金額任意修改
解析
不少中小型的購物網站都存在【訂單金額任意修改】漏洞。在提交訂單的時候抓取數據包或者直接修改前端代碼,而後對訂單的金額任意修改。前端
以下圖所示:程序員
常常見到的參數大多爲:web
rmb 、value 、amount 、cash 、fee 、money 等算法
關於支付的邏輯漏洞這一塊還有不少種思路,好比相同價格增長訂單數量,相同訂單數量減小產品價格,訂單價格設定爲負數等等。後端
預防思路
1.訂單須要多重較驗,以下圖所演示:安全
2. 訂單數值較大時須要人工審覈訂單信息,以下圖所演示。服務器
二:驗證碼回傳
解析
這個漏洞主要是發生在前端驗證處,而且常常發生的位置在於cookie
帳號密碼找回 、帳號註冊 、支付訂單等
驗證碼主要發送途徑
郵箱郵件 、手機短信
其運行機制以下圖所示:
黑客只須要抓取Response數據包便知道驗證碼是多少。
預防思路
1.response數據內不包含驗證碼,驗證方式主要採起後端驗證,可是缺點是服務器的運算壓力也會隨之增長。
2.若是要進行前端驗證的話也能夠,可是須要進行加密。固然,這個流程圖還有一些安全缺陷,須要根據公司業務的不一樣而進行更改。
三.未進行登錄憑證驗證
解析
有些業務的接口,由於缺乏了對用戶的登錄憑證的較驗或者是驗證存在缺陷,致使黑客能夠未經受權訪問這些敏感信息甚至是越權操做。
常見案例:
1. 某電商後臺主頁面,直接在管理員web路徑後面輸入main.php之類的便可進入。
2. 某航空公司訂單ID枚舉
3. 某電子認證中心敏感文件下載
4.某站越權操做及缺陷,其主要緣由是沒對ID參數作cookie驗證致使。
5. 實際上還有不少案例,他們都存在一個共同的特性,就是沒有對用戶的登錄憑證進行效驗,以下圖爲例。
預防思路
對敏感數據存在的接口和頁面作cookie,ssid,token或者其它驗證,以下圖所示。
四:接口無限制枚舉
解析
有些關鍵性的接口由於沒有作驗證或者其它預防機制,容易遭到枚舉攻擊。
常見案例:
1. 某電商登錄接口無驗證致使撞庫
2. 某招聘網驗證碼無限制枚舉
3. 某快遞公司優惠券枚舉
4. 某電商會員卡卡號枚舉
5. 某超市註冊用戶信息獲取
預防思路
1. 在輸入接口設置驗證,如token,驗證碼等。
若是設定驗證碼,最好不要單純的採起一個前端驗證,最好選擇後端驗證。
若是設定token,請確保每一個token只能採用一次,而且對token設定時間參數。
2. 註冊界面的接口不要返回太多敏感信息,以防遭到黑客製做枚舉字典。
3. 驗證碼請不要以短數字來驗證,最好是以字母加數字進行組合,而且驗證碼須要設定時間期限。
4. 優惠券,VIP卡號請儘可能不要存在規律性和簡短性,而且優惠券最好是以數字加字母進行組合。
等。
五:cookie設計存在缺陷
解析
這裏須要對其詳細的說一下。咱們先一個一個來吧。
Cookie的效驗值過於簡單。有些web對於cookie的生成過於單一或者簡單,致使黑客能夠對cookie的效驗值進行一個枚舉,以下圖所示
根據上圖,咱們能夠分析出,這家網站對於cookie的較驗只單純的採用了一組數字,而且數值爲常量,不會改變,這樣很是容易遭到黑客的枚舉。甚至有一些網站作的更簡單,直接以用戶名,郵箱號或者用戶ID等來做爲cookie的判斷標準。
2. cookie設置存在被盜風險
有不少時候,若是一個用戶的cookie被盜取,就算用戶怎麼修改帳號和密碼,那段cookie同樣有效。詳情能夠參考《BlackHat(世界黑帽大會)官方APP出現兩個邏輯漏洞》。
其原理以下:
國內大部分廠商都不會把這個地方看成安全漏洞來處理,他們認爲這個漏洞的利用條件是黑客必需要大批量獲取到用戶的cookie。雖然事實如此,可是這個也是一個安全隱患。
3.用戶的cookie數據加密應嚴格使用標準加密算法,並注意密鑰管理。
有一些廠商爲了圖方便,沒有對用戶的cookie作太多的加密工做,僅僅是單純的作一個靜態加密就完事了。案例描述:
cookie中有個access token參數,看到value後面是兩個等號,習慣性的給丟去base64解碼裏面,發現解出來後是個人用戶名。所以只要知道一我的的用戶名就能夠僞造對方的cookie,登錄他人帳戶。
4.還有多個案例再也不作重複說明,你們能夠深刻研究一下cookie中的邏輯漏洞。可是cookie中的漏洞大多都是屬於一個越權漏洞。越權漏洞又分爲平行越權,垂直越權和交叉越權。
平行越權:權限類型不變,權限ID改變
垂直越權:權限ID不變,權限類型改變
交叉越權:即改變ID,也改變權限
以下圖所示:
預防思路
1.cookie中設定多個驗證,好比自如APP的cookie中,須要sign和ssid兩個參數配對,才能返回數據。
2.用戶的cookie數據加密應嚴格使用標準加密算法,並注意密鑰管理。
3.用戶的cookie的生成過程當中最好帶入用戶的密碼,一旦密碼改變,cookie的值也會改變。
4.cookie中設定session參數,以防cookie能夠長時間生效。
等
六:找回密碼存在設計缺陷
解析
1.auth設計缺陷
常常研究邏輯漏洞的人可能會對如下URL很熟悉
www.xxx.com/resetpassword.php?id=MD5
用戶修改密碼時,郵箱中會收到一個含有auth的連接,在有效期內用戶點擊連接,便可進入重置密碼環節。而大部分網站對於auth的生成都是採用rand()函數,那麼這裏就存在一個問題了,Windows環境下rand()最大值爲32768,因此這個auth的值是能夠被枚舉的。
以下面這個代碼能夠對auth的值作一個字典。
而後重置某個帳號,而且對重置連接內的auth進行枚舉
整個漏洞的運做的流程圖以下:
2.對response作驗證
這個漏洞常常出如今APP中,其主要緣由是對於重置密碼的的驗證是看response數據包,因爲以前的案例沒有截圖,只能畫個流程圖給你們演示一下。
3.《密碼找回邏輯漏洞總結》這篇文章很全面的總結了密碼找回漏洞的幾個具體思路和分析。
預防思路
1.嚴格使用標準加密算法,並注意密鑰管理。
2.在重置密碼的連接上請帶入多個安全的驗證參數。
七:單純讀取內存值數據來看成用戶憑證
解析
實際上這個應該算做一個軟件的漏洞,可是由於和web服務器相關,因此也看成WEB的邏輯漏洞來處理了。最能看成例子是《騰訊QQ存在高危漏洞可讀取並下載任意用戶離線文件(泄漏敏感信息)》這個漏洞,可是我相信這種奇葩的漏洞不必定只有騰訊纔有,只是還沒人去檢測罷了。
產生這個漏洞的主要緣由是程序在肯定一個用戶的登錄憑證的時候主要是依靠內存值中的某個value來進行確認,而不是cookie。可是內存值是能夠更改和查看的。其流程圖以下:
預防思路
1. 走服務器端的數據最好作cookie驗證。
2. 我不反對直接在進程中肯定用戶的登錄憑證,可是請對進程進行保護,或者對進程中的value作加密處理。
總結
以上見到的只是幾個比較經典的和常見的邏輯漏洞,這些邏輯漏洞也是程序開發人員和安全檢測人員須要留意的。
若是對邏輯漏洞感興趣的能夠查看如下的擴展閱讀: