
Cisco ASA XSS CVE-2020-3580
Cisco ASA / FTD의 WebVPN SAML SP ACS 엔드포인트(/+CSCOE+/saml/sp/acs)에서 발생하는 반사형 XSS입니다.
cisco-sa-asaftd-xss-multiple-FCB3vPZe에서 패치되었습니다.
이 저장소에는 다음이 포함되어 있습니다:
xss.html — 승인된 대상에 대해 사람이 직접 검증할 수 있는 PoCsrc/ — 탐색 및 범위 인식 검증 파이프라인docs/ — 방법론 및 윤리┌──────────┐ ┌──────────────┐ ┌────────────────────┐ ┌────────────────┐ ┌──────────────┐
│ Shodan │ → │ scope match │ → │ manual approval │ → │ canary check │ → │ MD report │
│ (3 dorks)│ │ (H1, BC, +) │ │ deny-by-default │ │ no JS exec │ │ drafts │
└──────────┘ └──────────────┘ └────────────────────┘ └────────────────┘ └──────────────┘
각 단계는 검사 가능한 JSON 산출물을 생성하며 독립적으로 실행됩니다.
검증기는 alert()를 실행하지 않습니다. 이스케이프되지 않은 <>"'를 포함하는 고유한 카나리 문자열을 POST하고 응답 본문을 판정합니다. 확인된 히트는 원본 xss.html이 포함된 Markdown 초안으로 작성되며, 프로그램 리뷰어가 자신의 브라우저에서 직접 검증할 수 있습니다.
검증은 승인 게이트 방식입니다. 범위 매칭은 출발점일 뿐이며, 현재 프로그램 브리프가 계약입니다. 활성 검증을 수행하기 전에 프로그램 정책을 검토하고 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 # add your Shodan key, optionally H1/BC tokens
creds.env는 gitignore에 포함됩니다. .gitignore는 *.env와 일치하는 모든 파일(*.env.example 제외)과 data/ 및 reports/를 차단하여 대상 목록과 검증 발췌문이 공개 저장소에 포함되지 않도록 합니다.
기본 엔드투엔드 명령은 의도적으로 검증 전에 중지됩니다:
python -m src.pipeline run
이 명령은 모든 승인 플래그가 false로 설정된 data/validation_approvals.json을 작성합니다. 각 현재 프로그램 브리프를 검토하고, 대상이 여전히 범위 내에 있고 이러한 유형의 검증이 허용되는 경우에만 세 필드를 모두 true로 설정하세요:
{
"manual_policy_reviewed": true,
"automated_testing_allowed": true,
"cve_testing_allowed": true
}
그런 다음 검증을 수행하고 보고서 초안을 생성합니다:
python -m src.pipeline validate
python -m src.pipeline report
또는 단계별로 실행합니다:
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
비공개 랩 대상 전용으로, validate --allow-unapproved는 승인 파일을 우회합니다. 인증서 검증이 불가능한 레거시 장비의 경우 validate --allow-insecure-tls는 해당 실행에 한해 TLS 검증을 비활성화합니다.
scope 단계는 API 키 없이도 동작합니다. arkadiyt/bounty-targets-data에서 데이터를 가져옵니다. creds.env에 H1_USERNAME + H1_API_TOKEN을 추가하면, H1_LIVE=true가 설정된 경우 HackerOne Hacker API의 최신 데이터로 이를 보강할 수 있습니다.
모든 설정은 creds.env에 있습니다. 전체 목록은 creds.env.example을 참조하세요. 알아둘 가치가 있는 설정 항목:
SCOPE_PLATFORMS — 쉼표로 구분합니다. 기본값은 hackerone,bugcrowd입니다. 더 넓은 적용 범위를 원한다면 intigriti와 yeswehack을 추가하세요.TARGET_RPM — 호스트당 분당 요청 수입니다. 기본값은 10입니다. 이유 없이 올리지 마세요.TLS_VERIFY — 기본값은 true입니다.REQUIRE_VALIDATION_APPROVAL — 기본값은 true입니다.docs/ETHICS.md — 범위 매칭이 허용하는 것과 허용하지 않는 것, 그리고 검증기가 의도적으로 수행하지 않는 일에 대해 설명합니다.docs/METHODOLOGY.md — 반사 등급 평가가 작동하는 방식과 각 단계가 존재하는 이유에 대해 설명합니다.대규모 익스플로잇 도구가 아닙니다. 0day가 아닙니다. 제출 전에 플랫폼의 프로그램 브리프를 읽는 것을 대체하지 않습니다. 범위 매처는 출발점일 뿐이며, 정책 텍스트가 계약입니다.
MIT. LICENSE를 참조하세요.