欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

Burp Suite扩展之Java-Deserialization-Scanner

来源:本站整理 作者:佚名 时间:2017-08-10 TAG: 我要投稿

Java反序列化漏洞简介
Java序列化就是把对象转换成字节流,便于保存在内存、文件、数据库中,Java中的 ObjectOutputStream 类的writeObject()方法可以实现序列化。
Java反序列化即逆过程,由字节流还原成对象。ObjectInputStream类的readObject()方法用于反序列化。
因此要利用Java反序列化漏洞,需要在进行反序列化的地方传入攻击者的序列化代码。如果Java应用对用户输入,即不可信数据做了反序列化处理,那么攻击者可以通过构造恶意输入,让反序列化产生非预期的对象,非预期的对象在产生过程中就有可能带来任意代码执行。
下面结合一些demo介绍一款用于 检测和简单利用 java 反序列化漏洞的burpsuite 扩展: Java Deserialization Scanner。
插件安装
该插件可以在 burp Suite 的 BApp Store 中安装 , 安装好后需要配置 ysoserial(一款java反序列化漏洞payload生成器) 的路径。

你可以自己从github上下载源码,编译。或者使用我刚编译的: https://pan.baidu.com/s/1eSxPPQi   密码: nxv4. 放到 burpsuite.jar 同一目录,然后填上文件名即可(如上图所示)。
插件测试
插件作者很贴心,不仅写了个这么棒的插件,还附带了很多示例。我以 sampleCommonsCollections3 为例介绍该插件的使用。首先在 tomcat 中把 这个 war 包部署好。然后就可以在 webapps\sampleCommonsCollections3 下查看对应源码和他使用的库,该插件检测反序列化漏洞就是基于一些已知库中的gadget(依赖于  ysoserial),进行检测。进入 webapps\sampleCommonsCollections3 会看到

访问 http://localhost:8008/sampleCommonsCollections3/ 就可以看到 示例的首页了(端口根据自己的情况修改,我这是 8008)。

这些示例根据实际代码中对 传输序列化对象的各种方式进行了模拟(直接传输,hex编码传输,base64编码传输,gzip压缩传输,以及他们的一些组合)。插件也根据这些传输方案给出了对应的解决办法。
对未编码的序列化对象测试
先来看看 最简单 的 testRawBody.jsp
html>
head>
title>Java Deserialization Testing JSP Pagetitle>
head>
body bgcolor=white>
 
h1>Java Deserialization Testing JSP Pageh1>
p>This is the output of a JSP page that deserialize an object sent as POST body.p>
 
ObjectInputStream objectInputStream = new ObjectInputStream(request.getInputStream());
String deserializedString = (String)objectInputStream.readObject();
out.println("p>Deserialized string:p>");
out.println("p>" + deserializedString + "p>");
%>
 
body>
html>
直接对POST过来的数据进行了 反序列化, 下面看看它的库, 进入 WEB-INF\lib 目录,

存在 commons-collections-3.1.jar 这个库是有利用反序列化漏洞所需要的漏洞类的。下面用插件来试试。浏览器进入 sampleCommonsCollections3/ ,burpsuite抓包,点击第一个 Serialized Java Object in body (不编码直接发送序列化对象到服务端)。

然后右键把请求包发送到 插件中

设置好测试的位置

最下面的一排,表示选中的数据是以什么格式编码的, 倒数第2排的那个下拉框,选择判断漏洞是否存在使用的方式,有 DNS(依赖于burpsuite的Collaborator功能来获取响应), Sleep (如果有漏洞让服务器sleep 几秒钟), 还有 cpu模式。这里选择 Sleep模式,然后 点击 Attack (因为这里的序列化对象没有被编码),等一阵就有结果了。

可以看到,检测出 Apache Commons Collections 3  漏洞。然后右键,

在 Exploitation tab 在确认下,下面那个输入框下 输入  ysoserial 的参数, 这里检测出了  Apache Commons Collections 3 ,所以使用 CommonsCollections3 COMMAD 。如下图所示:

[1] [2]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载