什麼是SSRF 一個對外的Web介面,改介面能讓用戶控制curl命令,去訪問別的web服務。 簡圖如下 想象一下當用戶請求的 改成 ,是不是覺得原本不可能訪問到內網的主機,現在就很容易就能做到了。 原理 PHP代碼演示: 1.查看代碼的時候檢查是否使用curl_setopt( )函數; 2.在看傳入 ...
什麼是SSRF
一個對外的Web介面,改介面能讓用戶控制curl命令,去訪問別的web服務。
簡圖如下
想象一下當用戶請求的baidu.com/x.php?image=google.com/1.jpg
改成 baidu.com/x.php?image=private.com/php.info
,是不是覺得原本不可能訪問到內網的主機,現在就很容易就能做到了。
原理
PHP代碼演示:
$url = $_GET['URL'];
curl($url);
function curl($url){
$ch = curl_init(); // 初始化curl會話對象
curl_setopt($ch,CURLOPT_URL,$url); // 抓取URL並把它傳遞給瀏覽器
curl_setopt($ch,CURLOPT_HEADER,0);
curl_exec($ch); // 執行請求
curl_close($ch);
}
1.查看代碼的時候檢查是否使用curl_setopt( )函數;
2.在看傳入的url是否是來自外部;
防護
跳轉的url參數只能是白名單裡面的url。