
Laboratorio educativo de FastAPI que demuestra el recorrido de directorios y la inclusión local de archivos de CVE-2021-41773, con un servidor vulnerable, código parcheado y ejemplos de payloads codificados para la formación local en seguridad.
Un pequeño laboratorio FastAPI autónomo que demuestra cómo decodificar la entrada del usuario antes de validar los límites del sistema de archivos puede conducir a un directory traversal y a la inclusión local de archivos (LFI), modelado a partir de los problemas del servidor Apache HTTP CVE-2021-41773.
%2e) y doble codificación (%252e)curluvicornInstalar dependencias de ejecución:
pip install fastapi uvicorn
python -m venv venv
.\venv\Scripts\activate
pip install fastapi uvicorn
uvicorn vulnerable_app:app --port 8011
Abrir http://127.0.0.1:8011/ en el navegador — el endpoint raíz muestra payloads comunes y notas.
Para observar la corrección, detenga el servidor vulnerable y ejecute el servidor parcheado:
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"
Contra el servidor vulnerable, estos payloads pueden devolver secret.txt. Contra el servidor parcheado deberían ser rechazados (HTTP 403).
os.path.realpath().webroot previsto — denegar en caso contrario.Esto impone el orden correcto: decodificar → canonicalizar → autorizar.
Este repositorio es solo para uso educativo y local. No exponga el servidor vulnerable a redes públicas.
MIT License
Kunal Khandelwal — Security Researcher, Application Security