Underc0de - Hacking y seguridad informática

[In]Seguridad Informática => Seguridad web y en servidores => Mensaje iniciado por: rollth en Junio 15, 2018, 09:36:20 am

Título: Denegación de Usuarios [DoU]
Publicado por: rollth en Junio 15, 2018, 09:36:20 am
Muy buenas Underc0ders,

hoy venía a hablaros de algo que he visto varias veces y me gustaría compilarlo todo y dejarlo aquí ya que pienso que podría serle útil a alguien. Se trata de lo que yo he llamado DoU (Denial of Users), o en Castellano, Denegación de Usuario, refiriendome de esta forma al bloqueo de un usuario ya sea o bien de forma temporal o bien de forma permanente, y aunque es algo de lo que ya se ha hablado nunca he visto un buen tutorial sobre el tema, además incluire algo que yo no había visto por la red.
(https://www.codejobs.biz/www/lib/files/images/f68645221826c81.jpg)

ARMANDO LABORATORIO
Bueno, lo primero que vamos a hacer es armar nuestro laboratorio, aquí seré breve, basicamente lo que tenemos que hacer es montar un servidor web con php y una base de datos, también pueden usar algún tipo de hosting free que lo dan ya todo montado.

Crearemos una tabla en nuestra base de datos, que mantendrá la siguiente estructura.
(https://image.ibb.co/dAuiq8/Captura_de_pantalla_de_2018_06_10_12_37_45.png)

Para ello podemos usar el siguiente Statment.

Código: MySQL
  1. CREATE TABLE `users` ( `id` INT(4) NOT NULL AUTO_INCREMENT , `usuario` VARCHAR(100) NOT NULL , `password` VARCHAR(100) NOT NULL , `email` VARCHAR(100) NOT NULL , `bloqueo` INT(4) NOT NULL , `ip` VARCHAR(100) NOT NULL , PRIMARY KEY (`id`)) ENGINE = MyISAM;
  2.  

Os dejo también por aquí todo el código que he usado para hacer las POCs (Ya se que el código es muy mal, pero lo hice rápido para hacer las pruebas)

https://drive.google.com/file/d/1FDWR-lrSoAvuy7oLJBrFLnzxgjTFs0Y3/view?usp=sharing

Una vez subamos todo el código debemos modificar el config.php con nuestros datos y ya podremos acceder a "url.es/pruebas.php"

(https://image.ibb.co/nsbeV8/Captura_de_pantalla_de_2018_06_10_13_08_53.png)
(https://image.ibb.co/nKqv3T/Captura_de_pantalla_de_2018_06_10_13_09_21.png)

Si quieren hacer las pruebas pueden hacerlo en el laboratorio que preparé yo mientras esté online.

http://testparauc.atwebpages.com/pruebas.php
DoU POR FUERZA BRUTA A USUARIO

El primer caso que nos encontramos es una medida de evasión en la que las páginas webs bloquean a un usuario tras un numero de intento de sesión fallidos. Esto se hace para evitar ataques de fuerza bruta.

Para volver a poder tener acceso a la cuenta normalmente hay, o bien que realizar algún tipo de proceso vía email, o bien esperar una cantidad de tiempo, por lo que en este caso se trataría de un bloqueo temporal, a pesar de esto, puede ser dañino si se hace en ciertos momentos clave.

Para realizar la PoC vamos a registrar a un usuario, en mi caso test01, con credenciales test01.

(https://image.ibb.co/jb9Xno/Captura_de_pantalla_de_2018_06_12_08_47_33.png)

Lo siguiente que haremos será logearnos con el usuario test01 y unos credenciales incorrectos, capturando la petición con BurpSuite y enviándola al intruder.

(Para los que no hayan usado BurpSuite aconsejo mirarse los tutoriales de Snifer (https://www.sniferl4bs.com/p/guia-de-uso-de-burpsuite.html))
(https://image.ibb.co/bVEXno/Captura_de_pantalla_de_2018_06_12_08_58_27.png)

Una vez capturada la petición lo configuraremos para que vaya probando contraseñas diferentes, como si un ataque de fuerza bruta se tratase, en mi caso lo he hecho a través de una lista numérica.

(https://image.ibb.co/jEdmDT/Captura_de_pantalla_de_2018_06_12_08_58_54.png)
(https://image.ibb.co/jxWdSo/Captura_de_pantalla_de_2018_06_12_08_59_20.png)

Una vez configurado lanzaremos el ataque, como se puede observar la lista es de mil números, para asegurarme que hace el número de intentos necesarios para que bloquee al usuario.

(https://image.ibb.co/m4DxL8/Captura_de_pantalla_de_2018_06_12_09_00_08.png)

Una vez hecho esto podemos comprobar que al intentar acceder con el usuario y contraseña correctos nos devolverá una alerta diciendo que el usuario ha sido bloqueado.
(https://image.ibb.co/kcXVcy/Captura_de_pantalla_de_2018_06_13_08_45_54.png)

DoU POR FUERZA BRUTA A IP

Este segundo caso funciona igual, la única diferencia es que en lugar de bloquear al usuario, bloquea la IP, por lo que si repetimos el proceso anterior nosotros seremos bloqueados, pero el usuario legítimo podrá seguir accediendo. Este tipo de bloqueo suele ser temporal.

Ahora crearemos de la misma forma un usuario que será test02 y accederemos a la segunda sección de bloqueo de usuarios por IP.

En este caso lo que haremos será en un servidor nuestro propio, crear una página que al entrar envíe muchas peticiones al login desde el cliente del navegador, de tal forma que al entrar el usuario legítimo en nuestra página maliciosa quedaría bloqueado.

Igual que en la ocasión anterior vamos a interceptar la petición para observar como es.

(https://image.ibb.co/bzPp7y/Captura_de_pantalla_de_2018_06_15_14_00_02.png)

Una vez interceptada la petición tenemos la información suficiente para preparar nuestro código, quedando de la siguiente forma.

Código: HTML5
  1.     <!DOCTYPE html>
  2.     <html>
  3.     <head>
  4.     <title>Ataque ejemplo</title>
  5.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  6.     <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  7.     </head>
  8.     <body>
  9.     <script>
  10.     var paso;
  11.     for(paso = 0; paso < 100; paso++){
  12.    $.post("http://testparauc.atwebpages.com/login2.php", // URL al que se envía la información
  13.    {
  14.    username: "test02", // Nombre de la Variable y Usuario
  15.    password: paso // Nombre de la Variable
  16.    },
  17.    function(){
  18.    alert();
  19.    });
  20.    }
  21.    </script>
  22.     <img src="https://globbsecurity.com/wp-content/uploads/2015/06/1330457418383.jpg">
  23.     </body>
  24.     </html>
  25.  

Una vez subido nuestro código se lo enviaremos a la víctima, donde el verá lo siguiente.

(https://image.ibb.co/gH1GLJ/Captura_de_pantalla_de_2018_06_15_14_11_18.png)

Después de ver esto si intenta entrar en la página la aplicación detectará que ha hecho demasiados intentos y habrá bloqueado su IP.

(https://image.ibb.co/e3qMny/Captura_de_pantalla_de_2018_06_15_14_15_44.png)

DoU POR NOMBRE DE USUARIO

El siguiente caso es algo que descubrí en una auditoría, donde si creas un usuario con el mismo nombre que otro ya existente el primero queda bloqueado y no se puede acceder. Esto es así por 3 motivos.


Para comprobar esto vamos a crear un usuario con usuario: test03 y contraseña: test03 y después accederemos normalmente para comprobar que funciona.

Una vez hecho esto volveremos a crear un usuario con usuario: test03 y contraseña: bloqueo, una vez hecho esto intentaremos acceder y veremos que no somos capaces de hacerlo con ninguna de las dos combinaciones.

(https://image.ibb.co/gZTcud/Captura_de_pantalla_de_2018_06_15_14_30_31.png)

Hasta aquí lo que venía a contarles y espero que les sea útil en algún momento.

También me pueden seguir en Twitter si les hace ilusión: @RoloMijan (https://twitter.com/RoloMijan)

Saludos.

Título: Re:Denegación de Usuarios [DoU]
Publicado por: NERV0 en Junio 16, 2018, 10:58:12 pm
Apa la papa, muy bien explicado! Me gustó mucho  ;)

Saludos, NERV0
Título: Re:Denegación de Usuarios [DoU]
Publicado por: Gabriela en Junio 17, 2018, 03:40:16 pm
 @rollth (https://underc0de.org/foro/index.php?action=profile;u=30952)


Detallado, con amplias explicaciones e imágenes.

Muy interesante el post, gracias por tu trabajo!

Saludos

Gabriela