寫在前面
昨天在和一位朋友的合作下,發(fā)現(xiàn)了某個授權(quán)站點存在邏輯漏洞,過程挺好玩也挺玄幻的,這里就拿出來寫寫,本人菜雞一枚,請大佬們勿噴~
過程
在對該站點進行排查的時候,我發(fā)現(xiàn)了其中的登錄后臺,便想著嘗試用弱口令試試是否能直接登錄。這里先嘗試賬號為12345,密碼為12345,它的錯誤回顯如下圖:
嘗試賬號為admin,密碼為admin,它的回顯效果就不一樣了,說明當服務(wù)器存在賬號時回顯如下,admin為真實賬號,這里猜測還需要內(nèi)網(wǎng)環(huán)境
這些前期工作都摸清楚后,然后就開始進入正題了。
路徑是:
https://x.x.x/portal/register/forgetPassword
這個url為忘記密碼的頁面,我嘗試修改密碼后再次登錄,看是密碼正確時是否能改登錄。
當填寫登錄名時,如果登錄名存在,則網(wǎng)頁會自動填寫手機號碼
1.點擊獲取驗證碼,目的在于要發(fā)送驗證碼,模擬真實環(huán)境下手機獲取驗證碼。
2.下圖為awvs掃描器中自動測試的payload
/portal/register/forgetPassword?account=4111111111111111&btn
=%e8%8e%b7%e
5%8f%96%e9%aa%8c%e8%af%81%e7%a0%81&code
=94102&Cto=d47867b3be2f4f67aa693ddde6d7904d&msgCode
=94102&password=g00dPa%24%24w0rD&phone=555-666-0606&repassword=g00dPa%24%24w0rD
Payload中94102為awvs掃描時發(fā)送的驗證碼,于是我開始用這個驗證碼嘗試測試,這個驗證碼可能是批量掃描出來的長度以及形狀,剛好符合網(wǎng)站驗證碼長度(5位數(shù))
注:awvs掃描器的payload中phone參數(shù)與網(wǎng)頁電話不一致
3.輸入94102驗證碼,發(fā)現(xiàn)會自動清除,驗證碼已過期(在這里短信驗證碼是當你輸入完成后就執(zhí)行匹配命令的,不用點擊確認按鈕再執(zhí)行匹配命令),于是這個時候我想到了萬能密碼,萬能密碼能在登錄表單繞過登錄的限制,那在驗證碼表單繞過sql查詢語句,當輸入1' or 1='1
?時為True,因為輸完萬能密碼后,服務(wù)器開始匹配(這時候沒有自動清楚驗證碼),網(wǎng)頁出現(xiàn)卡頓狀態(tài)。
在驗證碼表單輸入1' or 1='1
,當出現(xiàn)網(wǎng)頁卡的現(xiàn)象時刷新頁面
4.網(wǎng)頁卡頓一段時間還沒有好,我執(zhí)行了一下刷新,發(fā)現(xiàn)驗證碼沒有被服務(wù)器重置,于是我填寫剩余的表單內(nèi)容,并且提交,提交后網(wǎng)頁繼續(xù)卡頓,此時并無回顯更改成功。
5.等網(wǎng)頁卡頓一段時間后無回顯,執(zhí)行刷新,網(wǎng)頁刷新狀態(tài)如下,將驗證碼替換為94102,這個時候驗證碼有效并且不會卡頓,不會被網(wǎng)頁清理。(個人覺得是剛剛的萬能密碼讓服務(wù)器識別了一次驗證碼的驗證操作,但是沒有執(zhí)行更改密碼的操作,當再次刷新頁面的時候萬能密碼還在,服務(wù)器已經(jīng)將此驗證碼標為True,但是剛剛執(zhí)行完全部操作無正確回顯。所以我決定更換一個驗證碼,此時驗證碼不會被重置,再次輸入更新密碼時成功更改。)
輸入我們定義的密碼即可修改成功。
更改后的賬號密碼為admin/Admin888,嘗試登錄發(fā)現(xiàn)還是有網(wǎng)絡(luò)環(huán)境的限制。
嘗試賬號密碼admin/Admin888 回顯效果不一樣,說明當服務(wù)器存在賬號時回顯如下,admin為真實賬號,猜測需要內(nèi)網(wǎng)環(huán)境
嘗試賬號密碼12345/12345,回顯效果不一樣,這可以證明上面那一點
這下該怎么辦呢?我仍然不想放棄。在查看了該站點的通知公告等信息之后,找到了一些供應(yīng)商等信息,這時我突然想到可以用統(tǒng)一社會信用代碼進行嘗試。
這里先說一下統(tǒng)一社會信用代碼究竟是個啥:
統(tǒng)一社會信用代碼是一組長度為18位的用于法人和其他組織身份識別的代碼。統(tǒng)一社會信用代碼(18位)包含了組織機構(gòu)代碼(第9-17位)和稅務(wù)登記證號碼 (第3-17位),因此,可以說,統(tǒng)一社會信用代碼和組織機構(gòu)代碼不是一個,但有著非常密切的聯(lián)系。 統(tǒng)一社會信用代碼是一組長度為18位的用于法人和其他組織身份識別的代碼。
然后我找到了很多個供應(yīng)商的統(tǒng)一社會信用代碼,將這些統(tǒng)一社會信用代碼當作賬號,經(jīng)過前端輸入賬號密碼登錄時的提示,發(fā)現(xiàn)挺多用戶都存在的。再次使用上述的方法任意修改密碼,都成功了,并且成功登錄了進去。這里我就以其中一個為例:
成功修改
成功登錄
其中涉及到一些敏感信息,都已經(jīng)打碼。
至此,完成此次滲透。
來源:安全客