渗透测试中的一波三折
信息收集&踩點(diǎn)
這是一個普通的等保滲透項(xiàng)目,要求在一天內(nèi)完成,接到項(xiàng)目時已經(jīng)快中午了,由于時間急促,信息收集一番便開干了。
經(jīng)過前期踩點(diǎn)發(fā)現(xiàn)站點(diǎn)使用了webpack打包且存在流量限制,目錄掃描超過200會ban ip,掃描器無法正常使用,通過查看js文件發(fā)現(xiàn)了多個系統(tǒng)接口,但都存在權(quán)限校驗(yàn),無法進(jìn)一步利用。
重新回到登錄頁面進(jìn)行測試,發(fā)現(xiàn)此處存在用戶名枚舉漏洞,利用用戶名枚舉得到存在賬號admin,通過查看js發(fā)現(xiàn)登錄密碼正則匹配為強(qiáng)口令,且存在賬號鎖定策略,密碼錯誤五次賬號鎖定15分鐘,繼續(xù)測試發(fā)現(xiàn)此處驗(yàn)證碼有效期為一次,無法進(jìn)行繞過,批量爆破用戶弱口令也無法實(shí)現(xiàn)
手動嘗試多個強(qiáng)口令登錄無果,之后開啟抓包截獲登錄數(shù)據(jù)包,觀察返回包發(fā)現(xiàn)登錄失敗的response code為500,結(jié)合response返回內(nèi)容和webpack信息可知,response code狀態(tài)控制著系統(tǒng)跳轉(zhuǎn)鏈接,通過更改response code狀態(tài)為200,嘗試使用邏輯漏洞突破限制,但由于系統(tǒng)存在權(quán)限校驗(yàn),該嘗試也以失敗告終。
之后通過搜索關(guān)鍵字,從某js文件得到admin賬號密碼,嘗試登陸,但也失敗了。
漏洞挖掘
用戶名枚舉&弱口令
登錄頁面無收獲,為了尋找其它的突破點(diǎn),利用搜索引擎、GitHub等對目標(biāo)進(jìn)行信息收集,最終在目標(biāo)官網(wǎng)處發(fā)現(xiàn)其郵箱用戶名,復(fù)制該用戶名回到目標(biāo)系統(tǒng),利用用戶名枚舉漏洞可知該賬號存在于目標(biāo)系統(tǒng),為可登錄用戶。
得到了切入點(diǎn),使用先前收集到的admin密碼登錄,但登錄失敗,隨后便對該用戶進(jìn)行多個強(qiáng)口令登錄嘗試,由于驗(yàn)證碼有效和賬號鎖定策略,在經(jīng)過多次重復(fù)勞作后,登錄成功。
由于登錄成功的賬號需要更改密碼,為了不影響業(yè)務(wù)的穩(wěn)定性,詢問客戶是否能更改密碼,在取到客戶同意后便更改密碼重新進(jìn)行登錄,意料之外的是還存在第二層驗(yàn)證,也就是下面的短信驗(yàn)證碼認(rèn)證機(jī)制,經(jīng)過測試發(fā)現(xiàn)此處可爆破驗(yàn)證碼,但不清楚驗(yàn)證碼的組合及長度,通過f12定位源碼,發(fā)現(xiàn)密碼輸入的maxlength為4,猜測此處驗(yàn)證碼為4位數(shù),嘗試爆破驗(yàn)證碼,但失敗。
為了繞過驗(yàn)證碼認(rèn)證機(jī)制,繼續(xù)對該接口測試,通過測試發(fā)現(xiàn)可利用此接口下發(fā)登錄驗(yàn)證碼到任意手機(jī)號,利用該設(shè)計缺陷,更改phone內(nèi)容為本機(jī)號碼,使用本機(jī)接收驗(yàn)證碼并登錄,但此次嘗試也失敗了。
通過短信可知此處的驗(yàn)證碼為6位數(shù),并非是4位,這里有點(diǎn)奇怪,因?yàn)榍岸讼拗屏溯斎腧?yàn)證碼的長度為4,正常用戶肯定不會f12更改maxlength再登錄的,抱著疑問問了下客戶才知道這個驗(yàn)證碼登錄功能僅限于管理員登錄使用,非管理員用戶則是直接登錄,通過短短的幾句話可知,這個賬號具備管理員權(quán)限,且目前已經(jīng)有了賬號密碼,只要繞過短信認(rèn)證,即可獲取后臺管理員權(quán)限,由于6位數(shù)驗(yàn)證碼爆破可能性較小,使用隨機(jī)數(shù)爆破一番后失敗,此時測試再次陷入僵局。
邏輯漏洞
回到登錄處重新尋找突破口,經(jīng)過觀察登錄數(shù)據(jù)包,在登錄處發(fā)現(xiàn)了一個突破點(diǎn),當(dāng)使用賬號密碼登錄成功后,再來到驗(yàn)證碼登錄步驟時,此時的驗(yàn)證碼登錄數(shù)據(jù)包會存在Authorization字段,這時回到webpack查看認(rèn)證邏輯,根據(jù)代碼邏輯,當(dāng)?shù)卿洈?shù)據(jù)包存在Authorization字段,再去更改response code狀態(tài)是可以繞過驗(yàn)證碼登錄后臺的。
利用該邏輯缺陷,回到驗(yàn)證碼登錄頁面輸入任意驗(yàn)證碼,抓包修改響應(yīng)內(nèi)容為200即可突破限制進(jìn)后臺。
獲取到了后臺權(quán)限,為了擴(kuò)大漏洞危害,繼續(xù)對后臺進(jìn)行漏洞挖掘,嘗試getshell。
文件上傳漏洞
進(jìn)到后臺找尋上傳點(diǎn),最終在某文件上傳處繞過前端限制上傳了jsp文件,但令人失望的是,上傳文件被放到了對象存儲OSS。
繼續(xù)對其它上傳點(diǎn)進(jìn)行嘗試,通過不懈努力,終于找到一個上傳文件放到本地服務(wù)器的上傳接口,但存在限制,需要進(jìn)行繞過。
經(jīng)過多次嘗試,發(fā)現(xiàn)更改接口為uploadtest,即可繞過限制傳shell,但shell雖然傳上去了,訪問卻提示了接口異常,shell無法正常使用,后來重新上傳txt、png等文件訪問,也都為異常,沒辦法,上傳點(diǎn)無法正常使用,只能尋找其它突破點(diǎn)了。
SQL注入
繼續(xù)測試也只發(fā)現(xiàn)了個布爾注入和一些xss,到這里已經(jīng)下午5點(diǎn)多了,由于時間問題,只能停下來,把報告給寫了,到此,本次測試也告一段落。
思考
攻擊路徑:
1.利用用戶名枚舉得到賬號xx。
2.xx賬號存在弱口令,更改密碼登錄時發(fā)現(xiàn)存在短信驗(yàn)證碼限制。
3.利用邏輯漏洞繞過短信驗(yàn)證碼限制獲取后臺權(quán)限,但由于系統(tǒng)缺陷無法get shell。
本文使用了組合漏洞進(jìn)后臺,中間環(huán)節(jié)哪怕缺少一個漏洞,如用戶名枚舉,可能都導(dǎo)致進(jìn)后臺失敗,雖然用戶名枚舉這種漏洞在各位師傅看來用處不大,但在特定情景下,其作用還是非常顯著的,如果不是用戶名枚舉確定了xx用戶的存在,在驗(yàn)證碼有效的情況下,或許我在嘗試幾個弱口令被封賬號后便放棄這個用戶賬號,從而就沒有后續(xù)突破后臺的操作了,所以說滲透需要細(xì)心,每個漏洞都能環(huán)環(huán)相扣,或許一個用戶名枚舉就能賦予我們突破的靈感。
最后
想學(xué)網(wǎng)絡(luò)安全以及正在學(xué)習(xí)網(wǎng)絡(luò)安全的同學(xué)可以關(guān)注私我獲取【網(wǎng)絡(luò)安全學(xué)習(xí)資料·攻略】
總結(jié)
以上是生活随笔為你收集整理的渗透测试中的一波三折的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【渗透测试】一次运气很好的文件上传
- 下一篇: 【CTF解题】BCTF2018-hous