Hacking Ético, Seguridad Informática, RedTeam, Pentesting.

lunes, 1 de julio de 2024

PENTESTING WEB PARTE 6

7/01/2024 06:24:00 p. m. Posted by Secpronet No hay comentarios

BYPASS DE PARAMETROS Y LISTADO DE DIRECTORIOS


Bypass de Parámetros

El bypass de parámetros es una técnica utilizada por atacantes para evadir mecanismos de seguridad y restricciones en aplicaciones web. Esta técnica implica modificar parámetros de entrada de diversas maneras para lograr un comportamiento inesperado o acceder a funcionalidades no autorizadas.

Cómo Surge el Bypass de Parámetros

  • Validaciones Inadecuadas:
  • La falta de validaciones robustas en los parámetros de entrada puede permitir que los atacantes manipulen estos parámetros para evadir restricciones.
  • Falta de Sanitización:
  • No sanitizar o filtrar adecuadamente las entradas del usuario puede llevar a que parámetros maliciosos sean procesados por la aplicación.
  • Control de Acceso Insuficiente:
  • No implementar controles de acceso adecuados en la aplicación puede permitir que los atacantes modifiquen parámetros para acceder a recursos restringidos.
  •  

    Listado de Directorios y Bypass

    Listado de Directorios es una vulnerabilidad de seguridad que ocurre cuando un servidor web permite a los usuarios listar los contenidos de los directorios del servidor sin ninguna restricción. Esta vulnerabilidad puede permitir a los atacantes obtener información sensible sobre la estructura del sitio, archivos presentes, y potencialmente datos confidenciales que no deberían ser accesibles públicamente.

    Cómo Surge el Listado de Directorios

    • Configuraciones por Defecto:
    • Muchos servidores web vienen configurados por defecto para permitir el listado de directorios si no se encuentra un archivo de índice (como index.html o index.php) en el directorio.
    • Configuración Incorrecta del Servidor:
    • Los administradores pueden configurar incorrectamente el servidor, permitiendo inadvertidamente el listado de directorios.
    • Falta de Controles de Acceso:
    • No implementar controles de acceso adecuados en el servidor web puede resultar en que los directorios sean accesibles para cualquier persona.

    Cómo se realizan los ataques

    Vamos hacer un bypass para poder entrar al “Admin area”, el cual por ser usuario “test” no tenemos permiso, damos click e interceptamos la petición con BurpSuite, luego buscamos la petición que dice “/api/v2/users/checkadmin” y  la remplazamos por “/api/v2/users/”.



    Acá damos click derecho y luego buscamos la opción “do intercept” y luego “request to this response” y vemos que nos sale información como el usuario, ids, tokens, etc

    como vemos nos aparece que no es admin y nos aparece el parámetro “false”, lo cambiamos a “true” y con ello ya procederemos hacer el bypass y entrar al área de admin.



    O bien podemos modificar el tipo de usuario al que queremos acceder, los mensajes que nos muestra, etc., por ello es fundamental leer bien la respuesta de la petición para saber que demos de modificar.

    Acá capturamos y vemos al momento de verificar si es admin o no, si no lo es modificamos los parámetros para realizar el bypass.

    Nota: puedes ser diferentes formas algunas son: cambiar de "False a true", "1 a 0", "Error a Success", etc.





    Otra forma es buscar directorios expuestos con información sensible, para ello usamos “dirb” de la siguiente forma: “sudo dirb http://192.168.1.7”, y vemos los directorios y vamos a buscar información manualmente, o bien configuramos para que nos busque por extensiones de la siguiente forma: “sudo dirb http://192.168.1.7 -X .txt, .xml, .html” según la extensión a buscar, también podemos usar un diccionario en especifico y tener uno personalizado, solo debemos de especificar la ruta de la siguiente forma: “sudo dirb http://192.168.1.7/uploads/admin /usr/share/dirb/wordlists/big.txt -X .xml”.





    Como vemos hay varias formas de hacer bypass de parámetros, pero como lo corregimos.

     Cómo prevenir estos ataques

    • Validación en el Servidor
    • Evitar la Exposición de Datos Sensibles
    • Uso de Controles de Acceso Rigorosos
    • Deshabilitar el Listado de Directorios
    • Controles de Acceso
    • Revisión y Monitoreo
    • Sanitización de Entradas
    • Uso de Tokens CSRF

    Espero les sea de utilidad, nos vemos en la séptima parte.

    Happy-Hacking 😊

    jueves, 13 de junio de 2024

    Pentesting Móvil Parte 5

    IDOR 2 - REALIZANDO TRANSFERENCIAS

    ¿Cómo se hacen?

    En este ejemplo, el usuario autorizado está transfiriendo dinero de su cuenta (1111111111) a la cuenta de destino (2222222222). Si la aplicación no valida correctamente que el usuario está autorizado a transferir dinero desde la cuenta 1111111111, un atacante podría cambiar el valor de accountNo para transferir dinero desde la cuenta de otra persona.



    Ahora veremos que al modificar “accountNo”, con una cuenta que no nos pertenece podemos realizar la transferencia a mi cuenta o a otra, esto sin que el usuario se dé cuenta, la mayoría de las veces nos pedirá un token el cual podremos realizar un ataque “ByapassToken”, para poder realizar la transferencia con éxito, en este caso no nos lo pide.

    acá vemos la petición modificada y la respuesta de la misma, y si vemos le historial de transferencias del usuario “emma”, vemos que efectivamente se realizo una transferencia de $100 a otra cuenta.





    Vemos en otro ejemplo, al momento de realizar un transferencia con valor Negativo vemos que se resta de la otra cuenta y se suma a la de nosotros.





    Realizamos la transferencia de -$1,000 de la cuenta de michael a la cuenta de emma, consultamos el historial y el balance y vemos que en la cuenta michael se sumaron y en la cuenta emma se restaron los $1,000.






    ¿Cómo lo puedo solucionar?

    Para prevenir los IDORS, debemos implementar controles de autorización robustos. Aquí hay algunas estrategias:

    1. Validación de la Autorización del Usuario: Asegúrate de que el usuario tiene permisos para realizar acciones sobre los recursos que está solicitando. Esto implica validar que el usuario puede acceder y realizar operaciones en la cuenta especificada en Account.

    2. Uso de IDs Indirectos: En lugar de exponer IDs directos, utiliza IDs indirectos o tokens que no puedan ser fácilmente adivinados o manipulados por el usuario.

    3. Validación de Entrada: Asegúrate de que todas las entradas proporcionadas por el usuario sean válidas y pertenezcan al usuario autenticado.

    4. Firewalls de Aplicación Web (WAF): Están diseñados específicamente para proteger aplicaciones web de una variedad de ataques, incluidos los IDOR.

    Espero les sea de utilidad, nos vemos en la sexta parte.

    Happy-Hacking 😊

    miércoles, 6 de julio de 2022

    PENTESTING WEB PARTE 5

     PENTESTING WEB PARTE 5 - SQLI


    ¿Qué es SQLI?

    Un ataque de inyección SQL consiste en la inserción o “inyección” de una consulta SQL a través de los datos de entrada del cliente a la aplicación. Un exploit de inyección SQL exitoso puede leer datos confidenciales de la base de datos, modificar datos de la base de datos (Insertar/Actualizar/Eliminar), ejecutar operaciones de administración en la base de datos (como apagar el DBMS), recuperar el contenido de un archivo dado presente en el archivo DBMS sistema y, en algunos casos, emitir comandos al sistema operativo. Los ataques de inyección SQL son un tipo de ataque de inyección, en el que los comandos SQL se inyectan en la entrada del plano de datos para afectar la ejecución de los comandos SQL predefinidos.


    Tipos de ataques SQLI

    • Ataque por error: Es el ataque más común y el más fácil de explotar ya que es la propia aplicación la que va indicando los errores de la base de datos al realizar las diferentes consultas.
    • Ataque por unión: Este tipo de ataque consiste en que el portal devuelva un resultado, y a partir de ahí, añadir al resultado original el resultado de otra query de tal forma que se muestren junto con los datos del portal, los datos sensibles del mismo que no debería de poderse obtener.
    • Ataque ciego (blind): Es el ataque más complicado, es la última opción cuando ninguno de los ataques anteriores funciona. En este caso hay que ser muy creativos y se deben de realizar preguntas a la base de datos mediante booleanos, es decir, verdadero o falso.
    • Basado en condicionales: Si la consulta está bien mostrará los resultados, sino no.
    • Basada en tiempo: Si la consulta es correcta devolverá los resultados a los N segundos, sino no.

    Ejemplo de como realizar una inyección SQLI.

    Para realizarla vamos a ir al módulo de "passphrase generator", luego capturamos la petición y la mandamos al repeter.

    Después mandamos la petición y vemos lo que responde, posterior a eso usamos a modo de ejemplo este payload "' OR '1'='1" , nos dirigimos al decoder y lo encodeamos en url y como vemos nos devuelve la petición exitosa de igual forma nos deja pasar la petición.







    Ya vimos que nos funciono lo del payload ahora vamos a usar la herramienta sqlmap, con ello vamos a conseguir explotar y sacar la información de la base de datos, lo aremos de la siguiente forma,



    Y con ello conseguimos realizar una inyección sqli y su explotación con sqlmap.


    Espero les sea de utilidad, nos vemos en la siguiente entrada.

    Happy-Hacking 😊

    martes, 21 de junio de 2022

    PENTESTING WEB PARTE 4

     PENTESTING WEB PARTE 4 - XSS3


    Inyección XML - XSS - Subida de Archivos

    En esta entrada veremos como podemos realizar una inyección XML-XSS subiendo un archivo y llamándolo paraqué ejecute nuestro payload, en este caso podemos usar el mismo payload del ejemplo anterior,  de esta forma nos va a dejar pasar y con ello el alert aparecerá en el navegador al llamar el archivo.


    En este caso vamos a el área de subida de archivos, luego vamos a buscar nuestro archivo xml que habíamos creado previamente, presionamos el botón buscar, cargamos el archivo.






    Ahora solo queda llamar al archivo de la siguiente ruta /uploads/admin1/xss.xml y se ejecutara nuestro escript.

    Espero les sea de utilidad, nos vemos en la siguiente entrada.

    Happy-Hacking 😊

    PENTESTING WEB PARTE 3

    PENTESTING WEB PARTE 3 - XSS2


    Inyección XML - XSS

    En esta entrada veremos como podemos realizar una inyección XML-XSS, en este caso, podemos usar el mismo payload del ejemplo anterior, esta vez lo vamos a encodear en html y de esta forma nos va a dejar pasar y con ello el alert aparecerá en el navegador.


    En este caso vamos a el área de administración, luego vamos a buscar el usuario, presionamos el botón buscar y vemos lo que capturamos en BurpSuite.



    Ahora que ya capturamos agregamos el script que encodeamos en html  (solo vamos a encodear  esto: "<script>"), luego, precionamos el botón de forward y dejamos pasar la petición.


    Como vemos la inyección funciono y nos ejecuto el alert con lo que nosotros habíamos agregado.


    Espero les sea de utilidad, nos vemos en la siguiente entrada.

    Happy-Hacking 😊

    lunes, 20 de junio de 2022

    PENTESTING WEB PARTE 2

     PENTESTING WEB PARTE 2 - XSS1

    ¿Qué es Cross-Site-Scripting?

    Los ataques Cross-Site Scripting (XSS) son un tipo de inyección, en el que se inyectan scripts maliciosos en sitios web que. Los ataques XSS ocurren cuando un atacante usa una aplicación web para enviar código malicioso, generalmente en forma de un script del lado del navegador, a un usuario final diferente. Las fallas que permiten que estos ataques tengan éxito están bastante extendidas y ocurren en cualquier lugar donde una aplicación web use la entrada de un usuario dentro de la salida que genera sin validarla o codificarla.

    Tipos de ataques XSS

    • XSS Reflejado: Es el más común, este no se almacena en el código en el servidor.
    • XSS Almacenado o Persistente: Este tiende a almacenar el código en el servidor.
    • XSS Basdo den DOM: Inyecta mediante la url pero no se carga como parte de la web en su código fuente, podemos decir que el código no llega a la web, únicamente se ejecuta en el navegador de la víctima.

    Recursos

    Entre los recursos que se pueden usar hay gran cantidad en la web, de los cuales podemos usar o apoyarnos con estos: 


    ¿Dónde Podemos Practicar?

    Podemos hacerlo en:

    También lo podemos hacer con ayuda de repositorios de github hay muchos escenarios para pruebas, en este laboratorio usaremos ese repositorio DVWS,  la instalación lo vimos en la primera parte1.


    ¿Cómo hacer una inyección XSS?

    Para realizar una inyección necesitamos de payloads, un payload generalmente es lo que usamos para inyectar dentro del o los parámetros vulnerables que tiene la aplicación.

    Para este ejemplo vamos hacer un XSS Reflejado en el login.

    Primero vamos a colocar un user y una contraseña, luego de esto configuramos BurpSuite para poder capturar trafico.


    Luego de esto vemos que al capturar podemos modificar la petición, (dejo ambas), agregamos el script y presionamos el botón forward, luego regresamos al navegar y vemos como funciona, mostrando el alert con el mensaje que definimos previamente.



    Espero les sea de utilidad, nos vemos en la siguiente entrada.

    Happy-Hacking 😊