目录
一、测试环境
1、系统环境
渗透机:本机(127.0.0.1)
靶 机:本机(127.0.0.1)
2、使用工具/软件
测试网址:http://127.0.0.1/pikachu/pikachu/vul/ssrf/ssrf_fgc.php
二、测试目的
实现ssrf攻击,包含百度,读取文件。
三、操作过程
1、实现ssrf攻击
点击连接可能会not found,原因是路径不对,更改一下即可
这个诗是直接包含链接进来的,可以理解为内部资源服务器的连接,而目标主机作为中间服务器,通过它访问到内部服务器
可以包含百度页面
http://127.0.0.1/pikachu/pikachu/vul/ssrf/ssrf_fgc.php?file=http://www.baidu.com
使用file协议,写了一个txt文件,成功包含文件内容
http://127.0.0.1/pikachu/pikachu/vul/ssrf/ssrf_fgc.php?file=file://E:/phpstudy/PHPTutorial/WWW/1.txt
四、源代码分析
php
<?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_fgc.php"){
$ACTIVE = array('','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','active open','','','active','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','');
}
$FILEDIR = $_SERVER['PHP_SELF'];
$RD = explode('/',$FILEDIR)[1];
$PIKA_ROOT_DIR = "../../";
include_once $PIKA_ROOT_DIR.'header.php';
//读取PHP文件的源码:php://filter/read=convert.base64-encode/resource=ssrf.php
//内网请求:http://x.x.x.x/xx.index
if(isset($_GET['file']) && $_GET['file'] !=null){
$filename = $_GET['file'];
$str = file_get_contents($filename);
echo $str;
}
?>
使用了file_get_contents()函数,没有对输入参数进行过滤,导致直接解析了http协议、file协议等。
五、结论
ssrf危害很大,可以直接影响到内网服务器的运行,信息泄露等。
引入外部参数时,一定对参数进行过滤。
这关介绍了另一个导致ssrf的php函数------file_get_contents()函数。