前言
在學習了大量web邏輯漏洞的知識后,想進行實戰(zhàn)。練練手。作為小菜雞的我,這是我第二次進行實戰(zhàn)挖洞,可能會存在許多問題。望各位大師傅多多指點。
閑話少說,直接開整
實戰(zhàn)
1.信息收集
首先,在src中找了一個網(wǎng)站應用,獲得其域名地址為 “****.****.com”。
接下來就是一些常規(guī)操作(信息收集)啦。。。
1. 域名反查IP
我使用的是“超級ping”網(wǎng)站,不僅可以查看域名對應的IP地址,還可以查看其網(wǎng)址是否使用CDN技術,至于CDN技術是什么,我就不多說啦。
imageimage
可以查到該網(wǎng)站的ip,并且可以發(fā)現(xiàn)從全國各地發(fā)起的ping命令,對應域名的DNS解析地址均相同,故可判斷該網(wǎng)站沒有使用CDN技術,這樣就好辦了,不用為找網(wǎng)站真實服務器IP而發(fā)愁了。
免費領取學習資料
2021年全套網(wǎng)絡安全資料包及最新面試題
(滲透工具,環(huán)境搭建、HTML,PHP,MySQL基礎學習,信息收集,SQL注入,XSS,CSRF,暴力破解等等)
2. 子域名查看
對該網(wǎng)站的二級域名 "***.com" 進行下一級域名的爆破,為了避免自己的IP被封,直接使用在線的子域名爆破網(wǎng)站。
image
發(fā)現(xiàn)爆破出了不少的子域名,留著后面用。
3. 查看該域名是否存在旁站
旁站就是在同一臺服務器上搭建的多個網(wǎng)站,使用同一個IP地址。在目標網(wǎng)站無法攻擊成功時,若他的旁站可以成功攻擊并獲取相應的系統(tǒng)權限,這勢必會影響到目標網(wǎng)站的安全性,應為已經(jīng)獲取到同一臺服務器的權限了。
image
發(fā)現(xiàn)該IP下,只有一個域名。故不存在旁站。
唉,少了一條攻擊思路。。。
4. 網(wǎng)站CMS指紋查詢
有些網(wǎng)站是直接使用網(wǎng)上的建站源代碼直接搭建的網(wǎng)站,通過識別其指紋,可以發(fā)現(xiàn)其是使用哪一套源代碼搭建的網(wǎng)站。然后再使用搜索引擎搜索對應源代碼存在的漏洞,這樣就可以直接進行利用
image
雖然沒有識別出網(wǎng)站的CMS,但是識別出了網(wǎng)戰(zhàn)的WAF和Web Server等重要信息。
5. 敏感目錄收集
由于我這次著重練習的Web邏輯漏洞,敏感目錄收集就暫時不進行了。
更重要的原因是網(wǎng)站使用WAF防火墻,當我進行敏感目錄掃描的時候,會從同一個IP發(fā)出大量的數(shù)據(jù)包,IP會被封掉的,那就沒得玩兒了。
信息收集就告一段落了。。。
2.正式實戰(zhàn)開始
首先,打開官方網(wǎng)頁,發(fā)現(xiàn)了”登錄注冊“功能,那就從這里開始吧,看看其是否存在邏輯漏洞。
image
在這個功能點處,需要輸入“手機號”和“對應發(fā)送的短信驗證碼”進行新用戶注冊。
這里不得不吐槽的是,連一個圖片驗證碼都沒有,這也太不安全了吧。
第一個點:可以枚舉出注冊了該網(wǎng)站的用戶的手機號碼
雖然我知道這可能都不算一個漏洞,水一下,哈哈哈。。。
該注冊功能會在點擊獲取驗證碼之后,會將輸入的手機號傳送到服務器后端進行驗證是否已經(jīng)注冊,并將結果返回到前端。
1.手機號已經(jīng)被注冊了,后端返回的數(shù)據(jù)包

2.手機號沒有被注冊,后端返回的數(shù)據(jù)包

由于該注冊功能,并沒有使用圖片驗證碼機制進行防御,故可以將客戶端用于檢驗手機號碼是否注冊的數(shù)據(jù)包發(fā)送到BURP的intruder模塊進行枚舉。

這樣就可以爆出注冊了應用的用戶手機號。
修復手法:在注冊處,添加圖片或者其他類型的驗證碼,以減緩攻擊者的枚舉速度。
第二個點:任意手機號注冊
在該網(wǎng)站的注冊處,本應該使用“用戶的手機號和其手機上的驗證碼”來進行注冊,但可以通過修改服務器后端的驗證碼校驗狀態(tài)碼,來繞過驗證碼的驗證,進行任意用戶的注冊。
這個漏洞是怎么發(fā)現(xiàn)的尼。。
我在檢測注冊功能時,使用burp一個包一個包的查看,分析每個數(shù)據(jù)包中參數(shù)的作用以及整個注冊的實現(xiàn)流程。就發(fā)現(xiàn)后端返回的數(shù)據(jù)包,總是包含狀態(tài)碼,故猜測用戶注冊使用的驗證碼時,使用前端驗證。
1.輸入任意的手機號碼

2.點擊獲取驗證碼,并使用burp抓包
發(fā)送的數(shù)據(jù)包:

返回的數(shù)據(jù)包:

顯示該用戶沒有注冊。
中間就是一些沒有什么用,這里就不截圖浪費時間了,直接到最關鍵的一步。
3.修改服務器后端的返回狀態(tài)碼,實現(xiàn)任意用戶注冊。
隨便輸入驗證碼,使用Burp抓取數(shù)據(jù)包

發(fā)送的數(shù)據(jù)包:

使用burp中的intercept-->Response to this request截獲該請求的相應數(shù)據(jù)包。如下:

然后就是更改狀態(tài)碼為正確狀態(tài)碼,(我是怎么知道正確的狀態(tài)碼尼?我在使用自己手機號注冊時,得到了正確的響應狀態(tài)碼)
修改后,如下:

放行后發(fā)現(xiàn)注冊步驟直接進入下一個步驟,

然后就是正常的注冊,(填入一些實名信息,以及企業(yè)名),就注冊成功了,成功頁面如下:

大功告成啦。。。開心.jpg
還有這里在注冊時,還會要求出入企業(yè)的名稱,若企業(yè)名稱已存在,其會報出“企業(yè)名已存在”,通過這個點也可以枚舉出,注冊了這個網(wǎng)站的企業(yè)名稱信息,這里就不再重復第一個操作了。
修復方案:一些比較重要的驗證操作一定要放在后端服務器進行處理,不要過度的相信前端JS代碼。





