基于業務場景的漏洞挖掘方法
隨著WAF產品從傳統規則庫到智能引擎的轉型,通用漏洞類型已基本可以防護。但WAF的局限性也在于只能防御流量層面的攻擊,難以防御業務邏輯型的漏洞。而如今大部分企業在Web應用層的防護主要依賴WAF, 往往會忽視業務邏輯場景產生的漏洞 。本文介紹一些基于業務邏輯場景的應用漏洞挖掘方法,希望可以對各企業安全建設和SRC漏洞挖掘有所啟發。
信息收集
信息收集是漏洞挖掘的第一步,你擁有的“資產信息”決定了你的產出。下面列舉幾種常見的信息收集手段:子域名收集。
1. 暴力破解
推薦在線子域名掃描工具:YoungxjTools,速度快,內置大量字典且支持自定義字典,本地工具layer也很方便,比YoungxjTools多了端口配置功能。

2. 搜索引擎搜索
Google、百度、360、bing、搜狗等主流搜索引擎,可以通過搜索語法進行搜索,在發現域名時往往會同時發現一些敏感的頁面,但收錄有限。
3. 證書查詢
常用的證書查詢網站有censys.io crtsh等,可以發現暴力破解無法爆破出來的子域,但同樣收錄有限。


4. 微信公眾號、小程序
微信已是如今人們日常生活中用的最多的軟件之一,越來越多的公司選擇在微信公眾號、小程序來拓展業務及影響力,我們可以通過這些渠道來收集更多的域名或ip地址
業務邏輯的切入點
1.登陸注冊,修改密碼處(驗證碼繞過)
客戶端刷新驗證碼
在挖掘驗證碼問題中,一般情況下會先通過抓取數據包驗證常見的邏輯錯誤、暴力破解、短信轟炸等問題。此處講解下檢查源碼方式,直接右鍵檢查驗證碼的html代碼,可以看到驗證碼是客戶端通過一個img標簽進行請求刷新的,,此處src地址即為驗證碼地址。

正常當我們輸入錯誤的驗證碼時,請求會返回驗證碼錯誤信息且刷新一次驗證碼,當我們將客戶端刷新驗證碼的請求hold住時,驗證碼處會一直停留在原始的驗證碼,不會再做刷新,此時我們就可繞過驗證碼刷新并使用burpsuite進行賬戶密碼的暴力破解了。

2. 支付功能處(更改客戶端)
高并發問題
假設用戶的賬戶余額100元,某商品單價100元/件,當用戶使用賬戶余額購買此商品時只能購買一件數量,且購買成功后賬戶余額歸零。但當業務存在高并發漏洞時,扣款的同時數據庫未落鎖,導致賬戶余額可能減少至負數,購買到的商品也可大于一件。

如在某小程序中,有一處使用積分抽獎的功能,在使用積分抽獎按鈕處使用fiddler抓包并截斷數據包請求。

shift+r設置同時高并發50次,可看到抽獎次數已超出積分余額,同時剩余積分變為負數。


3.訂單管理處(用戶權限,用戶未授權)如增刪改查、本地驗證繞過
水平越權(不安全的直接對象引用IDOR)
越權漏洞是web應用程序常見的漏洞之一,主要分為以下幾類:
- 未授權訪問:本來沒有賬號(即沒有某個功能權限),但是通過越權操作,獲取了某個功能權限;
- 水平越權:本來有個賬號(即只能操作自己的數據,比如增刪改查),但是通過越權操作,能操作其他同等權限賬號的數據。
- 垂直越權:本來有個賬號只有小權限,但是通過越權操作,獲取了大權限。
在日常安全測試中,大部分發現的都是未授權訪問和水平越權,本次講解下水平越權。水平越權常見于業務系統中,對用戶信息或者訂單信息進行增刪改查操作時,由于用戶編號或者訂單編號有規律可循(有序遞增,訂單編號常發現以日期開頭后面再接幾位有序增長的數字,類似20200520xxxx1,20200520xxxx2),且執行請求時未校驗用戶對應權限或權限校驗不足,就可能存在越權漏洞,此時我們通過burpsuite的 intruder對目標參數進行遍歷測試即可。
如下是某廠商業務系統的分銷中心,提供分銷賬單的查詢功能:

登陸賬戶后,任意選擇一個分銷賬單,點擊訂單明細查詢,使用burpsuite進行抓包,可以看到查詢的參數只有”billld”一個選項,且參數值為簡單的4位數字,返回包中含明文的訂單明細信息:


更改一個不在賬戶權限下billld,發現仍可正常返回,使用intruder對billld參數進行遍歷,并對length排序,可得多條有效payload對應的訂單明細,理論上遍歷的參數值范圍夠大,可得全站分銷賬單明細。

4.配置不當
SPF郵件偽造
SPF是 Sender PolicyFramework 的縮寫,一種以IP地址認證電子郵件發件人身份的技術。接收郵件方會首先檢查域名的SPF記錄,來確定發件人的IP地址是否被包含在SPF記錄里面,如果在,就認為是一封正確的郵件,否則會認為是一封偽造的郵件進行退回。SPF可以防止別人偽造你來發郵件,是為了防范垃圾郵件而提出來的一種DNS記錄,它是一種TXT類型的記錄。
由于SMTP郵件服務商互相發送郵件是不需要認證的,郵件偽造也是利用這個特性來實現偽造任意發件人。

如何查看郵件服務器是否配置SPF記錄:
Windows下進入DOS模式后用以下命令:
nslookup -type=txt 域名
Unix操作系統下用:
dig -t txt host
已配置SPF的情況

可以看到在ANSWER SECTION下存在一條
"v=spf1include:spf1.baidu.com include:spf2.baidu.com include:spf3.baidu.com a mx ptr-all"
簡述下此條記錄的含義,v=spf1 聲明SPF的版本,include: 表示引入域名下的 SPF 記錄,支持當前域名的a mx ptr記錄進行驗證,-all表示除此之外拒絕所有。
未配置SPF的情況,可看到聲明中無相關spf記錄

攻擊者可以找一個在線smtp發件服務器,偽造發件地址進行釣魚,以下是某企業郵箱存在SPF郵件偽造的示意圖:


總結
本篇文章只簡單介紹了幾個業務漏洞挖掘的方向,大家可在此基礎上拓展思路,發掘更多姿勢。業務問題產生的漏洞很多,一些掃描器、WAF等安全產品也難以覆蓋,尤其一些新上線的大型業務系統接口多,功能點的邏輯復雜,容易產生被忽視的漏洞,是SRC漏洞挖掘的重點部分,同時也提醒我們甲方此類安全測試的重要性。