¿Cómo hacer una inyección de comandos en PentesterLab y para qué sirve aprender este ejercicio en ciberseguridad?
El siguiente tutorial sobre cómo hacer una inyección de comandos en PentesterLab está hecho con fines académicos. El propósito de la técnica que explicaremos a continuación es encontrar fallos de seguridad en aplicaciones web para reportarlos ante sus dueños.
Esto se debe hacer siempre con el permiso de los dueños de la aplicación, pues practicar hacking en entornos web ajenos constituye un delito en la mayoría de países.
No obstante, el hacking web es una poderosa herramienta para encontrar vulnerabilidades en aplicaciones y, así, ayudar a aumentar sus niveles de seguridad. Por esta razón, es uno de los servicios más demandados en ciberseguridad. Sin embargo, dado que practicar estos conocimientos en entornos ajenos es ilegal, es necesario recurrir a entornos de aprendizaje, donde se pueden realizar ciberataques de manera segura y controlada.
En este post, te enseñaremos a hacer un ataque web en un entorno legal de práctica. Es decir, practicaremos este ciberataque en una aplicación diseñada especialmente para poner a prueba su seguridad. A continuación, te explicaremos cómo hacer una inyección de comandos en PentesterLab.
Inyección de comandos en PentesterLab
¿Qué es la inyección de comandos?
De acuerdo con la lista de OWASP Top 10, la inyección de código es el tercer tipo de ataque más utilizado en entornos web. La inyección de código se refiere a la ejecución de comandos en el navegador de la víctima o el servidor de la página por medio de la explotación de algún fallo de seguridad.
La inyección de comandos, en particular, se refiere a la ejecución de comandos bash de Linux, diseñados para interactuar directamente con el servidor de la página y, en esencia, tomar control de este.
Preparación
🔴 ¿Quieres entrar de lleno a la Ciberseguridad? 🔴
Descubre el Ciberseguridad Full Stack Bootcamp de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada
👉 Prueba gratis el Bootcamp en Ciberseguridad por una semanaAntes de hacer una inyección de comandos en PentesterLab, es necesario preparar el entorno virtual en el que vamos a trabajar. Para ello, es necesario desplegar dos máquinas virtuales al mismo tiempo.
Una de estas máquinas virtuales puedes descargarla directamente desde el sitio web de PentesterLab y llamarla “Web For Pentester”, para fines de este ejercicio. La otra, debe tener el sistema operativo Kali Linux. Si aún no tienes una máquina virtual con Kali, visita nuestro tutorial sobre cómo instalar una.
Inyección de comandos
Ahora veremos, paso a paso, cómo hacer una inyección de comandos en PentesterLab.
- Primero, abre tu máquina de Kali Linux y, en ella, accede al programa Burp Suite. Ahí, ve a la pestaña Proxy y haz clic en el botón de Open Browser.
- Ahora, ve a tu máquina virtual de “Web For Pentester” y ejecuta el comando “ifconfig” para averiguar su dirección IP.
- Después, regresa al navegador de Burp Suit, en Kali Linux, y accede a la dirección IP de la aplicación vulnerable de PentesterLab.
- Allí, busca el título que dice “Commands Injection” y haz clic en el enlace que dice “Example 1“, que te llevará a una página web con la siguiente URL:
http://192.168.175.129/commandexec/example1.php?ip=127.0.0.1
- En esta URL, inyectaremos nuestro payload, concatenando comandos de Linux para ejecutar en el servidor de la página web. La sintaxis para hacer una inyección de comandos en PentesterLab es:
http://192.168.175.129/commandexec/example1.php?ip=127.0.0.1 && <payload>
- Es decir, si nuestro payload es el comando “id“, la URL que ejecutaremos desde el navegador será:
http://192.168.175.129/commandexec/example1.php?ip=127.0.0.1 && id
- Sin embargo, al enviar la petición de este modo veremos que no habremos inyectado código aún. Para ello, tendremos que interceptar la petición con Burp Suite y hacerle una pequeña modificación.
- Ve a la ventana de Burp Suite, en la pestaña Proxy, y activa la opción “Intercept is On”. Ahora, vuelve a introducir la URL con el payload anterior. En Burp, haz clic derecho sobre la petición interceptada y envíala al Repeater con la opción “Send to Repeater”.
- Ahora, ve a la pestaña de Repeater, haz clic derecho sobre la petición y selecciona la opción “URL-encode as you type”. Hecho esto, modifica la URL con el payload nuevamente. Es decir, introduce nuevamente los siguientes valores, con espacios, en la parte de la petición que contiene la URL:
&& id
- El resultado se debe ver codificado en la URL de la petición de la siguiente forma:
GET /commandexec/example1.php?ip=127.0.0.1+%26%26+id HTTP/1.1
- Finalmente, haz clic en el botón “Send” y verás cómo se habrá ejecutado el comando “id” en el servidor. Como resultado, te arrojará información sobre el usuario, que se verá así:
uid=33(www-data) gid=33(www-data) groups=33(www-data)
Si quieres aprender mucho más sobre hacking web, ingresa a nuestro Bootcamp Ciberseguridad Full Stack y especialízate en tan solo 7 meses. ¡Potencia tu futuro al máximo y pide ahora más información!