PHPsploit: Post-Explotación en Kali
PHPsploit: Post-Explotación en Kali
PHPsploit es una herramienta de post-explotación diseñada para mantener el control sobre un servidor web después de haber logrado subir un "web shell". A diferencia de un shell simple, PHPsploit crea un túnel de comunicación sigiloso y ofrece una interfaz similar a una terminal de Linux para gestionar el objetivo.
Aquí tienes una guía esencial sobre cómo funciona y cómo usarlo en Kali Linux.
1. Instalación en Kali Linux
PHPsploit no siempre viene preinstalado, pero puedes obtenerlo fácilmente desde su repositorio oficial.
sudo apt install phpsploit
# Ejecutar la herramienta
phpsploit
2. Funcionamiento de PHPsploit
El flujo de trabajo se divide en dos partes: el Server-Side (el archivo que subes a la víctima) y el Client-Side (tu consola en Kali).
Paso A: Generar el Payload
Para que PHPsploit se conecte, necesitas subir un archivo PHP específico al servidor vulnerable.
Inicia PHPsploit.
Usa el comando
show sourcepara ver el código PHP que debes copiar.Guarda ese código en un archivo (ej.
exploit.php) y súbelo al servidor objetivo mediante alguna vulnerabilidad previa (como un formulario de subida de archivos sin filtros).
Paso B: Conexión
Una vez que el archivo está en el servidor, conéctate desde tu terminal de Kali:
# Configurar el objetivo
set url http://sitio-vulnerable.com/uploads/exploit.php
# Establecer la conexión
exploit
3. Comandos Principales (En Español)
Una vez que la sesión está abierta (session 1 active), puedes interactuar con el servidor:
| Comando | Descripción |
ls | Listar archivos en el servidor remoto. |
cd | Cambiar de directorio en el servidor. |
download | Descargar un archivo del servidor a tu máquina Kali. |
upload | Subir un archivo desde Kali al servidor. |
cat | Leer el contenido de un archivo remoto. |
sysinfo | Obtener información detallada del sistema operativo del servidor. |
help | Ver la lista completa de comandos disponibles. |
4. Características Clave
Sigilo (Stealth): Las comunicaciones entre Kali y el servidor están ofuscadas dentro de las cabeceras HTTP (
User-Agent), lo que dificulta su detección por Firewalls o IDSs.Persistencia: Permite automatizar tareas para mantener el acceso aunque el administrador intente parchar el servidor.
Entorno Familiar: La interfaz emula una shell de Bash, facilitando la navegación por el sistema de archivos de la víctima.
⚠️ Nota de Seguridad y Ética
Advertencia: El uso de PHPsploit para acceder a sistemas sin autorización es ilegal. Esta información tiene fines exclusivamente educativos y para pruebas de penetración (pentesting) autorizadas. Recuerda siempre trabajar dentro de entornos controlados o bajo contrato legal.
Para configurar un túnel con PHPsploit en un entorno de pruebas, el secreto no está solo en la conexión, sino en la ofuscación. El objetivo es que el tráfico de comandos parezca tráfico web legítimo para evadir firewalls básicos.
A continuación, te detallo cómo configurar y personalizar el túnel de comunicación.
1. Personalización del Payload (Server-Side)
Antes de subir el archivo al servidor de pruebas, puedes configurar cómo se comportará. PHPsploit permite que el shell sea "polimórfico" para evitar firmas de antivirus.
Obtener el código:
Ejecuta
show sourcedentro de la consola de PHPsploit.Inyectar en un archivo existente:
En lugar de crear un archivo nuevo llamado
exploit.php(que es muy obvio), es mejor añadir el código al final de un archivo legítimo del servidor, como unconfig.phpo unindex.php.Contraseña del túnel:
Puedes establecer una contraseña para que nadie más pueda usar tu backdoor:
Bashset password mi_clave_secreta
2. Configuración del Cliente (Kali Linux)
Para que el túnel sea efectivo, debes ajustar los parámetros de red que PHPsploit enviará en cada petición HTTP.
Ajuste de Cabeceras (Headers)
Por defecto, PHPsploit usa cabeceras aleatorias, pero puedes forzar una para que parezca tráfico de un navegador específico:
set user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
Configuración de Proxy (Opcional)
Si tu entorno de pruebas requiere pasar por un proxy (como Burp Suite para analizar el tráfico):
set proxy http://127.0.0.1:8080
3. Estableciendo el Túnel Paso a Paso
Configura la URL del objetivo:
Bashset url http://192.168.1.50/proyecto/archivo_infectado.phpVerifica la configuración:
Usa el comando
show optionspara revisar que la URL, el proxy y el agente de usuario sean correctos.Lanzar la conexión:
BashexploitSi el túnel se establece correctamente, verás un mensaje:
Session 1 opened.
4. Post-Explotación sobre el Túnel
Una vez el túnel está activo, el comando más útil para el entorno de pruebas es prober. Este comando analiza el servidor a través del túnel para ver qué restricciones tiene:
Comprobar funciones PHP deshabilitadas:
prober run php.disabled_functionsVerificar permisos de escritura:
prober run fs.writable_dirs
¿Cómo verificar si el túnel es "invisible"?
Si estás en un laboratorio, abre Wireshark en tu máquina Kali y filtra por http. Verás que PHPsploit no envía comandos como ls o whoami en texto plano. En su lugar, verás peticiones GET/POST con datos codificados en Base64 o dentro de cookies, lo que confirma que el túnel de PHPsploit está funcionando correctamente.
Los problemas de conexión con PHPsploit suelen ser frustrantes, pero generalmente se deben a tres factores: filtros de red (WAF), configuración del servidor PHP o errores en la URL.
Aquí tienes una guía técnica para diagnosticar y solucionar el fallo:
1. Verificación del Payload (Server-Side)
El servidor podría estar bloqueando el código debido a funciones "peligrosas".
Funciones Inhabilitadas: Muchos hostings desactivan funciones como
eval(),base64_decode()ogzuncompress(). PHPsploit las usa para ofuscar el tráfico.Solución: Crea un archivo PHP simple con
<?php phpinfo(); ?>y busca la directivadisable_functions. Sievalestá ahí, el payload estándar no funcionará.
Permisos de Archivo: Asegúrate de que el archivo subido tenga permisos de lectura y ejecución para el usuario web (normalmente
www-data).Comando:
chmod 644 exploit.php(si tienes acceso previo).
2. Bloqueos de Seguridad (WAF / IDS)
PHPsploit es sigiloso porque oculta los datos en las cabeceras HTTP, pero los Firewalls de Aplicación Web (WAF) modernos como ModSecurity pueden detectarlo.
User-Agent sospechoso: Por defecto, PHPsploit puede usar un User-Agent que el servidor bloquea.
Solución: Cámbialo en la consola de PHPsploit antes de conectar:
Bashset http-user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"
Cabeceras Inusuales: Si el WAF inspecciona cabeceras personalizadas, cortará la conexión. Intenta cambiar el método de túnel si la versión lo permite.
3. Errores de Configuración en Kali (Client-Side)
A veces el problema es cómo le decimos a Kali que se conecte.
Ruta Absoluta: Asegúrate de que la URL sea exacta, respetando mayúsculas y minúsculas.
Prueba: Abre la URL del payload en tu navegador. Deberías ver una página en blanco (esto es normal, significa que el script está esperando datos). Si ves un error 404 o 403, la ruta o los permisos están mal.
Proxy/VPN: Si estás usando una VPN o Proxy, PHPsploit podría intentar salir por la interfaz errónea.
Solución: Verifica tu configuración de
set proxydentro de la herramienta.
4. Troubleshooting Rápido (Checklist)
Si el comando exploit falla, ejecuta esto en orden:
¿El servidor responde a PING? (Verifica conectividad básica).
¿El payload devuelve un error 500? (Probablemente PHP bloqueó el script por sintaxis o funciones prohibidas).
¿El error es "Connection Refused"? (El firewall del servidor está bloqueando tu IP o el puerto 80/443).
Diagnóstico Pro: Usar Verbose
Para ver exactamente qué está pasando "detrás de cámaras", activa el modo detallado antes de lanzar el exploit:
set verbose true
exploit
Esto te mostrará los códigos de respuesta HTTP (403 Forbidden, 406 Not Acceptable, etc.), lo que te dirá exactamente si es un problema de permisos o de un firewall.