LCTF的一道SSRF

http://211.159.161.162/test.php

訪問是這個頁面

image.png

點擊后是這個頁面

image.png

對比發現后端邏輯應該是用curl處理

image.png

burp抓包發現,訪問百度的請求,并不是我這邊發出的,而是服務器發出的,大致判斷是SSRF

發現訪問 http://www.baidu.com 會自動加個斜杠 http://www.baidu.com/

后端做了限制,只能訪問域名是www.baidu.com的網站,
比如 https://www.baidu.com/more 然后會給你加個斜杠
構成 https://www.baidu.com/more/
類似 tieba.baidu.com map.baidu.com 這些域名都不行

剛開始的想法是構造 http://www.baidu.com/?link=sjdasjgj 類似這種的跳轉,然后跳轉到自己的服務器上面來,但是發現其不跳轉,比如我們復制一段百度爬蟲的鏈接
https://www.baidu.com/link?url=UBtdgmahvMOeX4yf_6vv8oCle5kmFwjF6YdABHeW9Th3QBY6Sp40x72cILvk630_c-_eR5Jp9190FsIerGNF6_&wd=&eqid=a821b49200002fe5000000065a128af1
丟進去訪問發現,服務器并沒有跳轉。。。如下,記得url編碼

image.png

萬念俱灰,不知道怎么彈到自己的服務器上,一般SSRF都是彈到自己服務器上,然后調用302.php,實現內網漫游

直到我試出一個了報錯,才有了點方向


image.png

才知道后端是用parse_url()處理的,然后網上搜點paper

參考鏈接 http://love.ranshy.com/file%E5%8D%8F%E8%AE%AE%E5%8F%AF%E8%83%BD%E4%BC%9A%E5%BC%95%E5%8F%91%E7%9A%84%E6%BC%8F%E6%B4%9E/
利用parse_url()的缺陷,結合curl的 file:// 協議 進行本地文件讀取

大致原理如下


image.png

可以猜測后端是對host做了白名單,只能是 www.baidu.com, 這樣的好處是可以防止內網漫游,其實更安全的做法是對 schema也做一個白名單,限制curl 只能使用http和https協議

再給一張圖詳細了解一下 parse_url()

image.png

攻擊方式

image.png

竟然沒成功。。。。

image.png

突然想起后端邏輯會自動給我拼接個斜杠,于是我加個#

image.png

還是沒成功,比賽的時候我就做到這里,賽后問了大佬才知道,#要用url編碼,才能傳到后端,后端解碼后才會被被當成喵,注釋掉斜杠,直接傳#是會拼接成 /etc/passwd#/ 整體作為一個path

頓時,淚奔

image.png

image.png

最后我讀了源碼


image.png
<?php if(!$_GET['site']){ echo <<<EOF <html> <body> look source code: <form action='' method='GET'> <input type='submit' name='submit' /> <input type='text' name='site' style="width:1000px" value="https://www.baidu.com"/> </form> </body> </html> EOF; die(); } 
$url = $_GET['site']; $url_schema = parse_url($url); 
$host = $url_schema['host']; 
$request_url = $url."/";
if ($host !== 'www.baidu.com'){ die("wrong site"); } 
$ci = curl_init(); 
curl_setopt($ci, CURLOPT_URL, $request_url); 
curl_setopt($ci, CURLOPT_RETURNTRANSFER, 1); 
$res = curl_exec($ci); 
curl_close($ci); 
if($res){ echo "<h1>Source Code:</h1>"; echo $request_url; echo "<hr />"; echo htmlentities($res); }
else{ echo "get source failed"; } ?> 

走過路過,歡迎糾錯

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容