Notice: La función wp_enqueue_script ha sido llamada de forma incorrecta. Los scripts y estilos no se deberían registrar o poner en cola hasta que se carguen los ganchos wp_enqueue_scripts, admin_enqueue_scripts y login_enqueue_scripts. Este aviso ha sido activado por la gestión de nfd_wpnavbar_setting. Por favor, ve depuración en WordPress para más información. (Este mensaje fue añadido en la versión 3.3.0). in /home1/spotsail/public_html/martra/wp-includes/functions.php on line 6078
Así toman el control de nuestros servidores. – Pere Martra
No se han encontrado widgets en la barra lateral
Un Reverse Shell Web pudo ser la causa de los "Papeles de Panamá"Un Reverse Shell Web pudo ser la causa de los "Papeles de Panamá"

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

[code language=”shell”]
service mysql start
service apache2 start
[/code]

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:

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

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:

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

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

Clonando un punto de acceso WiFi. Y instalar bridge-utils en Kali, que no es poco.

Los puntos de acceso WiFi falsos son muy peligrosos, existen, y cualquiera puede ser víctima de ellos. Estamos ya en Read more

Me he quedado con tu cara (Engañando a los sistemas de reconocimiento facial)

Machine Learning, Biometric Recognition, Artificial Intelligence, Multi Layer Security in the beach... Estamos en una época apasionante para cualquier aficionado Read more

Atacando por Fuerza Bruta una pobre Wi-Fi y generando ficheros de passwords INMENSOS.

En esta cuarta entrada del tutorial de Hacking Básico vamos a ver cómo funcionan las herramientas de creación de listas Read more

(ATM Malware) Winter is coming!
Malware en cajeros

Cada vez que damos un paso para securizar un sistema, cada vez que lo fortalecemos, cada ataque que evitamos, sobretodo Read more

Por Martra

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *