一、題目源碼
<?php highlight_file(__file__); function curl($url){ ?$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_HEADER, 0);echo curl_exec($ch);curl_close($ch); }if(isset($_GET['url'])){$url = $_GET['url'];if(preg_match('/file\:\/\/|dict\:\/\/|\.\.\/|127.0.0.1|localhost/is', $url,$match)){die('No, No, No!');}curl($url); } if(isset($_GET['info'])){phpinfo(); } ?>
二、測試ssrf
我們使用端口訪問文件,可以看到有一個過濾條件,它限制了file,dict協議,127.0.0.1和localhost 也不能用,其實就是不想你探測內網端口,也不能讀取內網服務文件。
但是!它可以通過phpinfo了條件,
給info隨便賦一個值,出來了php界面,可以觀察到hostname主機和端口,而172.21.0.3是可以繞過127.0.0.1這個條件,我們可以在這個地址上測試,不斷的改變端口值,端口不一樣,出來的值也會有所區別
當端口為6379的時候,沒有任何區別
由于太多我們使用burpsuite去檢測端口
只開放了一個80端口,也沒有數據庫
/search?url=http://172.17.0.1 # 無存活
/search?url=http://172.17.0.2 # 發現另一存活機器
這三臺第一臺就一個apache服務第三臺是本機,那多半我們只能從第二臺入手
我們可以使用我們的一個工具進行滲透,這個工具叫Gopherusr在github上面是開源的