
Cisco ASA XSS CVE-2020-3580
XSS reflejado en Cisco ASA / FTD en el endpoint WebVPN SAML SP ACS
(/+CSCOE+/saml/sp/acs). Parcheado en
cisco-sa-asaftd-xss-multiple-FCB3vPZe.
Este repositorio contiene:
xss.html — un PoC verificable por humanos para objetivos autorizados.src/ — un pipeline de descubrimiento y validación con conocimiento del alcance.docs/ — metodología y ética.┌──────────┐ ┌──────────────┐ ┌────────────────────┐ ┌────────────────┐ ┌──────────────┐
│ Shodan │ → │ scope match │ → │ manual approval │ → │ canary check │ → │ MD report │
│ (3 dorks)│ │ (H1, BC, +) │ │ deny-by-default │ │ no JS exec │ │ drafts │
└──────────┘ └──────────────┘ └────────────────────┘ └────────────────┘ └──────────────┘
Cada etapa escribe un artefacto JSON inspeccionable y se ejecuta de forma independiente.
El validador no ejecuta alert(). Envía una cadena canary única
que contiene <>"' sin procesar y califica el cuerpo de la respuesta. Los aciertos confirmados obtienen un
borrador en Markdown con el xss.html original incluido para que el revisor del programa
lo verifique en su propio navegador.
La validación está sujeta a aprobación. Una coincidencia de alcance es solo un punto de partida; el
brief del programa actual es el contrato. Antes de la validación activa, revisa la
política del programa y establece las banderas de aprobación del objetivo en
data/validation_approvals.json.
git clone https://github.com/cruxN3T/CVE-2020-3580
cd CVE-2020-3580
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp creds.env.example creds.env
$EDITOR creds.env # agrega tu clave de Shodan, opcionalmente tokens de H1/BC
creds.env está en gitignore. El .gitignore bloquea cualquier archivo que coincida con *.env
(excepto *.env.example), además de data/ y reports/ para mantener las listas de objetivos
y extractos de validación fuera del repositorio público.
El comando predeterminado de extremo a extremo se detiene intencionalmente antes de la validación:
python -m src.pipeline run
Eso escribe data/validation_approvals.json con todas las banderas de aprobación establecidas en
false. Revisa cada brief de programa actual y establece los tres campos a true
solo cuando el objetivo aún está dentro del alcance y este tipo de validación está permitido:
{
"manual_policy_reviewed": true,
"automated_testing_allowed": true,
"cve_testing_allowed": true
}
Luego valida y genera borradores de informes:
python -m src.pipeline validate
python -m src.pipeline report
O etapa por etapa:
python -m src.pipeline discover # Shodan → data/shodan_hits.json
python -m src.pipeline scope # match → data/in_scope.json
python -m src.pipeline approve-template # → data/validation_approvals.json
python -m src.pipeline validate # approved canary checks only
python -m src.pipeline report # → reports/<host>__CVE-2020-3580.md
Solo para objetivos de laboratorio privados, validate --allow-unapproved omite el
archivo de aprobación. Para dispositivos antiguos donde la validación de certificados es imposible,
validate --allow-insecure-tls desactiva la verificación TLS para esa ejecución.
La etapa scope funciona sin ninguna clave de API — obtiene datos de
arkadiyt/bounty-targets-data. Agregar H1_USERNAME + H1_API_TOKEN a
creds.env puede aumentarlo con datos frescos de la API de Hacker de HackerOne cuando
H1_LIVE=true está establecido.
Todo está en creds.env. Consulta creds.env.example para la lista completa.
Los parámetros que vale la pena conocer:
SCOPE_PLATFORMS — separados por comas. Por defecto hackerone,bugcrowd. Agrega
intigriti y yeswehack si deseas una cobertura más amplia.TARGET_RPM — solicitudes por minuto por host. Por defecto 10. No aumentes esto
sin una razón.TLS_VERIFY — por defecto true.REQUIRE_VALIDATION_APPROVAL — por defecto true.docs/ETHICS.md — qué autoriza y qué no autoriza una coincidencia de alcance,
y qué hace deliberadamente el validador.docs/METHODOLOGY.md — cómo funciona la calificación de reflexión
y por qué existe cada etapa.No es una herramienta de explotación masiva. No es un 0day. No es un sustituto de leer el brief del programa en la plataforma antes de enviar. El emparejador de alcance es un punto de partida; el texto de la política es el contrato.
MIT. Consulta LICENSE.