OSWE: Depuración remota de código PHP con Visual Studio Code

Actualmente, me encuentro cursando la certificación OSWE (Offensive Security Web Expert). Debes saber que, si estás pensando en cursarla, se requieren conocimientos avanzados en depuración de aplicaciones web (PHP, NodeJS, Java y .NET). En este tutorial, te mostraré como depurar aplicaciones web desarrolladas en PHP de manera remota, estoy seguro de que te será muy útil si estás a punto de realizar el examen.

A la hora de realizar el examen, te pedirán que vulneres dos aplicaciones web (50 puntos cada una), estas dos aplicaciones se encuentran en dos máquinas distintas, también te proporcionarán otras dos máquinas de backup en las cuales tendrás acceso root. El objetivo es claro, realiza pruebas y depura código en las máquinas de backup para vulnerar la maquina «real», desarrolla los exploits y genera el informe.

Si te ha tocado una aplicación desarrollada en PHP, voy a mostrarte como depurar el código con Visual Studio Code, vamos allá.

Instala Visual Studio Code

Desde su web oficial puedes descargar el binario, para instalar:

dpkg -i code_version-release_platform.deb

Extensiones necesarias

Instala las siguientes dos extensiones (PHP Debug y Remote – SSH)

code --install-extension felixfbecker.php-debug
code --install-extension ms-vscode-remote.remote-ssh

Conéctate a la máquina remota

En Visual Studio Code, pulsa F1 y escribe «Connect to host».

Creando una conexión remota con el plugin Remote – SSH

A continuación, agrega la IP de la máquina remota y crea el comando ssh (similar al siguiente)

ssh javierolmedo@oswe.test -A
Creación satisfactoria de host

Pulsa el botón «Connect» o vuelve a realizar el primer paso, esta vez, podrás ver que existe una configuración, selecciónala y escribe la contraseña de usuario.

Pasos previos a la instalación de XDebug

Si los pasos anteriores han ido todo bien, ahora tendrás una ventana de Visual Studio Code con una sesión SSH en la máquina remota, lo que nos permite cargar directamente el código fuente de la aplicación. Normalmente, las aplicaciones se encontrarán dentro del directorio /var/www/html/, en el panel izquierdo, selecciona «Open Folder» y ábrelo.

Visual Studio Code conectado por SSH

Crea un archivo llamado test.php y agrega el siguiente código:

<?php
    phpinfo();

Accede mediante la URL al archivo, verás toda la información sobre tu instalación PHP, como puedes observar, XDebug no está configurado.

Información sobre la instalación de PHP

Instalación de XDebug

Copia todo el contenido del paso anterior (Ctrl + A) y pégalo en la siguiente herramienta online.

Uso de la herramienta online XDebug Wizard

Al analizar el contenido, la herramienta nos mostrará los pasos para realizar la instalación de XDebug, serán similares a los siguientes:

1. Download php_xdebug-3.0.2-7.2-vc15-x86_64.dll
2. Move the downloaded file to bin\php\php-7.2.19-Win32-VC15-x64\ext
3. Edit bin\php\php-7.2.19-Win32-VC15-x64\php.ini and add the line

zend_extension = D:\laragon\bin\php\php-7.2.19-Win32-VC15-x64\ext\php_xdebug-3.0.2-7.2-vc15-x86_64.dll

4. Restart the webserver

Aparte de seguir los pasos anteriores, deberemos de añadir las siguientes líneas en nuestro fichero php.ini.

Si tienes la versión 3 de XDebug:

xdebug.mode = debug
xdebug.start_with_request = yes
xdebug.client_port = 9000

Si tienes la versión 2 de XDebug:

xdebug.remote_enable = 1
xdebug.remote_autostart = 1

Reinicia el servidor, deberías ver XDebug instalado.

Instalación de XDebug

Depurando código PHP

Hora de depurar el código PHP, puedes crearte un archivo llamad index.php con el siguiente código:

<?php
    $s = "Hello Hackpuntes";
    $i = "I'm a integer";
    $b = true;

Dirígete a la pestaña de depuración y pulsa sobre el botón «Run and Debug».

Pestaña Debug de Visual Studio Code

Selecciona PHP

Creación de fichero de depuración para PHP

Se generará un fichero similar al siguiente:

Fichero launch.json para depuración

Finalmente, se puede comprobar el contenido de las variables.

Depuración de código PHP

Un saludo a todos!!

2 comentarios en “OSWE: Depuración remota de código PHP con Visual Studio Code”

Deja tu comentario

Ir arriba