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.
Crearemos una tabla en nuestra base de datos, que mantendrá la siguiente estructura.
Para ello podemos usar el siguiente Statment.
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)
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Una vez subamos todo el código debemos modificar el config.php con nuestros datos y ya podremos acceder a "url.es/pruebas.php"
Si quieren hacer las pruebas pueden hacerlo en el laboratorio que preparé yo mientras esté online.
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
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.
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 No tienes permitido ver enlaces. Registrate o Entra a tu cuenta)
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.
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.
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.
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.
Una vez interceptada la petición tenemos la información suficiente para preparar nuestro código, quedando de la siguiente forma.
Una vez subido nuestro código se lo enviaremos a la víctima, donde el verá lo siguiente.
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.
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.
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: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Saludos.
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.
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.
Para ello podemos usar el siguiente Statment.
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)
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Una vez subamos todo el código debemos modificar el config.php con nuestros datos y ya podremos acceder a "url.es/pruebas.php"
Si quieren hacer las pruebas pueden hacerlo en el laboratorio que preparé yo mientras esté online.
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
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.
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 No tienes permitido ver enlaces. Registrate o Entra a tu cuenta)
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.
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.
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.
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.
Una vez interceptada la petición tenemos la información suficiente para preparar nuestro código, quedando de la siguiente forma.
Una vez subido nuestro código se lo enviaremos a la víctima, donde el verá lo siguiente.
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.
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.
- Los valores no están identificados como únicos en la base de datos, por lo que en una columna puede haber dos filas con un mismo valor de una columna.
- Al registrar un usuario o modificarlo la aplicación no comprueba si ese nombre usuario o email ha sido creado anteriormene
- En la consulta en lugar de hacer SELECT * FROM usuarios y después seleccionar la parte que nos interesa, se hace SELECT password FROM usuarios, de tal forma que si hay varios usuarios iguales no devuelve un solo String, y al hacer la comparación dará siempre falsa
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.
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: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Saludos.