
Laboratório educacional FastAPI que demonstra o CVE-2021-41773 (traversal de diretório e inclusão local de arquivos), com um servidor vulnerável, código corrigido e exemplos de payloads codificados para treinamento local de segurança.
Um laboratório FastAPI pequeno e autossuficiente que demonstra como a decodificação da entrada do usuário antes de validar os limites do sistema de arquivos pode levar a travessia de diretório e inclusão local de arquivos (LFI), modelado a partir dos problemas do Apache HTTP Server CVE-2021-41773.
%2e) e dupla (%252e)curluvicornInstale as dependências de execução:
pip install fastapi uvicorn
python -m venv venv
.\venv\Scripts\activate
pip install fastapi uvicorn
uvicorn vulnerable_app:app --port 8011
Abra http://127.0.0.1:8011/ no seu navegador — o endpoint raiz mostra payloads comuns e notas.
Para observar a correção, pare o servidor vulnerável e execute o servidor corrigido:
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 o servidor vulnerável, esses payloads podem retornar secret.txt. Contra o servidor corrigido, eles devem ser rejeitados (HTTP 403).
os.path.realpath().webroot pretendido — negue caso contrário.Isso impõe a ordem correta: decodificar → canonicalizar → autorizar.
Este repositório é apenas para uso educacional local. Não exponha o servidor vulnerável a redes públicas.
Licença MIT
Kunal Khandelwal — Pesquisador de Segurança, Segurança de Aplicações