
Laboratoire pédagogique FastAPI illustrant la CVE-2021-41773 (directory traversal et local file inclusion), avec un serveur vulnérable, un code corrigé et des exemples de payloads encodés pour une formation locale à la sécurité.
Un petit laboratoire FastAPI autonome montrant comment le décodage des entrées utilisateur avant la validation des limites du système de fichiers peut mener à un traversement de répertoire et à une inclusion locale de fichier (LFI), inspiré des problèmes du serveur Apache HTTP CVE-2021-41773.
%2e) et à double encodage (%252e)curluvicornInstaller les dépendances d'exécution :
pip install fastapi uvicorn
python -m venv venv
.\venv\Scripts\activate
pip install fastapi uvicorn
uvicorn vulnerable_app:app --port 8011
Ouvrez http://127.0.0.1:8011/ dans votre navigateur — le point de terminaison racine affiche les charges utiles courantes et des remarques.
Pour observer le correctif, arrêtez le serveur vulnérable et lancez le serveur corrigé :
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"
Contre le serveur vulnérable, ces charges utiles peuvent renvoyer secret.txt. Contre le serveur corrigé, elles doivent être rejetées (HTTP 403).
os.path.realpath().webroot prévu — refuser sinon.Cela impose un ordre correct : décoder → canoniser → autoriser.
Ce dépôt est réservé à un usage pédagogique local uniquement. N'exposez pas le serveur vulnérable sur des réseaux publics.
Licence MIT
Kunal Khandelwal — Chercheur en sécurité, Sécurité des applications