Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
corsair_scan — Escáner automatizado de configuraciones incorrectas de CORS que prueba la inyección del encabezado Origin, la reflexión de comodines y la filtración de credenciales en aplicaciones web y APIs. | Kitploit
Herramientas/GitHubGitHub/santandersecurityresearch/corsair_scan
Escáneres de VulnerabilidadesPruebas de Seguridad de APIsSeguridad WebMala Configuración
GitHubsantandersecurityresearch/corsair_scan

corsair_scan

Escáner automatizado de configuraciones incorrectas de CORS que prueba la inyección del encabezado Origin, la reflexión de comodines y la filtración de credenciales en aplicaciones web y APIs.

Ver Repositorio

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
12215hace 5 añosRevisado por Kitploit

GitHub release Github all releases HitCount Total alerts Language grade: Python MIT license

corsair_scan

Bienvenido a Corsair_scan

Corsair_scan es una herramienta de seguridad para probar configuraciones incorrectas de Intercambio de Recursos de Origen Cruzado (CORS). CORS es un mecanismo que permite que recursos restringidos en una página web sean solicitados desde otro dominio fuera del dominio desde el cual se sirvió el primer recurso. Si esto no está configurado correctamente, dominios no autorizados pueden acceder a esos recursos.

¿Qué es CORS?

CORS es un mecanismo basado en cabeceras HTTP que permite a un servidor indicar cualquier otro origen (dominio, esquema o puerto) que no sea el suyo desde el cual un navegador debe permitir la carga de recursos. Funciona añadiendo nuevas cabeceras HTTP que permiten a los servidores describir qué orígenes están autorizados a leer esa información desde un navegador web.

CORS también depende de un mecanismo mediante el cual los navegadores realizan una solicitud "preflight" al servidor que aloja el recurso de origen cruzado, para comprobar que el servidor permitirá la solicitud real. En ese preflight, el navegador envía cabeceras que indican el método HTTP y las cabeceras que se utilizarán en la solicitud real.

El problema de seguridad más común y problemático al implementar CORS es la falta de validación/lista blanca de los solicitantes. Con demasiada frecuencia vemos que el valor de Access-Control-Allow-Origin se establece como '*'.

Desafortunadamente, este es el valor predeterminado y, como tal, permite que cualquier dominio en la web acceda a los recursos de ese sitio.

Según el Estándar de Verificación de Seguridad de Aplicaciones de OWASP (ASVS), el requisito 14.5.3 establece:

Verifique que la cabecera Access-Control-Allow-Origin de Intercambio de Recursos de Origen Cruzado (CORS) utilice una lista estricta de dominios y subdominios de confianza para comparar y no admita el origen "null".

¿Cómo funciona corsair_scan?

Corsair_scan funciona reenviando una solicitud (o lista de solicitudes) recibida como parámetro y luego inyectando un valor en la cabecera Origin. Dependiendo del contenido de la cabecera Access-Control-Allow-Origin en la respuesta a esta solicitud, podemos determinar si la configuración CORS es correcta o no. Hay tres escenarios que indican que CORS está mal configurado:

  • El origen falso enviado en la solicitud se refleja en Access-Control-Allow-Origin
  • El valor de Access-Control-Allow-Origin es *
  • El valor de Access-Control-Allow-Origin es null

Si se encuentra que CORS está mal configurado, comprobamos si la respuesta contiene la cabecera Access-Control-Allow-Credentials, lo que significa que el servidor permite incluir credenciales en solicitudes de origen cruzado.

A menudo, las configuraciones CORS utilizan comodines, por ejemplo, aceptando cualquier cosa bajo * ejemplo.com *. Esto significa que el origen domain.com.evil.com será aceptado ya que coincide con la expresión regular dada. Para intentar combatir esto, corsair_scan prueba cuatro escenarios:

  • Inyección de dominio falso: Establecemos la cabecera Origin a https://scarymonster.com, incluso si la solicitud original no tiene una cabecera Origin
  • Si la solicitud original tiene una cabecera Origin (para mayor claridad, supongamos que es https://example.com):
    • Inyección de pre-dominio: Concatenamos nuestro dominio falso al dominio original por la izquierda. En nuestro ejemplo, el origen se establecerá en https://scarymonsterexample.com
    • Inyección de post-dominio: Lo opuesto al pre-dominio, simplemente concatenación por la derecha. El origen será https://example.com.scarymonster.com
    • Inyección de subdominio: A veces la configuración CORS pone en lista blanca todos los subdominios bajo un dominio dado. Aunque no es un problema per se, si uno de los dominios es vulnerable a XSS, entonces puede ser un problema grave. El origen en este escenario será https://scarymonster.example.com

¿Cómo lo instalo?

Este proyecto fue desarrollado con Python 3.9, pero debería funcionar con cualquier versión de Python 3.x. La mejor manera de instalarlo es usando pip.

pip3 install corsair_scan --user

¿Cómo lo uso?

Corsair se puede usar tanto como módulo de Python como CLI.

Módulo Python

El método que realiza el escaneo CORS es corsair_scan. Aquí está su definición:

corsair_scan

Recibe una lista de solicitudes y un parámetro para habilitar/deshabilitar la verificación del certificado en la solicitud

Entrada:

  • data [List]: Una lista de solicitudes. Cada solicitud es un diccionario que contiene los datos relevantes para la solicitud:

    • url_data [Dict]: Este es un diccionario que contiene todos los datos relevantes para la solicitud:
      • url [String]: Esta es la url donde se envía la solicitud
      • verb [String]: El verbo para la solicitud (get, post, patch, delete, options...)
      • params [String]: El cuerpo enviado en la solicitud (si lo hay)
      • headers [Dict]: Este es un dict con todas las cabeceras incluidas en la solicitud
  • verify [Boolean] [Default: True]: Envía este valor a corsair_scan_single_url para cada solicitud

Salida:

  • final_report [List]: Contiene el informe completo de la prueba realizada. Si filter está establecido en true, también añade un resumen de la prueba al informe.
    • report [List]: Lista de informes individuales detallados con la prueba realizada
    • summary [Dict]: Resumen de los problemas detectados en el escaneo

Ejemplo

root@kitploit:~
import corsair_scan.corsair_scan as corsair
url_data = {}
data = []
verb =  'GET'
url = 'https://example.com/'
params = 'user=user1&password=1234'
headers = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
           'Accept-Language': 'en-GB,en;q=0.5', 'Connection': 'keep-alive', 'Upgrade-Insecure-Requests': '1',
           'Origin': 'https://example.com',
           'Host': 'example.com'}

url_data['verb'] = verb
url_data['url'] = url
url_data['params'] = params
url_data['headers'] = headers
data.append(url_data)

print (corsair.corsair_scan(data, verify=True))

Respuesta:

root@kitploit:~
{'report': [{'fake_origin': {'Access-Control-Allow-Origin': 'https://scarymonster.com',
                             'Origin': 'https://scarymonster.com',
                             'credentials': True,
                             'error': False,
                             'misconfigured': True,
                             'status_code': 200},
             'post-domain': {'Access-Control-Allow-Origin': 'https://example.com.scarymonster.com',
                             'Origin': 'https://example.com.scarymonster.com',
                             'credentials': True,
                             'error': False,
                             'misconfigured': True,
                             'status_code': 200},
             'pre-domain': {'Access-Control-Allow-Origin': 'https://scarymonsterexample.com',
                            'Origin': ' https://scarymonsterexample.com',
                            'credentials': True,
                            'error': False,
                            'misconfigured': True,
                            'status_code': 200},
             'sub-domain': {'Access-Control-Allow-Origin': 'https://scarymonster.example.com',
                            'Origin': 'https://scarymonster.example.com',
                            'credentials': True,
                            'error': False,
                            'misconfigured': True,
                            'status_code': 200},
             'url': 'https://example.com/',
             'verb': 'GET'}],
 'summary': {'error': [], 'misconfigured': [{'credentials': True,
                    'misconfigured_test': ['fake_origin',
                                           'sub-domain',
                                           'pre-domain',
                                           'post-domain'],
                    'status_code': 200,
                    'url': 'https://domain.com',
                    'verb': 'GET'}]}}

CLI

Como parte de la instalación del paquete pip, se instala una CLI. La sintaxis para ejecutar es la siguiente:

corsair FILE [-nv/--noverify][-r/--report]

La CLI necesita un archivo json con una lista de solicitudes para realizar el escaneo. Se proporciona un archivo de ejemplo como parte de las pruebas:

root@kitploit:~
[{
  "verb": "GET",
  "url": "https://example.com/",
  "params": "user=user1&password=1234",
  "headers": {
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
    "Accept-Language": "en-GB,en;q=0.5",
    "Connection": "keep-alive",
    "Upgrade-Insecure-Requests": "1",
    "Origin": "https://example.com",
    "Host": "example.com"
  }
}]

También hay dos parámetros opcionales:

  • -nv / --noverify: Para omitir la validación del certificado, si está probando contra un sitio con un certificado autofirmado
  • -r / --report: Guarda el informe como un archivo JSON

Ejemplo

Informe CLI

Hoja de Ruta

  • Lanzar corsair_scan como herramienta CLI ✅
  • Leer datos de URL desde un archivo de texto ✅
  • Mejorar el formato de informes

¿Quién está detrás?

Corsair_scan fue desarrollado por el equipo de Ingeniería de Seguridad de Santander UK, que son:

  • David Albone
  • Javier Domínguez Ruiz
  • Fernando Cabrerizo
  • Jonathan Strong
  • James Howieson
Descargar herramienta