Red de conocimiento informático - Conocimiento del nombre de dominio - SSRF | Vulnerabilidades de seguridad web

SSRF | Vulnerabilidades de seguridad web

Qué es SSRF

Cada servicio utilizado por todos tiene más o menos las siguientes funciones:

1. Compartir contenido a través de una dirección URL.

2. Optimice la dirección original del contenido de la página web a través de la dirección URL para que sea adecuada para la navegación en la pantalla del móvil, que es la llamada función de transcodificación.

3. Traducir el contenido del texto correspondiente a través de la dirección URL, que es similar a la función de la página web de Google Translate.

4. Cargue o descargue imágenes a través de direcciones URL, que es similar a la función de captura de imágenes.

5. Y la función de capturar y recopilar imágenes y artículos.

En pocas palabras, es la función de capturar datos de otros servidores a través de URL y luego realizar las operaciones correspondientes. Tomando el código ThinkJS como ejemplo, nuestra implementación es aproximadamente la siguiente:

Esta es originalmente una buena función, pero cuando el usuario ingresa una dirección de intranet a la que puede acceder el servidor, en este caso El contenido de la intranet se captura y se muestra a los usuarios fuera de la red. La mayoría de las empresas colocarán información relacionada con la empresa y datos importantes en su intranet. Esta falla de falsificación de solicitudes del lado del servidor (SSSF) puede existir si la aplicación no valida y filtra adecuadamente la URL proporcionada por el usuario y la información devuelta por el servidor remoto. La abreviatura de SSRF.

Vulnerabilidad SSRF

En pocas palabras, si tiene una vulnerabilidad SSRF, equivale a configurar un cable entre el atacante y la red interna, y el atacante puede atravesarla. este cable Acceso indirecto a la intranet. Los atacantes pueden utilizar SSRF para implementar cinco ataques principales:

1. Pueden realizar escaneos de puertos locales en servidores en la intranet fuera de la red para obtener información del banner del servicio.

2. Atacar aplicaciones que se ejecutan en la intranet o localmente (como desbordamiento).

3. Tomar huellas dactilares de aplicaciones web de intranet accediendo a archivos predeterminados.

4. Los ataques a aplicaciones web internas y externas son principalmente ataques que utilizan parámetros GET.

5. Utilice el protocolo de archivos para leer archivos locales.

El último método de implementación es que el usuario escriba file:// dirección del protocolo del archivo local. Si no se hace ningún juicio, es probable que el programa lea el archivo local y lo devuelva al usuario, como por ejemplo. file:///etc /contraseña Contraseña del sistema del servidor.

Método de defensa

En primer lugar, debemos deshabilitar los protocolos innecesarios y permitir solo solicitudes HTTP(s) para evitar problemas causados ​​por otros protocolos, como file:/ en el anterior artículo /, entonces debemos juzgar el contenido de salida. Por ejemplo, debería generar una imagen. Si el rastreo devuelve un fragmento de texto, no deberíamos devolverlo. De manera similar, si el rastreo de una dirección remota genera un error, debemos procesar de manera uniforme el contenido devuelto al usuario en lugar de devolver el contenido del servidor remoto directamente al usuario, porque esto proporcionará al atacante más información sobre el servidor remoto. servidor.

Además de procesar el contenido de salida, también necesitamos limitar la dirección de entrada, filtrar la IP de la intranet y restringir el acceso a la intranet. Tomando el código de muestra anterior como ejemplo, generalmente agregamos el siguiente procesamiento:

Omisión de enlace corto

En la mayoría de los casos, esto no es un problema, pero los atacantes no son personas comunes y corrientes. Hay dos formas de evitar esto. La primera es un enlace corto. El enlace corto primero apunta a la dirección del servicio de enlace corto y luego salta al servidor real. Si el atacante apunta a la dirección de intranet y luego realiza el procesamiento del enlace corto. El código anterior. Se determinará que la IP del servicio de enlace corto es una IP legal y pasará la verificación.

Hay dos formas de evitar esta omisión:

1. Determinar directamente la IP de la intranet según el HOST en el encabezado de respuesta devuelto por la solicitud.

2. Dado que la dirección redirigida aún requiere resolución DNS, solo necesita realizar la lógica de juicio de IP de la intranet cada vez que el dominio solicita resolución DNS.

Omitir la nueva vinculación de DNS

Otro método de omisión es aprovechar un ataque de nueva vinculación de DNS.

Cómo funciona la vinculación de DNS

Un atacante registra un nombre de dominio y lo envía a un servidor DNS controlado por el atacante. El servidor está configurado con un tiempo de respuesta de registro TTL muy corto para evitar que las respuestas se almacenen en caché. Cuando una víctima busca un nombre de dominio malicioso, el servidor DNS del atacante primero responde con la dirección IP del servidor que aloja el código del cliente malicioso. Por ejemplo, pueden dirigir el navegador de una víctima a un sitio web que contenga scripts JavaScript o Flash maliciosos para ejecutar en la computadora de la víctima.

El código de cliente malicioso proporcionará acceso adicional al nombre de dominio original. La misma política de origen permite estos accesos. Sin embargo, cuando el navegador de la víctima ejecute el script, creará una nueva solicitud DNS para el nombre de dominio y el atacante responderá con la nueva dirección IP. Por ejemplo, pueden responder utilizando una dirección IP interna o la dirección IP del objetivo en Internet.

En definitiva, la función del servidor DNS es devolver una IP diferente para cada resolución, de forma que al verificar la IP, la resolución DNS devolverá un valor legal, y cuando posteriormente se vuelva a solicitar el contenido , la resolución DNS devolverá la IP interna. Este tipo de ataque que aprovecha múltiples resoluciones de DNS se denomina ataque de revinculación de DNS.

Dado que los ataques de revinculación de DNS explotan múltiples resoluciones, es mejor combinar las dos resoluciones de DNS de verificación y raspado en una sola. Hay dos formas de prevenir este ataque:

1. la IP obtenida de la primera resolución DNS directamente para la resolución DNS de la segunda solicitud para eliminar el problema de la segunda resolución.

2. Determine directamente la resolución de la IP cuando se inicia la solicitud de rastreo. Si no coincide, la conexión se rechazará directamente.

Para la solución anterior, algunos desarrolladores encapsulan directamente el módulo ssrf-agent. Siempre que se pase el módulo, se puede realizar la función de análisis único y juicio múltiple. ejemplo de uso:

p>

Fin de la cita

Se admite SSRF. Se puede decir que SSRF es un ataque de vulnerabilidad de larga duración, que anteriormente fue utilizado por Baidu, Renren, 360 Search, etc. Hay casos correspondientes. En términos generales, los problemas de SSRF pueden existir en los siguientes escenarios y debemos prestar más atención:

1 Cuando las solicitudes de red se pueden iniciar desde el exterior, pueden existir vulnerabilidades de SSRF.

2. Solicitar recursos desde un servidor remoto (cargar desde URL, importar y exportar fuente RSS).

3. Funciones integradas de bases de datos (Oracle, MongoDB, MSSQL, Postgres, CouchDB).

4. Webmail (POP3, IMAP, SMTP) para recibir correos electrónicos de otros buzones.

5. Procesamiento de archivos, procesamiento de codificación, procesamiento de información de atributos (ffmpeg, ImageMagic, DOCX, PDF, XML).