代码审计-Java项目-反序列化漏洞

admin 2024年6月8日22:22:44评论34 views字数 1636阅读5分27秒阅读模式

java序列化和反序列化的概念:

序列化:把Java对象转换为字节流的过程。

反序列化:把字节流恢复为Java对象的过程。

序列化函数接口:

Java:Serializable Externalizable接口、fastjson、jackson、gson、ObjectInputStream.read、

ObjectObjectInputStream.readUnshared、XMLDecoder.read、ObjectYaml.loadXStream.fromXML、

ObjectMapper.readValue、JSON.parseObject等

PHP:serialize()、 unserialize() 

Python:pickle

java序列化特征:

1、java序列化功能特性

反序列化操作一般应用在导入模板文件、网络通信、数据传输、日志格式化存储、对象数据落磁盘、或DB存储等业务场景。因此审计过程中重点关注这些功能板块。

2、java序列化数据特性

一段数据以rO0AB开头,你基本可以确定这串就是JAVA序列化base64加密的数据。

或者如果以aced开头,那么他就是这一段java序列化的16进制。

3、java反序列化使用场景

http参数,cookie,sesion,存储方式可能是base64(rO0),压缩后的base64,MII等

Servlets http,Sockets,Session管理器,包含的协议就包括:JMX,RMI,JMS,JND1等

xm lXstream,XmldEcoder等(http Body:Content-type: application/xml)

json(jackson,fastjson)http请求中包含

4、利用类别

引用库包调用反射(如:ysoserial),自身框架组件特性(如:Fastjson

5、利用工具

jndi,ysoserial,marshalsec,FastjsonExploit

5.1、框架组件

fastjson,shiro,jackson,CommonsCollections

6、挖掘思路

-原生态的关键函数搜索

-框架组件的引用查看获取

案例:Java项目-jspxcms-shiro框架反序列化漏洞

1.源码导入idea,搭建好环境

代码审计-Java项目-反序列化漏洞

2.idea查看依赖包发现使用了 Apache Shiro 并且版本小于 1.4.2,存在shiro-721漏洞

代码审计-Java项目-反序列化漏洞

3.根据网上的shiro-721漏洞利用方法,使用ysoserial工具-选择CommonsBeanutils1 利用链,

因为项目中引用了下图的三个库,符合CommonsBeanutils1 利用链

代码审计-Java项目-反序列化漏洞

4.ysoserial工具根目录启动cmd,输入:java -jar ysoserial.jar CommonsBeanutils1 "calc" > payload.class生成payload。意思:

调用ysoserial.jar和这个利用链CommonsBeanutils1"calc"这个就是要执行的命令,输入到payload.class文件里

代码审计-Java项目-反序列化漏洞

5.然后利用ShiroExp爆破出可以攻击的 rememberMe Cookiehttps://github.com/wuppp/shiro_rce_exp

填充rememberMe字段:登录网站时勾选--自动登录,即可在数据包cookie中生成。最后加上个payload.class文件,最终可获得加密的payload

输入:python2 shiro_exp.py 目标地址rememberMe字段payload.class

代码审计-Java项目-反序列化漏洞

6.注意:爆破时间较长(一小时左右),payload长度决定爆破速度快慢。

爆破成功,返回payload

代码审计-Java项目-反序列化漏洞

7.再次访问目标地址,使用burp抓包,修改cookierememberMe字段的值为刚刚生成的payload

发包成功执行命令——弹出计算器

代码审计-Java项目-反序列化漏洞

原文始发于微信公众号(小黑子安全):代码审计-Java项目-反序列化漏洞

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

发表评论

匿名网友 填写信息