
Автоматизированный конвейер проверки XSS для CVE-2020-3580 с обнаружением на основе Shodan, сопоставлением области действия и canary-тестированием с утверждением для конечных точек Cisco ASA/FTD WebVPN SAML.
Отражённый XSS в Cisco ASA / FTD в конечной точке WebVPN SAML SP ACS (/+CSCOE+/saml/sp/acs). Исправлен в cisco-sa-asaftd-xss-multiple-FCB3vPZe.
Этот репозиторий содержит:
xss.html — PoC, проверяемая человеком для авторизованных целей.src/ — конвейер обнаружения и проверки с учётом области действия.docs/ — методология и этика.┌──────────┐ ┌──────────────┐ ┌────────────────────┐ ┌────────────────┐ ┌──────────────┐
│ Shodan │ → │ scope match │ → │ manual approval │ → │ canary check │ → │ MD report │
│ (3 dorks)│ │ (H1, BC, +) │ │ deny-by-default │ │ no JS exec │ │ drafts │
└──────────┘ └──────────────┘ └────────────────────┘ └────────────────┘ └──────────────┘
Каждый этап записывает проверяемый JSON-артефакт и выполняется независимо.
Валидатор не вызывает alert(). Он отправляет уникальную канареечную строку, содержащую сырые <>"', и оценивает тело ответа. Подтверждённые срабатывания получают черновик Markdown с включённым оригинальным xss.html для проверки рецензентом программы в своём браузере.
Валидация ограничена одобрением. Совпадение области действия — это только отправная точка; текущее описание программы является контрактом. Перед активной валидацией проверьте политику программы и установите флаги одобрения цели в 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 игнорируется git. .gitignore блокирует любые файлы, соответствующие *.env (кроме *.env.example), а также data/ и reports/, чтобы списки целей и выдержки валидации не попадали в публичный репозиторий.
Команда по умолчанию 'end-to-end' намеренно останавливается перед валидацией:
python -m src.pipeline run
Это записывает data/validation_approvals.json со всеми флагами одобрения, установленными в false. Проверьте каждое текущее описание программы и установите все три поля в 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. Добавление H1_USERNAME + H1_API_TOKEN в creds.env может дополнить это свежими данными из HackerOne Hacker API, когда установлено H1_LIVE=true.
Всё находится в 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.