技術分享|記一次差點錯過任意密碼重置漏洞
起因
前段時間參加了一場政務hw,各種waf基本上告別目錄掃描,sql注入,暴力破解這些行為,主要采取的快速打點方式有弱口令,文件上傳,反序列化及各種邏輯漏洞。這次要說的是期間遇見的一個差點失之交臂的邏輯漏洞,也提醒各位師傅們細心點,不要犯同樣的錯誤。
經過
http://xx.xx.xx.xx:8000/ 開局一個登錄框

拿到登錄框(除去各種cms,框架等)我的正常思路是:弱口令>sql注入>修改響應包>目錄掃描>js>旁站>github,google查泄露>fofa特征批量測>社工收集...
弱口令>個人習慣先試試弱口令再搜一下js看看密碼規則在選擇是否爆破,畢竟"正經人"不會繞過前端設置密碼對吧

搜了一下,正則匹配啥的(看不懂)反正很難是弱口令,試了幾下123456,gg

爆破放棄,隨后測了sql注入,修改響應包,目錄掃描都gg,本來快速打點情況下這種硬骨頭打算先丟一邊去隨手點了一下插件看看js

感覺有點東西,訪問之http://xx.xx.xx.xx:8000/forgetpwd

哦豁,有的玩了。該頁面的logo跟主頁不一樣,懷疑是開發遺留未修改的接口
輸入admin直接進入到發送驗證碼處,這里直覺手機號會泄露,果不其然

這種問題都存在,看來這里會存在更多安全問題
直接修改了一波自己手機號測試一哈,結果gg

那算了,直接越過你吧,翻看js找驗證完驗證碼后修改密碼處

結合發送驗證碼的數據包,修改請求包


tenantid 固定值 31e5b201-af6b-44b9-9ab7-6d2c025e5a82
sjhm 那就管理員的手機號 15066666666
yzm 不動他 wbtk
yzhh 不動他 還是 admin
yhmm hex_md5 那我修改123456 就是 e10adc3949ba59abbe56e057f20f883e
構造好了(發現沒,根本不要手機驗證碼,修改密碼環節并沒有繼續校驗)
自信滿滿啊 這個洞十拿九穩了 發送>

結果請求不了,what???這時我的心態已經要蹦了,難道開發刪了這個接口?
結果訪問發現是存在的,那是哪里的問題?最后點了一下burp的顯示

發現json多了一個回車,修改成原始請求,也能看到

結果
最后刪除換行,請求成功,成功修改了管理員的密碼,進入系統,然后就是很簡單是樸實無華的文件上傳getshell,這里不做截圖了。

