Así toman el control de nuestros servidores.

¿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.

Download del php-reverse-shell
De aquí nos bajamos el .php para el Reverse Shell.

Nos tendremos que bajar el fichero php-reverse-shell-1.0.tar.gz, y descomprimirlo en la carpeta de nuestra elección.

Contenido del fichero comprimido php-reverse-shell-1.0.tar.gz
Contenido del fichero comprimido php-reverse-shell-1.0.tar.gz

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.

Fichero reverse shell.phphque nos indica los campos a modificar.
Es muy sencillo adivinar lo que se tiene que modificar.

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.

service mysql start
service apache2 start

Ya podemos visitar la URL de DVWA:

Cuadro de dialogo Upload Images en DVWA
Apartado de upload 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:

Imagen subida ok a DVWA!

¿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:
    chmod -R 775 /var/www/html/DVWA-master/hackable/uploads/
    

    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.

Error que presenta DVWA cuando subimos un fichero que no es una imagen.
DVWA se da cuenta de que no queremos subir una imagen.

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.

Configuración que dejamos en el proxy de nuestro navegador
Configurando el proxy de nuestro navegador.
Subiendo el fichero .php del reverse shell
Subida del fichero .php

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.

Datos que captura BURPSuite del intento de subir un .php con DVWA
Vemos los datos capturados por BURPSuite, entre ellos el nombre del fichero.
Hemos cambiado la extensión del fichero

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!

Mensaje de DVWA que nos muestra que el .php del reverse shell se ha subido correctamente
Ya tenemos el .php en el servidor

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:

ncat -v -l -p 21225

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.

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

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.

Recordad que este post forma parte del tutorial de Hacking / Pen Testing Básico

Comentarios.