知識點
驗證碼安全
分類:圖片,手機或者郵箱,語音,視頻,操作等
原理:驗證生成或驗證過程中的邏輯問題
危害:賬戶權限泄露,短信轟炸,遍歷,任意用戶操作等
漏洞:客戶端回顯(已講),驗證碼復用,驗證碼爆破(已講),繞過等
Token安全
基本上述同理,主要驗證中可存在繞過可繼續后續測試
token爆破,token客戶端回顯等
驗證碼識別插件工具使用
captcha-killer,Pkav-Http-Fuzz,reCAPTCHA等
captcha-killer下載:https://github.com/c0ny1/captcha-killer/releases/tag/0.1.2
reCAPTCHA下載:https://github.com/bit4woo/reCAPTCHA/releases/tag/v1.0
接口安全問題
調用,遍歷,未授權,篡改等
調用案例:短信轟炸
遍歷案例:UID等遍歷
callback回調:JSONP
參數篡改:墨者靶場
未授權訪問與越權漏洞區別
Jboss、Jenkins、ldap、Radis、elasticsearch、MenCache、
Mongodb、Rsync、Zookeeper、Docker等未授權訪問
本課重點
- 案例1:驗證碼識別插件及工具操作演示-實例
- 案例2:驗證碼繞過本地及遠程驗證-本地及實例
- 案例3:Token客戶端回顯繞過登錄爆破演示-本地
- 案例4:某URL下載接口ID值調用遍歷測試-實例
- 案例5:Callback自定義返回調用安全-漏洞測試-實例
- 案例6:上述在實戰中如何做到漏洞發現-bp功能點
案例1:驗證碼識別插件及工具操作演示-實例
驗證碼識別測試網址:https://manage.yyxueche.com//panel/login.php
<1>Pkav HTTP Fuzzer驗證碼識別工具
- 優點:免費,簡單,方便
- 缺點:無法集成到burp等第三方工具上使用,只能在本工具上發包

<2>captcha-killer burp驗證碼識別插件
參考:
https://www.cnblogs.com/cwkiller/p/12659549.html
https://www.cnblogs.com/nul1/p/12071115.html
案例2:驗證碼繞過本地及遠程驗證-本地及實例
演示案例1&2靶場環境:pickachu

演示案例1:驗證碼復用
驗證碼可以一直使用,不需要更新

原因是驗證碼用過后未及時銷毀

演示案例2:驗證碼繞過
這里驗證碼的生成和驗證都是在前端進行,繞過方法是直接屏蔽掉前端相關的JS代碼即可。

演示案例3:真實案例
這里有一個注冊功能,給手機號發驗證短信時需要輸入驗證碼。

第一次輸入正確的驗證碼成功后,抓包,將驗證碼字段值設置為空,可以一直向手機發送短信。

案例3:Token客戶端回顯繞過登錄爆破演示-本地
靶場環境:pickachu

登錄請求包有一個隱藏字段token防止重放,這個字段值由前一個請求從后端返回

繞過方法:可以重放兩個請求,從第一個請求響應中取token值,放到第二個請求(登錄請求)中,對登錄進行暴力破解。、
參考:https://www.cnblogs.com/zhengna/p/12703113.html
案例4:某URL下載接口ID值調用遍歷測試-實例
類似枚舉遍歷
http://www.grasp.com.cn/DownFiles.aspx?id=591
遇到以上這類請求接口時,可以嘗試配合intruder模塊,枚舉ID值,看能否獲取其他編號對應的用戶信息
造成這類問題的原因是水平越權
案例5:Callback自定義返回調用安全-漏洞測試-實例
callback安全
簡要說明:
- 1.由於瀏覽器的同源策略(域名,協議,ip端口相同),非同源域名之間傳遞會存在限制。
- 2.JSONP(用於解決跨域數據傳輸的問題,利用了HTML里元素標簽的開放策略src引入Js文件,遠程調用動態生成JSON文件來實現數據傳遞,並以任意javascript的形式傳遞,一般使用 Callback(回調函數返回,由於沒有使用白名單的方法進行限制Callback的函數名,導致攻擊者可以自定義Callback內容,從而觸發XSS等漏洞)由瀏覽器的javascript引擎負責解釋運行。
原理分析:
- 1.接口開發時,接收回調函數的參數值在進行拼接前未對惡意數據進行合理化處理,導致攻擊者插入惡意的HTML標簽並在返回的JSON數據格式原樣輸出;
- 2.同時服務端未**正確設置響應頭content-type,**導致返回的json數據被瀏覽器當做Html內容進行解析,就可能造成xss等漏洞。
測試切入點:
- 1.一個使用jsonp技術的接口,參數中包含回調函數的名稱(jasonp,callback,);
- 2.服務端返回的json數據時,響應頭為 content-type: text/html;
- 3.服務端未對回調函數參數進行過濾凈化。
測試步驟:
- 1.設置代理到burpsuite;
- 2.網站根目錄開始爬取,重點關注Ajax異步(一般頁面只會局部刷新)處理的網頁,關注重點業務;
- 3.在HTTP history 標簽頁過濾功能過濾關鍵詞 Callback,jasonp,等請求,找到URL帶有Callback參數的鏈接。勾選Filder by file extension中的Hider,隱藏js、gif等后綴的URL);
- 4.查看URL對應得HTTP Response的Content-Type類型是否為text/html且內容是否為json形式(帶有json數據的函數調用),如果是我們輸入的HTML標簽才會被瀏覽器解析;
- 5.將對應的請求發送到Repeater。在callback參數值的前面加一些類似HTML的標簽,如,如callback=Testjsonp1,Go之后發現Response的內容有無影響(HTML有無被轉義,沒有轉義則存在漏洞)。也可將callback參數換為有惡意行為的HTML標簽,如callback=<img οnerrοr=alert(document.cookie) src=x />jsonp1
防御修復方案:
- 1.定義HTTP響應中content-type為json數據格式,即Content-type:application/json;
- 2.建立callback白名單,如果傳入的callback參數值不在名單內就阻止繼續輸出,跳轉到異常頁面;
- 3.對callback參數進行凈化,包括不限於html實體編碼,過濾特殊字符< > 等。
原文鏈接:https://blog.csdn.net/weixin_42519551/article/details/104578440
案例6:上述在實戰中如何做到漏洞發現-bp功能點
爬蟲整個網站-->搜索特定關鍵字(比如cheackcode,id,callback等)-->快速精准找到有邏輯漏洞的點-->針對性測試
