Pikachu靶場SSRF學習

  • 2021 年 12 月 27 日
  • 筆記

下載Pikachu靶場://github.com/zhuifengshaonianhanlu/pikachu

Windows用phpstudy也行,記得要改config.inc文件

 

 打開SSRF靶場

如概述所說

SSRF(Server-Side Request Forgery:伺服器端請求偽造)
其形成的原因大都是由於服務端提供了從其他伺服器應用獲取數據的功能,但又沒有對目標地址做嚴格過濾與限制

導致攻擊者可以傳入任意的地址來讓後端伺服器對其發起請求,並返回對該目標地址請求的數據

數據流:攻擊者----->伺服器---->目標地址

根據後台使用的函數的不同,對應的影響和利用方法又有不一樣
PHP中下面函數的使用不當會導致SSRF:
file_get_contents()
fsockopen()
curl_exec()
            

如果一定要通過後台伺服器遠程去對用戶指定("或者預埋在前端的請求")的地址進行資源請求,則請做好目標地址的過濾。

你可以根據"SSRF"裡面的項目來搞懂問題的原因

關於SSRF可以嘗試的payload:

php偽協議:
php://filter/read=convert.base64-encode/resource=file
文件讀取:
file://x://路徑
url訪問:
http://url/filename
curl的getshell利用:
查看 curl 支援的協議列表 curl-config -protocols

使用 curl 讀取文件 curl -v file://etc/passwd
使用 ftp 協議 curl -v 「ftp://127.0.0.1:6666/info」
使用 dict 協議 curl -v 「dict://127.0.0.1:6666/info」
使用 gopher 協議 curl -v 「gopher://127.0.0.1:6666/_info」

首先,進行dict來探測埠開放情況及服務

本機:

 

 ssrf處

 

 

通過file:來讀取指定的文件

Windows:file://C://test.txt

Linux:file:///etc/pwd

 

讀取成功

 

 其次還有

tftp --對應--》udp  ftp傳輸 協議:nc -lvup 1234

sftp--對應--》ssh文件傳輸協議:nc -lvp 1234

(環境原因暫無復現成功)

下一步:

通過SSRF從Redis Getshell

 

 

參考鏈接:

Tags: