安全矩阵

 找回密码
 立即注册
搜索
查看: 6223|回复: 0

剖析xmlDecoder反序列化

[复制链接]

991

主题

1063

帖子

4315

积分

论坛元老

Rank: 8Rank: 8

积分
4315
发表于 2020-12-18 17:15:46 | 显示全部楼层 |阅读模式
原文链接:剖析xmlDecoder反序列化


一直想写个代码审计的文章,和大腿们交流下思路,正好翻xxe的时候看到一个jdk自带的xmlDecoder反序列化,很具有代表性,就来写一下,顺带翻一下源码。
为什么选这个呢,因为ta让weblogic栽了俩跟头,其他都是手写了几个洞,被人发现了,weblogic是调用的东西存在一些问题,有苦没处说啊,下面剖析下xmlDecoder是怎么反序列化的。

前期准备
这次使用的是idea来调试代码,下面是用到一些快捷键:
Idea中用到的debug快捷键:
F7 进入到代码,
Alt+shift+F7 强制进入代码
Atl+F9 执行跳到下一个断点处
F8 下一步
代码中有提到invoke(class, method)方法:
拿例子说话:
methodName.invoke(owner,args)
其中owner为某个对象,methodName为需要执行的方法名称,Object[]  args执行方法参数列表。
楼主使用的jdk版本:
1.8.0_151

敲黑板开始了
先整一个完整的xml文件,注意箭头的地方,后面会是个小坑。

使用java代码解析xml文件。

重点在Object s2 = xd.readObject();这行代码,打断点跟一下源码。
Debug模式启动:

进入方法,是个三目运算:

进入方法:
注:从这里开始,可以进行打断点,第一次跟不对的时候,下次再debug的时间alt+f9快速跳到断点处。

打个断点,进入方法:


SAXParserImpl中有一些配置,其中的xmlReader是前面已经设置过了,是接口对象new的实现类,我们看的是实现类,这里有idea可以自动进行跳入对应的实现类的方法。

父类:
注:Super:调用父类的写法,有super的类必定继承(extend)了其他类。

进入父类:

跟进:

继续跟进,跳到XML11Configuration的parse()方法:

一些配置:

F7继续跟进:会进入本类的parse方法。


进入XMLDocumentFragmentScannerImpl后,会看到有方法中进行了do{}while{}方法,其中的next方法是重点。

跟进,跳到XMLDocumentScannerImpl的next():

进入next()方法:
在do{}while{}里循环多次。

注:下面的显示台有变量的值,可以看到代码中变量值的变化。

继续跟进:

可以看到解析xml文件的时候有解析到calc字符,继续跟进。



ProcessBuilder这个类在xml文件中有申明,然后到了invoke,成功执行命令。
这一块代码建议亲自跟一下,会跟到很底层的东西,楼主在这一块卡了好长时间。


这次是借助了idea进行了代码的跟踪,待到能手点方法跟踪代码的那天就是楼主神功大成之日!嘎嘎嘎~
记得好多开发大牛说过,想进步,多看看jdk源码,看懂ta,打遍天下无敌手!(后面一句我吹的)
代码审计的时候不一定能搭的起环境来,基本功还是很重要的,看jdk源码就是一个很好的练习的方法。
用jdk自带的洞来练习代码审计的好处就是,可以使用idea帮助寻找跳转方法,不会有跟不下去的时候,门槛会降低很多;再有cms会有很多奇奇怪怪的写法,出现了洞的话最后还是一些基本的写法,楼主建议还是从基础的洞来入手,没有那么高的复杂度。

编辑利用程序
写一个方法,将xml文件拼接起来,还记得开头提到的小坑么
注:楼主最喜欢这种洞了,就像网站本身就给开了个后门一样。

Main方法调用,试试ping命令。


将方法中的代码放在jsp文件中,就可以接收请求参数了,楼主已经在用了,各位大佬可以定制下。

更近一步
数据不回显?
  • dnslog外带,这里有个坑,能带的字符串长度有限制,中间不能有特殊符号,可以在命令中对数据进行加密切割,分段传输。
    防御方法:对doslog进行域名加黑,在攻击者探测阶段就失败。
    绕过:自建dns。
  • 在服务器开启nc监听,在目标服务器访问nc服务器的端口,进行nc通信,将信息外带出来。
    防御方法:在服务器监听新开启的通信。
  • 复写父类方法,使执行有输出(有难度)。


参考以上方法和冰蝎的方法可以编写定制化一个webshell工具。

结尾
想想类似的洞?嘿嘿嘿~


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-9-20 17:42 , Processed in 0.014118 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表