轉自個人博客:0pt1mus
打開實例後的網站。
點擊任何位置,都沒有反應,查看源碼後分析,該頁面沒有任何鏈接能夠到其他地方,因此通過工具爆破目錄。
這裏使用dirmap工具。
python dirmap.py -i http://docker.hackthebox.eu:31822/ -lcf
注:-lcf表示的是讀取配置文件,dirmap不支持通過命令行詳細配置,通過github下載dirmap後,可以通過包中的README.md進行學習。
得到其中存在/api
的目錄,嘗試訪問,發現無法訪問,那麼就再api目錄下再進行查找發現,掃不到東西了,那麼我們換個思路,是不是在這個目錄下就有我們需要的文件吶。
我們通過chrome插件Wappalyzer
知道該網站的編程語言是PHP。
我們使用dirmap的fuzz模式,掃描api目錄下的.php
文件。
python dirmap.py -i http://docker.hackthebox.eu:31822/api/\{dir\}.php -lcf
訪問action.php。
提示沒有設置屬性值,那麼現在要猜解傳遞的屬性名,我們通過wfuzz
來猜解。
wfuzz --hh 24 -c -w /usr/share/wordlists/dirb/big.txt http://docker.hackthebox.eu:31891/api/action.php?FUZZ
參數解釋:
參數 | 解釋 |
---|---|
-c | 輸出帶顏色,好看 |
-w | 指定字典 |
–hh | 如下圖,wfuzz的輸出中有這幾項,–hh代表了chars這一列,後面設置的值爲當chars值爲該值時隱藏,這裏表示的就是chars爲24時隱藏。其他三者分別爲–hc(response)、–hl(lines)、–hw(word)。 |
這裏詳細解釋一下參數--hc/--hl/--hw--hh
。
參數 | 解釋 |
---|---|
–hc | 通過返回的狀態碼進行過濾 |
–hl | 通過返回的內容的行數 |
–hw | 通過返回的內容的字數 |
–hh | 通過返回的內容的字符數 |
我們這裏選擇字符是因爲,觀察直接訪問action.php
的返回,是一串字符,我們可以猜想當正確的屬性名被請求時,返回的字符的數量肯定是不同。
這裏的24是我們先運行一次不加–hh的參數的時候,發現chars這一列的值是24。
運行後得到結果。
然後訪問後,提示需要正確的ID值。
因此繼續通過wfuzz來進行猜測具體ID值。
wfuzz --hh 27 -c -z range,0-100 http://docker.hackthebox.eu:31891/api/action.php?reset=FUZZ
參數解釋:
參數 | 解釋 |
---|---|
-z | 設置payload的類型,這裏是設置一個隊列,範圍在0-100。 |
最後得到正確的值爲20。
通過網站正常請求後,得到最後的flag。
總結
在這次的實驗中,因爲中間選擇字典的問題,wfuzz一直沒有爆破出正確的參數名,在仔細看了別人的wp之後,才發現自己用的和別人的不一樣,但是這裏就又有了一個新的問題,在進行這些敏感目錄、敏感文件、參數猜測的爆破時候,選擇字典的依據是什麼,什麼情況下選擇怎樣的字典,這個問題需要弄清楚。
然後貼上兩個github上的字典:
fuzzdb
seclists