原理:
web应用提供提供了从其他服务器获取数据的功能。使用用户指定的url,web应用可以获取图片文件资源。对用户提供url和远端服务器返回的信息没有合适的验证或过滤,产生服务端请求伪造。
原理图:
危害:
1.进行内网的端口扫描
2.对内网web应用识别指纹
3.攻击内网web应用
4.读取文件
防御:
1.限制协议:仅限http,https
2.限制IP:避免应用被用过来获取内网数据,攻击内网
3.限制端口:限制请求的端口为http常用端口
4.过滤返回信息
5.统一错误信息:避免用户可以根据错误信息来判断远端服务器端口状态
相关函数:
file_get_contents()
fsockopen()
curl_exec()
漏洞利用:
源码:curl支持协议:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE以及LDAP
<?php
$SELF_PAGE = substr($_SERVER['PHP_SELF'],strrpos($_SERVER['PHP_SELF'],'/')+1);
if ($SELF_PAGE = "ssrf_curl.php"){
$ACTIVE = array('','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','active open','','active','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','');
}
$FILEDIR = $_SERVER['PHP_SELF'];
$RD = explode('/',$FILEDIR)[1];
$PIKA_ROOT_DIR = "../../";
include_once $PIKA_ROOT_DIR.'header.php';
if(isset($_GET['url']) && $_GET['url'] != null){
$URL = $_GET['url'];
$CH = curl_init($URL);
curl_setopt($CH, CURLOPT_HEADER, FALSE);
curl_setopt($CH, CURLOPT_SSL_VERIFYPEER, FALSE);
$RES = curl_exec($CH);
curl_close($CH) ;
echo $RES;
}
?>
主机端口扫描
读取本地文件:
web应用指纹:
访问内网:
设置策略:apache/conf/httpd.conf
限外网主机访问
绕过方法:
1.@符号:http://[email protected]
2.IP地址十进制,八进制转换
3.短网址转换
4.xip.io
5.js跳转