
Laboratorio educativo FastAPI che dimostra il directory traversal e la local file inclusion associati a CVE-2021-41773, con un server vulnerabile, codice corretto ed esempi di payload codificati per la formazione locale sulla sicurezza.
Un piccolo laboratorio FastAPI autonomo che dimostra come la decodifica dell'input utente prima della validazione dei confini del filesystem possa portare a directory traversal e local file inclusion (LFI), ispirato ai problemi del server Apache HTTP CVE-2021-41773.
%2e) e doppia (%252e)curluvicornInstalla le dipendenze runtime:
pip install fastapi uvicorn
python -m venv venv
.\venv\Scripts\activate
pip install fastapi uvicorn
uvicorn vulnerable_app:app --port 8011
Apri http://127.0.0.1:8011/ nel browser — l'endpoint root mostra i payload comuni e le note.
Per osservare la correzione, ferma il server vulnerabile ed esegui il server patchato:
uvicorn patched_app:app --port 8011
curl --path-as-is http://localhost:8011/icons/test.txt
curl --path-as-is "http://localhost:8011/icons/.%2e/secret.txt"
curl --path-as-is "http://localhost:8011/icons/.%252e/secret.txt"
Contro il server vulnerabile questi payload possono restituire secret.txt. Contro il server patchato dovrebbero essere rifiutati (HTTP 403).
os.path.realpath().webroot prevista — altrimenti nega.Questo impone l'ordine corretto: decodifica → canonicalizzazione → autorizzazione.
Questo repository è solo per uso locale ed educativo. Non esporre il server vulnerabile su reti pubbliche.
Licenza MIT
Kunal Khandelwal — Ricercatore di Sicurezza, Application Security