今天看到一段代碼欧宜,如下,主要是使用curl發(fā)起網(wǎng)絡(luò)請(qǐng)求然后返回客戶端拴魄,這里我請(qǐng)求加載圖片冗茸。
<?php
$URL = $_GET['URL'];
$info = parse_url($URL);
if($info['host'] != '192.168.224.130')
{
echo '目標(biāo)網(wǎng)址不合法';
exit;
}
$CH = curl_init();
curl_setopt($CH, CURLOPT_URL, $URL);
curl_setopt($CH, CURLOPT_HEADER, false);
curl_setopt($CH, CURLOPT_RETURNTRANSFER, true);
curl_setopt($CH, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($CH, CURLOPT_FOLLOWLOCATION, true);// 允許302跳轉(zhuǎn),默認(rèn)不開(kāi)啟
$RES = curl_exec($CH);
header('CONTENT-TYPE: IMAGE/PNG');// 設(shè)置CONTENT-TYPE
curl_close($CH) ;
echo $RES;
?>
首先,這里parse_url只是負(fù)責(zé)字符串解析匹中,并不判斷協(xié)議真?zhèn)蜗氖缫韵吕印?/p>
<?php
$url = 'abc://www.baidu.com/test';
$info = parse_url($url);
var_dump($info);
?>
執(zhí)行后結(jié)果如下:
array(3) {
["scheme"]=>
string(3) "abc"
["host"]=>
string(13) "www.baidu.com"
["path"]=>
string(5) "/test"
}
其次,curl支持file偽協(xié)議顶捷,利用file偽協(xié)議可以獲取本地文件系統(tǒng)直接上攻擊測(cè)試?yán)樱?/p>
http://192.168.224.130/1.php?URL=file://192.168.224.130/etc/passwd
php curl識(shí)別出來(lái)這是個(gè)file協(xié)議挂绰,他會(huì)忽略192.168.224.130,而是直接讀取文件/etc/passwd。
reference:
1.https://love.ranshy.com/file協(xié)議可能會(huì)引發(fā)的漏洞
2.https://zhuanlan.zhihu.com/p/27898202
3.http://vinc.top/2016/11/22/【ssrf】繞過(guò)姿勢(shì)總結(jié)/
4.http://www.cnblogs.com/LittleHann/p/3665062.html