01 判斷SSRF是否存在
1. 通路http://www.badu.com網站。
2. dnslog平台收到回顯,存在ssrf。
3. 嘗試讀取檔案/etc/passwd,并傳回内容,可以判斷出是回顯型ssrf。
4. 讀取/etc/hosts檔案,目前機器ip是172.72.23.21。
5. 嘗試讀取/etc/shadow 和/root/.bash_histor,發現無權限。
02 探測内網存活主機服務
使用dict協定對内網主機進行存活探測。
03 172.72.23.22—代碼注入
1. 利用ssrf通路内網http://172.72.23.22,提示CodeExec。
2. 使用burp的Intruder子產品對網站進行目錄爆破,存在phpinfo.php和shell.php。注意:此處需要去除特殊字元編碼。
3. 檢視shell.php,可以直接穿參執行系統指令檢視flag。
04 172.72.23.23—sql注入
通路http://172.72.23.23,提示是get型sql注入。
05 172.72.23.24—指令執行
1. 通路http://172.72.23.24,網站是一個網絡測試功能接口。一般來說,這種會存在指令執行漏洞。但是系統也可能會過濾一些特殊字元,需要我們進行繞過。
2. 這裡是post請求,需要利用gopher協定發送post請求。此處要求必須有4個參數為必要參數,用于傳遞Content-Type,Content-Length,host,post的參數。如果有多個參數,則參數之間的&也需要進行URL編碼。
3. 将資料包進行兩次url編碼。
4. 利用gopher協定發送post請求,成功執行指令。
5. 執行指令檢視flag,這裡提示flag在/tmp目錄,但是檢視後發現flag并不存在此處。
06 172.72.23.25—xml
1. 通路http://172.72.23.24,跳轉一個登入界面。
2. 成功讀取檔案。
3. 此處測試指令執行,結果顯示無法執行。
07 172.72.23.26—Tomcat
1. 通路http://172.72.23.26:8080,位址是一個Tomcatyang li界面。構造PUT請求包,将資料包進行二次url編碼。
2. 使用gopher協定發送請求,響應包傳回201說明寫入成功。
3. 利用ssrf,直接通路shell檔案執行指令即可。
08 172.72.23.27—Redis
1. 172.72.23.27機器開放了6379端口,測試存在未授權,redis版本為5.0.5。
2. redis的shell一般可以用寫入計劃任務(Centos)、寫入公鑰、寫webshell(知道網站實體路徑)。因為這台機器沒有開放web服務,可以先嘗試寫入計劃任務。
3. 使用腳本。
4. 成功反彈shell。
5. 或者手工輸入。
09 172.72.23.28—Redis
1. 前面通過探測服務,得知這台機器已開放80和6379端口。
2. 使用dict協定通路6379端口的服務,redis需要驗證密碼。如果在内網redis需要認證的情況下,我們可以使用dict或gopher協定對密碼進行爆破。
3. 通路80端口存在檔案包含,這裡可以嘗試讀取redis的配置檔案來擷取密碼。
4. 成功讀取redis的密碼。
5. 使用dict協定進行認證,可以确定讀取的密碼是正确的。
6. 使用Gopherus生成payload。
7. 将gopher://127.0.0.1:6379/_後面的payload進行url解碼後,在上方添加驗證密碼并增加換行,然後進行兩次url編碼。
8. 發送資料包。
9.通路http://172.72.23.28/shell.php,成功執行指令。
10. 此外,大家也可以寫入計劃任務,方法和寫shell一樣——利用gophers生成腳本,進行url解碼,并添加auth後,再進行兩次url編碼即可。