- 技巧 1: JS 在漏洞挖掘中的重要地位
- 技巧 2: 瀏覽器控制台使用技巧和方式
- 技巧 3: JS 斷點技巧以及 Hook 注入
- 技巧 4: Python 和 JS 結合解決加密難題
- 實戰 1: 實戰 MD5 加密逆向加密參數還原
- 技巧 5: 常見 FUZZ 姿勢和工具以及字典
- 技巧 6: 未知目錄,信息泄露,備份文件等漏洞中的 FUZZ
- 技巧 7: 弱口令,隱藏變量,未知參數中的 FUZZ 騷姿勢
- 技巧 8: SQL,XSS,SSRF,CSRF 等漏洞中的 FUZZ 技巧
- 實戰 2: 實戰 FUZZ 滲透到遠程 RCE 漏洞控制電腦 (百分之 80 的 src 會用到)
技術一、JS 加密參數逆向以及利用#
1.1 技巧一、JS 在漏洞挖掘中的重要地位#
1.1.1 JavaScript#
JS:javascript 是 web 頁面的腳本語言,主要用來向 HTML 頁面添加交互行為,有以下幾個作用:
- 嵌入動態文本於 HTML 頁面;
- 對瀏覽器事件作出響應;
- 讀寫 HTML 元素;
- 在數據被提交到伺服器之前驗證數據;
- 檢測訪客的瀏覽器信息。
1.1.2 HTML、JS、CSS 區別#
- HTML:毛坯房
- CSS:裝修
- JS:讓家動起來,增加了智能家居
1.1.3 JS 在漏洞挖掘中的重要地位#
- JS 中存在插件名字,根據插件找到相應的漏洞直接利用
- JS 中存在一些 URL 鏈接,根據 URL 找到相應的頁面進一步測試和利用
- JS 中存在一個子域名,可以直接訪問子域名
- JS 中的一些註釋可能洩露賬戶密碼或者其他的
1.1.4 Jsfind#
使用 JsFind 查找 JS 中洩露的 url 鏈接和域名(京東)
python jsfind.py -u "http://www.jd.com"
1.2 技巧二、瀏覽器控制台使用技巧和方式#
網絡是對整個網絡請求發起的一個監控,可以監控流量。
- 禁用緩存:如果打上勾,每次都會從瀏覽器獲取數據。在滲透測試、漏洞挖掘的過程中需要打開。
- 調試器 (源代碼):將網站的 js 代碼存儲起來
- 點擊右下角
{}
可以格式化 - 可以進行斷點挑食
- 點擊右下角
- 控制台:可以對 js 中的函數進行一些操作
1.3 技巧三、JS 斷點技巧以及 Hook 注入#
Hook:使用 python 進行爬蟲、滲透,繞過圖片驗證碼需要使用到
1.3.1 JS 斷點調試#
JS 打斷點,打到斷點處就不運行了,選擇單步步入就行。
1.3.2 怎麼找斷點#
按照關鍵字在調試器中全局搜索,跳轉到需要的位置,在 js 行點一下,變成藍色即可。
注意:MD5 函數可以自定義,在破解密碼的時候,需要找到真正使用的 MD5 的函數
1.4 技巧四、python 結合 JS 解決加密難題#
-
JS 代碼 test.js
# js 加密函數 function encryptByDES(message) { var encrypted = message; encrypted = encrypted + "asdfdsaf"; return encrypted; }
-
通過 python 調用 js 文件中的的函數
# 安裝execjs pip install pyexecjs # pyexecjs 已於2018年停止維護,目前可以使用js2py代替 import execjs with open('test.js', 'r') as f: a = execjs.compile(f.read()) # 調用 test.js 文件中的 encryptByDES 函數,且傳入的參數是 password result1 = a.call('encryptByDES', 'password') print(result1)
1.5 實戰、MD5 加密逆向加密參數還原#
-
使用 bp 攔截,獲取信息
-
在瀏覽器控制台中根據關鍵詞
password
搜索,找出對password
進行處理的js
函數; -
使用
python
代碼調用js
中的處理password
的函數,並根據錯誤提示補全function
和其餘的參數; -
對比經過
python
跑出來的值和bp
攔截得到的值,看是否相同; -
如果相同,則可以使用
python
對密碼字典進行處理,然後再使用bp
進行暴力破解。
技術二、FUZZ 的精美藝術,產出直線提升(技術)#
技巧五、常見 FUZZ 姿勢和工具及字典(技巧)#
2.1.1 FUZZ
模糊測試#
FUZZ:作為名詞時譯為 “絨毛;模糊;細毛;警員”
核心思想:只知道一部分條件的情況下,需要進行一個很模糊的測試,使用不同的東西進行不斷的測試,直到得到一個想要結果。
例如:支付寶大額轉賬,需要填寫部分信息。
2.1.2 都可以在哪些地方用到fuzz
的技巧呢?#
- 破解密碼的時候
- 掃描目錄的時候
- 掃描參數的時候
- 測試漏洞的時候
- 過 WAF 的時候
- 看到的任何參數,其實都可以使用
FUZZ
去測試 - 。。。。很多很多,每個地方都可以
fuzz
FUZZ
用得好,漏洞少不了
目錄掃描,暴力破解的核心思想就是FUZZ
,很多時候,工具搞不定的問題,可以手動FUZZ
一下,會有意想不到的結果。
2.1.3 優秀的 FUZZ 案例#
2.1.3.1 參數FUZZ
實戰漏洞#
-
在某
src
漏洞挖掘過程中發現了一個有趣的文件http://36...*/upload_image.php
,訪問的時候內容為空白 -
對於這種頁面,毫無疑問,要對參數進行
FUZZ
對其參數進行FUZZ
,發現了一個參數字段為do
- 發現了
http://360...*/upload_image.php?do
可以用
- 發現了
-
然後對
do
這個參數進行FUZZ
,然後bp
一下 -
構造出了
http://xxxxx/image_upload.php?do=upload
,並對其進行訪問,成功出現上傳表單,得到如下界面。 -
上傳文件後
FUZZ
上傳路徑http://36.*.*.*/uppload -------> 403 繼續fuzz http://36.*.*.*/upload/images ------->403 。。。。 發現文件路徑,構造url http://36.*.*.*/upload/images/skr_anti.php
-
然後使用遠控工具連上對方伺服器
2.1.3.2 FUZZ 隱藏參數和字段#
-
對目錄掃描發現如下的文件
-
對其文件進行定位
-
構造目錄訪問
將提示中的信息構造到url中進行訪問 http://....../start/face_xxx 訪問接口,提示Method Not Allow,405錯誤,那麼顯然,我們得換POST傳參
-
POST
隨便傳個參數過去,發現接口提示Request error, content-type was unsupported
-
繼續
FUZZ
content-type head -
FUZZ
出來application/json
的content-type
頭可用,那麼簡單了,構造JSON
繼續FUZZ
JSON
數據參數 -
利用本處
SSRF
完全可以批量對內網Redis
進行密碼噴灑 + 反彈shell
對邊界進行突破
2.1.3.3 JS 和 FUZZ 的結合#
-
訪問一個登錄頁面
-
設置賬號密碼開始暴力破解密碼
-
測試出來的賬號密碼登錄沒有任何的反應,登錄頁面也只是登錄頁面
-
不可能放棄的繼續
FUZZ
目錄,發現存在/JS/目錄
,開始對裡面的東西進行FUZZ
-
根據發現的鏈接,構造
url
並訪問,發現了新的頁面發現此處有一個
logout
,根本沒有登錄過的地方,怎麼會有?於是推測出,底下的賬號密碼顯示的是剛才爆破的,但是發現好像沒有什麼用處。 -
接著發現
JS
的文件,發現如下規律 -
接著
FUZZ
域名,發現了一個會展頁面 -
接著使用
bp
抓包,修改返回數據,登錄成功。 -
成功訪問站點
技巧六、未知目錄,信息泄露,備份文件等漏洞中的 FUZZ(技巧)#
2.2.1 未知目錄#
- 分別逐級
FUZZ
網站的目錄與文件; - 根據
FUZZ
出來的路徑,分別FUZZ
參數和路徑; - 循環反復的進行
FUZZ
,直到得到你想要的結果。
技巧七、隱藏變量,未知參數中的FUZZ
騷姿勢#
- 根據得到的
url
進行初始目錄和參數FUZZ
; - 然後根據
FUZZ
結果進行大膽的預測,並根據預測進行FUZZ
; - 根據上一步得到的結果,構造新的
URL
,進行訪問,並再次FUZZ
; - 循環上述的操作,直到得到你想要的結果;
- 注意:重點是耐心、細心、大膽預測,並根據逐步的擴大字典的數量。
技巧八、SQL,XSS,SSRF,CSRF 等漏洞中的 FUZZ 技巧#
靶場:phpStudy/PHPTurorial/www/pikaqiu/pikachu
在實際的滲透測試過程中,需要過 WAF,就可以使用FUZZ
對內容進行過濾,只需要將所有的內容使用bp
導入進行測試,在結果中就可以找出哪些東西是沒有被WAF
過濾的。
2.4.1 案例:挖掘pikaqiu
靶場的sql
注入漏洞#
-
哪些參數可以
FUZZ
可以
FUZZ
的參數:GET
行中的參數Cookie
行中的參數- 其他的參數
-
使用
bp
,導入字典進行FUZZ
-
根據
bp
得出的結果,構造URL
進行訪問,獲得想要的結果
實戰二、實戰 FUZZ 滲透到遠程 RCE 漏洞控制電腦#
-
使用瀏覽器訪問指定的地址,並打開瀏覽器控制台
紅色框中就是網站的目錄文件以及
JS
文件,查看目錄和文件中是否有我們需要的信息。 -
如果沒有,可以
FUZZ
JS
目錄(通常情況下,有JS
目錄,可以先FUZZ
JS
目錄)-
構造完整是
JS
URL
; -
使用
bp
進行攔截; -
導入字典,進行攻擊;
-
根據
bp
攻擊的結果進行二次分析,如果沒有想要的信息,可以繼續進行二級FUZZ
,並重複上面的步驟; -
分析
bp
結果,構造URL
,進行訪問,得出結果。 -
bp
結果展示
-
-
如果
FUZZ
JS
目錄沒有得到結果,就使用上述步驟,繼續FUZZ
其他目錄。 -
注意:在
FUZZ
過程中,可能需要對不同的參數,不同的目錄,不同的content-type
等反復進行FUZZ
,需要注意細心查看每次bp
得出的結果。 -
最終的結果:獲得網站的
getshell
權限,在得到可上傳的的URL
之後,修改bp
中的請求數據,傳入木馬(例如:一句話木馬),發送到對應的URL
,然後在瀏覽器中進行訪問,最終得到結果。<?php system("whoami") ?>
<?php phpinfo(); ?>