Skip to content
KitploitKITPLOIT
StrumentiBlog
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-90817 — PoC Python per CVE-2026-90817, un RCE non autenticato su REDCap tramite routing passthrough dei survey e injection di file-path, con un laboratorio Docker e target protetti da allowlist. | Kitploit
Strumenti/GitHubGitHub/exdev994/cve-2026-90817
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingRed TeamingStrumento di Accesso RemotoSviluppo PayloadLab e Pratica
GitHubexdev994/cve-2026-90817

CVE-2026-90817

PoC Python per CVE-2026-90817, un RCE non autenticato su REDCap tramite routing passthrough dei survey e injection di file-path, con un laboratorio Docker e target protetti da allowlist.

7h 19m faNon ancora revisionato
Vedi Repository

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-90817 — REDCap RCE non autenticato PoC (Solo uso autorizzato)

SOLO USO AUTORIZZATO. Sei responsabile dell'autorizzazione legale di ogni target. L'uso non autorizzato contro istanze REDCap di terze parti è illegale.

Riepilogo della vulnerabilità

CampoValore
CVECVE-2026-90817
ProdottoVanderbilt University REDCap
CVSS9.8 Critico
AuthNon autenticato (richiede un hash di survey pubblico valido)
AffectedREDCap 13.3.0 e versioni successive
Fixed16.0.49 LTS, 17.3.10 LTS, 17.4.4 Standard Release
CWECWE-73 (Controllo esterno di nome file o percorso), CWE-94 (Iniezione di codice)

Catena di attacco:

  1. Ottenere un hash di survey pubblico valido da un'istanza REDCap.
  2. Manipolare le richieste HTTP per raggiungere una route controller non prevista tramite il routing passthrough della survey.
  3. Fornire un parametro file-path/stream appositamente creato durante l'elaborazione del Data Import.
  4. Ottenere l'esecuzione di codice remoto sul server REDCap.

Struttura del progetto

root@kitploit:~
CVE-2026-90817/
├── poc_cve_2026_90817.py   # PoC (single-target, allowlist-guarded)
├── docker-compose.yml       # MySQL + PHP-Apache lab stack
├── redcap-init/
│   ├── database.php         # REDCap DB config for lab
│   └── php.ini              # PHP settings for lab
├── redcap-src/              # <-- extract REDCap source here (you provide)
├── targets.txt              # Authorized targets: one host per line
├── payload.txt              # Sample file for upload mode
├── requirements.txt         # Python dependencies
└── poc_results.txt          # Generated after PoC run

Prerequisiti

  • Docker e Docker Compose
  • Python 3.9+
  • Sorgente zip di REDCap (versione vulnerabile, ad es. 14.x o 15.x) dal Vanderbilt REDCap consortium

REDCap è software con licenza. Devi ottenerlo tramite canali ufficiali per il tuo laboratorio.

Configurazione del laboratorio

1. Estrarre il sorgente REDCap

root@kitploit:~
mkdir -p redcap-src
# Extract your redcap.zip contents into redcap-src/
# The directory should contain index.php, redcap_vX.X.X/, etc.

2. Avviare l'ambiente di laboratorio

root@kitploit:~
docker compose up -d

Attendere il superamento dell'healthcheck di MySQL, quindi aprire:

root@kitploit:~
http://localhost:8080

Completare la procedura guidata di installazione di REDCap utilizzando queste impostazioni del database (preconfigurate in redcap-init/database.php):

ImpostazioneValore
Hostdb
Databaseredcap
Userredcap
Passwordredcap123

3. Creare una survey pubblica

  1. Accedere a REDCap come admin.
  2. Creare un nuovo progetto.
  3. Abilitare "Use surveys in this project".
  4. Aprire il link della survey pubblica e copiare l'hash dall'URL (parametro s=).

Esempio di URL della survey:

root@kitploit:~
http://localhost:8080/surveys/?s=ABC123XYZ

Hash della survey: ABC123XYZ

Reverse Engineering (compilare i placeholder)

L'advisory pubblico non divulga la route controller esatta o il nome del parametro. Dopo aver configurato il laboratorio, eseguire il RE su redcap-src/ e compilare le costanti TODO in poc_cve_2026_90817.py:

root@kitploit:~
VULNERABLE_ROUTE = "TODO_CONTROLLER_ROUTE"   # controller route via survey passthrough
FILE_PATH_PARAM = "TODO_FILE_PATH_PARAM"     # file-path/stream parameter name
WEBROOT_PATH = "/var/www/html/redcap/"       # webroot inside container
UPLOADER_NAME = "x.php"                      # PHP uploader filename

Guida al RE

Cercare il routing passthrough della survey:

root@kitploit:~
grep -rn "passthrough\|survey.*route\|Routes::" redcap-src/ --include="*.php" | head -50
grep -rn "Controller" redcap-src/ --include="*.php" | grep -i "import\|survey" | head -50

Cercare la gestione file-path/stream del Data Import:

root@kitploit:~
grep -rn "file_path\|file-path\|stream\|DataImport\|data_import" redcap-src/ --include="*.php" | head -50
grep -rn "fopen\|file_get_contents\|include\|require" redcap-src/ --include="*.php" | grep -i "import" | head -50

Impostare STAGE1_SUCCESS_MARKER su una stringa presente in una risposta riuscita della fase 1 (opzionale ma consigliato).

Installare le dipendenze Python

root@kitploit:~
pip install -r requirements.txt

Eseguire il PoC

Lo script rifiuta i target che non sono né host di laboratorio (localhost, 127.0.0.1, ::1, *.local, *.test, *.localhost) né elencati in targets.txt.

Hash della survey

CVE-2026-90817 è non autenticato — non è necessario alcun login. L'unica precondizione è un hash di survey pubblico valido (dall'URL della survey ?s=HASH).

Lo strumento può scoprire automaticamente l'hash della survey effettuando lo scraping delle pagine pubbliche del target (best-effort). Controlla gli endpoint REDCap comuni (/, /redcap/, /index.php, /surveys/) alla ricerca di link /surveys/?s=HASH. Questo funziona solo se il target espone pubblicamente i link delle survey (configurazione errata). Per istanze REDCap configurate correttamente, fornire l'hash manualmente tramite --hash.

  • Modalità single-target: --hash è opzionale (scoperta automatica se omesso)
  • Modalità batch: scoperta automatica per ogni target; i target che non espongono link di survey vengono saltati

Target autorizzati (non-lab)

Per target non-lab, creare targets.txt con un host per riga (FQDN o IP). Sei responsabile dell'autorizzazione legale di ogni host elencato.

root@kitploit:~
# targets.txt
redcap.client.example.com
10.0.0.5
192.168.1.100

Esempi

Target di laboratorio con hash esplicito:

root@kitploit:~
python poc_cve_2026_90817.py \
  --target http://localhost:8080 \
  --hash ABC123XYZ \
  --mode both \
  --out poc_results.txt

Target di laboratorio con hash scoperto automaticamente:

root@kitploit:~
python poc_cve_2026_90817.py \
  --target http://localhost:8080 \
  --mode both \
  --out poc_results.txt

Modalità batch (itera su tutti gli host in targets.txt)

Aggiungere --batch per sfruttare automaticamente ogni host elencato in targets.txt. Lo strumento scopre automaticamente l'hash della survey per ogni target effettuando lo scraping delle pagine pubbliche. Lo strumento stampa tutti i target e chiede conferma prima di iniziare (usare --yes per saltare il prompt negli script).

root@kitploit:~
python poc_cve_2026_90817.py \
  --batch \
  --mode both \
  --out poc_results.txt

La porta viene ereditata da --target (predefinita 8080). Per usare una porta diversa, impostare --target http://placeholder:443/ prima di --batch.

Il risultato di ogni target viene aggiunto al file di output. Alla fine viene stampato un riepilogo: N success, M failed, T total.

Argomenti

ArgomentoPredefinitoDescrizione
--targethttp://localhost:8080URL di base del target
--hash(opzionale)Hash della survey pubblica. Se omesso, scoperto automaticamente tramite scraping delle pagine pubbliche (best-effort).
--allowlisttargets.txtFile dei target, un host per riga
--batchoffItera su tutti gli host nel file dei target e sfrutta ciascuno
--yesoffSalta il prompt di conferma del batch
--modebothid, upload, o both
--outpoc_results.txtFile di log dei risultati
--timeout30Timeout HTTP (secondi)
--upload-localpayload.txtFile locale da caricare
--upload-remoteuploaded_payload.txtNome file remoto sotto la webroot
--skip-placeholder-checkoffDry-run del flusso HTTP senza costanti TODO compilate

Nota: la scoperta automatica funziona solo su target che espongono pubblicamente i link delle survey. Per la maggior parte delle istanze REDCap, fornire --hash manualmente.

Output previsto

In caso di successo, stdout mostra:

root@kitploit:~
[0xNuts] CVE-2026-90817 PoC -- AUTHORIZED USE ONLY
[0xNuts] You are responsible for legal authorization of every target.
[0xNuts] Using survey hash: ABC123XYZ
[0xNuts] Stage 1: route manipulation -> ...
[0xNuts] Stage 2: file-path injection -> ...
[0xNuts] id output:
uid=33(www-data) gid=33(www-data) groups=33(www-data)
[0xNuts] uploaded to /var/www/html/redcap/uploaded_payload.txt
[0xNuts] Result logged to poc_results.txt

I risultati vengono aggiunti a poc_results.txt:

root@kitploit:~
[2026-09-21T03:20:00Z]
target=http://localhost:8080/
survey_hash=ABC123XYZ
status=success
id_output=uid=33(www-data) gid=33(www-data) groups=33(www-data)
uploaded_files=/var/www/html/redcap/uploaded_payload.txt
notes=mode=both
------------------------------------------------------------

Mitigazione

Aggiornare a REDCap 16.0.49 LTS, 17.3.10 LTS, o 17.4.4 Standard Release (a seconda dei casi).

Hardening aggiuntivo:

  • Limitare l'esposizione pubblica delle survey dove non necessario.
  • Monitorare le richieste HTTP dirette alle route delle survey e agli endpoint di data import.
  • Rivedere la validazione lato server dei parametri file-path/stream nei gestori di import.

Riferimenti

  • CVE-2026-90817 (CVE.org)
  • Securifera Advisories
  • Finder: Ryan Wincey (@rwincey, Securifera)
Scarica lo strumento