栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java安全(十六) 一些题目之ljcrt

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java安全(十六) 一些题目之ljcrt

前言

师傅出的题真的很好,学到了什么叫“灵活处理”,以及在学习别人文章的时候要多思考(其实我是想到了能不能用反射的方法修改下值,但是一看见 new 了一个对象就觉得不行了,怎么没想到“修改源码”的方法呢)

回顾一下上篇文章的内容:

new 了一个 ReferenceIndirector 的对象,序列化的是该对象 indirectFrom 方法返回的对象:

所以之前说只有 var2 可控,但我们是不是忘了什么?

熟悉 PHP 反序列化的朋友知道序列化的数据其实重要的部分就是“属性值”,在 java 里应该就是师傅所说的修改字节码,我们可以不这么麻烦,完全可以仅修改 writeobject 方法就可以了。可以修改 C3P0 源码再重新生成 jar 包自己用(不太优雅,想想以前魔改 yso 也是这样的),然后就是师傅所说的利用 java agent 技术,算一次很好的再次实战,不了解的可以看看之前的文章:https://blog.csdn.net/WDWAGAAFGAGDADSA/article/details/122270281

复现

可以自己复制下师傅的 payload 生成 jar,也可以就用师傅的 jar 包

因为在 buu 上复现,所以稍微改一下:

然后点 project-structure -> artifacts -> add jar -> from moudule

可以把师傅原来里面的

提取出来添加到依赖中,再修改一下MANIFEST.MF文件即可

我就采用preagent的方法了,将方法修改为

运行时加上参数即可:

在pre和agentmain方法踩了许多坑(www):比如为什么pre在添加method方法体时一直报运行时错误,动态加载时一直是初始化失败,本人不才,解决不了,只有修改源代码这一条路了

把mchange-commons源代码下载后用IDEA打开,添加三个依赖,编译成jar包,注意java版本,不然可能会有奇奇怪怪的错误,然后把它添加到原项目中

然后记录一下一些命令

虽然最后还是没有复现成功,但学到了很多经验

打算后来学习一下JNDIExploit这工具的写法,因为复现不成功总是因为搭建恶意RMIServer没有反应(做题已经遇见好几次了)

还有个点是不论是agent方法还是修改源代码,应该都需要绕过一下ldap字符串的检测

参考

https://firebasky.github.io/2022/06/04/ljctr-wp/

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1021631.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号