【W(wǎng)eb攻防之業(yè)務安全實戰(zhàn)指南】第5章 業(yè)務辦理模塊測試
《Web攻防之業(yè)務安全實戰(zhàn)指南》技術篇復現(xiàn) 5.1 訂單ID篡改測試
《Web攻防之業(yè)務安全實戰(zhàn)指南》技術篇復現(xiàn) 5.2 手機號碼篡改測試
《Web攻防之業(yè)務安全實戰(zhàn)指南》技術篇復現(xiàn) 5.3 用戶ID篡改測試
《Web攻防之業(yè)務安全實戰(zhàn)指南》技術篇復現(xiàn) 5.4 郵箱和用戶篡改測試
《Web攻防之業(yè)務安全實戰(zhàn)指南》技術篇復現(xiàn) 5.5 商品編號篡改測試
《Web攻防之業(yè)務安全實戰(zhàn)指南》技術篇復現(xiàn) 5.6 競爭條件測試
5.1?訂單ID篡改測試
5.1.1?測試原理和方法
在有電子交易業(yè)務的網(wǎng)站中,用戶登錄后可以下訂單購買相應產(chǎn)品,購買成功后,用戶可以查看訂單的詳情。當開發(fā)人員沒有考慮登錄后用戶間權限隔離的問題時,就會導致平行權限繞過漏洞。攻擊者只需注冊一個普通賬戶,就可以通過篡改、遍歷訂單id,獲得其他用戶訂單詳情,其中多數(shù)會包括用戶的姓名、身份證、地址、電話號碼等敏感隱私信息。黑色產(chǎn)業(yè)鏈中的攻擊者通常會利用此漏洞得到這些隱私信息。
5.1.2?測試過程
靶場:5_1.zip
靶場下載鏈接:https://gitee.com/Almost_Zhangsan/9787121335815/blob/master/第5章 業(yè)務辦理模塊測試/5.1 訂單ID篡改測試/5_1.zip
URL:http://192.168.0.101/5_1/login.html
1.登錄賬號后跳轉到保單詳情頁,用戶名zhangsan,密碼123456,保單號:P000001,此時身份證號加密顯示


2.burp抓包修改保單號policyNo=P000002,即可越權查看用戶lisi保單內(nèi)容


3.Intruder模塊標記policyNo變量000001部分,從000001遍歷到000100


4.在返回的數(shù)據(jù)包中,包含全部在界面中被隱藏的身份證號等敏感信息,獲取20位用戶敏感數(shù)據(jù)

5.1.3?修復建議
后臺查看訂單時要通過Session機制判斷用戶身份,做好平行權限控制,服務端需要校驗相應訂單是否和登錄者的身份一致,如發(fā)現(xiàn)不一致則拒絕請求,防止平行權限繞過漏洞泄露用戶敏感個人隱私信息。
5.2?手機號碼篡改測試
5.2.1?測試原理和方法
手機號通??梢源硪粋€用戶身份。當請求中發(fā)現(xiàn)有手機號參數(shù)時,我們可以試著修改它,測試是否存在越權漏洞。系統(tǒng)登錄功能一般先判斷用戶名和密碼是否正確,然后通過Session機制賦予用戶令牌。但是在登錄后的某些功能點,開發(fā)者很容易忽略登錄用戶的權限問題。所以當我們用A的手機號登錄后操作某些功能時,抓包或通過其他方式嘗試篡改手機號,即可對這類問題進行測試。
5.2.2?測試過程
靶場:5_2.zip
靶場下載鏈接:https://gitee.com/Almost_Zhangsan/9787121335815/blob/master/第5章 業(yè)務辦理模塊測試/5.2 手機號碼篡改測試/5_2.zip
URL:http://192.168.0.107/5_2/login.php
1、手機號:15333333333,密碼:123456,登錄,目前狀態(tài):正常狀態(tài)


2、手機號:18888888888,密碼:123456,登錄,目前狀態(tài):正常狀態(tài)


3、15333333333登錄,burp抓包,點擊掛失按鈕,修改username參數(shù)為18888888888

4、瀏覽器顯示“尊敬的 18888888888 用戶,您申請掛失將立即生效,請確認辦理?!?br>

5、在登錄頁面輸入用戶名:18888888888,密碼:123456,發(fā)現(xiàn)18888888888狀態(tài)變成“掛失”


5.3?用戶ID篡改測試
5.3.1?測試原理和方法
從開發(fā)的角度,用戶登錄后查看個人信息時,需要通過sessionid判定用戶身份,然后顯示相應用戶的個人信息。但有時我們發(fā)現(xiàn)在GET或POST請求中有userid這類參數(shù)傳輸,并且后臺通過此參數(shù)顯示對應用戶隱私信息,這就導致了攻擊者可以通過篡改用戶ID越權訪問其他用戶隱私信息。黑色產(chǎn)業(yè)鏈中的攻擊者也喜歡利用此類漏洞非法收集個人信息。
5.3.2?測試過程
靶場:5_3.zip
靶場下載鏈接:
URL:http://192.168.0.108/5_3/index.php?deliverId=1
1.burp抓包,將deliverId參數(shù)值“1”修改為“2”

2.發(fā)包后返回了deliverId=2的收貨人信息

后臺功能請求要通過Session機制判斷用戶身份,不要相信客戶端傳來的用戶ID。如果確實需要客戶端傳輸userid,則服務端需要校驗userid是否和登錄者的Session身份一致,如發(fā)現(xiàn)不一致則拒絕請求,防止被攻擊者篡改,未授權訪問他人賬號內(nèi)容。
5.4?郵箱和用戶篡改測試
5.4.1?測試原理和方法
在發(fā)送郵件或站內(nèi)消息時,篡改其中的發(fā)件人參數(shù),導致攻擊者可以偽造發(fā)信人進行釣魚攻擊等操作,這也是一種平行權限繞過漏洞。用戶登錄成功后擁有發(fā)信權限,開發(fā)者就信任了客戶端傳來的發(fā)件人參數(shù),導致業(yè)務安全問題出現(xiàn)。
5.4.2?測試過程
靶場:5_4.zip
靶場下載鏈接:https://gitee.com/Almost_Zhangsan/9787121335815/blob/master/第5章 業(yè)務辦理模塊測試/5.4 郵箱和用戶篡改測試/5_4.zip
URL:http://192.168.2.14/5_4/login.php
1.登陸頁面,用戶名:user0,密碼:M8weHI3B

2.下拉框選擇user6發(fā)送消息

3.burp抓包修改發(fā)件人參數(shù)sender

4.登錄收件人user6賬號,用戶名:user6,密碼:P7uoVb1N,發(fā)現(xiàn)發(fā)件人被篡改成功

5.4.3?修復建議
用戶登錄后寫信、發(fā)送消息時要通過Session機制判斷用戶身份。如果需要客戶端傳輸郵箱、發(fā)件人,服務端需要校驗郵箱、發(fā)件人是否和登錄者的身份一致,如發(fā)現(xiàn)不一致則拒絕請求,防止被攻擊者篡改用于釣魚攻擊。
5.5?商品編號篡改測試
5.5.1?測試原理和方法
在交易支付類型的業(yè)務中,最常見的業(yè)務漏洞就是修改商品金額。例如在生成商品訂單、跳轉支付頁面時,修改HTTP請求中的金額參數(shù),可以實現(xiàn)1分買充值卡、1元買特斯拉等操作。此類攻擊很難從流量中匹配識別出來,通常只有在事后財務結算時發(fā)現(xiàn)大額賬務問題,才會被發(fā)現(xiàn)。此時,攻擊者可能已經(jīng)通過該漏洞獲得了大量利益。如果金額較小或財務審核不嚴,攻擊者則可能細水長流,從中獲得持續(xù)的利益。事后發(fā)現(xiàn)此類漏洞,就大大增加了追責的難度和成本。此類業(yè)務漏洞的利用方法,攻擊者除了直接篡改商品金額,還可以篡改商品編號,同樣會造成實際支付金額與商品不對應,但又交易成功的情況。攻擊者可以利用此業(yè)務漏洞以低價購買高價的物品。
5.5.2?測試過程
靶場:5_5.zip
靶場下載鏈接:https://gitee.com/Almost_Zhangsan/9787121335815/blob/master/第5章 業(yè)務辦理模塊測試/5.5 商品編號篡改測試/5_5.zip
URL:http://192.168.2.14/5_5/index.php
1.兌換禮品,當前金幣數(shù)量:10

2.禮品1-立即兌換,抓包修改為30金幣禮品的禮品號,goods_id=3

3.兌換成功并在訂單信息顯示,當前金幣數(shù)量:-20

5.5.3?修復建議
建議商品金額不要在客戶端傳入,防止被篡改。如果確實需要在客戶端傳輸金額,則服務端在收到請求后必須檢查商品價格和交易金額是否一致,或對支付金額做簽名校驗,若不一致則阻止該交易。
5.6?競爭條件測試
5.6.1?測試原理和方法
競爭條件通常是在操作系統(tǒng)編程時會遇到的安全問題:當兩個或多個進程試圖在同一時刻訪問共享內(nèi)存,或讀寫某些共享數(shù)據(jù)時,最后的競爭結果取決于線程執(zhí)行的順序(線程運行時序),稱為競爭條件(Race?Conditions)。
5.6.2?測試過程
靶場:upload-labs
靶場下載鏈接:
URL:http://192.168.2.14/upload-labs/Pass-18/index.php
1.首先上傳一張正常圖片獲取文件路徑
URL:http://192.168.2.14/upload-labs/upload/4820231007140838.jpg


2.上傳phpinfo文件burp攔截數(shù)據(jù)包

3.請求包發(fā)送到Intruder模塊,payload type設置為null,payload options設置為continue indefinitely,無限發(fā)送請求包,并在options中將threads線程修改為30


4.在另一個主機瀏覽器中訪問index.php,burp Intruder模塊,payload type設置為null,payload options設置為continue indefinitely,成功訪問到phpinfo頁面
URL:http:///192.168.2.14/upload-labs/upload/index.php

5.6.3?修復建議
在處理訂單、支付等關鍵業(yè)務時,使用悲觀鎖或樂觀鎖保證事務的ACID特性(原子性、一致性、隔離性、持久性),并避免數(shù)據(jù)臟讀(一個事務讀取了另一個事務未提交的數(shù)據(jù)),解決競爭條件和并發(fā)操作可能帶來的相關業(yè)務問題。