靶场搭建
1、启动PHPstudy内置mysql服务
2、修改root密码为123456
3、创建数据库javasec,导入SQL执行
4、运行如下命令
java -jar javasec-0.0.1-SNAPSHOT.jar
服务默认端口为 8000
java版本我们需要使用
不大于 java 8 内核为100
对于这样的jar文件我们其实是可以进行反编译然后看源码的 当然有骚操作 : 就是改后缀为 .zip
然后解压使用IDEA打开即可
源码文件所在地址
这有个信息就是 这个mapper 说明当前的数据库是mybatis数据库框架
原生类的反序列化
第一个就是readObject
分析一下代码
这个点说明当前的数据是进行base64加密的
那这个官方的链哪里来的呢 ?
这个就是需要我们使用java反序列化链的生成工具
java链利用工具
第一个就是yakit自带的
我们先使用dnslog生成一个域名 用来测试是否有反序列化漏洞 这个漏洞我们可以使用DNSURL链进行测试
测试发现上面的链丢失
然后本地的链这个 cb1.8是存在的 这个java链的使用主要看对方的环境有没有相应的
复制到
分析是有dns漏洞的所有就制造一个RCE
第二个工具 java-chains
基本使用:
生成java利用链:
先选择
修改参数内容的是第二个选项
生成JNDI 恶意协议地址
先选择这个选项然后把ip配置上点击启动
在这修改执行的命令
第二类是xmldecode
xml str自带的提取方法 :
xmlDecoder.readObject
第三类就是yaml类型的数据
这个就是需要配合JNDI注入
JNDI链的生成也是可以使用 java-chain进行生成的
如果报错
这样说明你的java版本过高了
成功会回显
第三方组件导致的反序列化
1、FastJson 这些组件的安全问题一般都是CVE
使用工具进行生成一个 rmi协议的恶意命令执行的地址
白盒 :
利用代码 JSON.parseObject(对象) 或者是使用 parse(JSon数据) 这样进行操作
2、Jackson组件
白盒测试代码 readValue(对象)
Shiro 反序列化
先进行判断Shiro组件的使用一般就是remberMe这个功能的单独http头
但是这个怎么没有呢
有的会出现在负载这个地方
签证问题就是设计到 shiro的key 什么是key啊 这个就是记住我功能进行身份签证的一个证明 这个key是一个用户特有的
这个key一般是取自数据库和用户绑定的内容
工具利用:
先检测框架然后再检测利用的反序列化链
分析之后就能使用链进行命令执行等操作