Skip to content

Latest commit

 

History

History
48 lines (29 loc) · 2.04 KB

README.md

File metadata and controls

48 lines (29 loc) · 2.04 KB

Web | easy | Warmup

Информация

Даже в самом маленьком приложении можно найти баг, как хорошо что служба ИБ его нашла заранее.

Хотя для вас это будет разминкой. http://:3355

Деплой

cd deploy
docker-compose -p web_warmup_secrets up --build -d

Выдать участинкам

Архив из директории public/ и IP:PORT сервера

Описание

Задача представляет собой эксплуатацию простой SQL-инъекции и 'обход' простого WAF на Lua.

Решение

Для начала можно заметить очевидную SQL-инъекцию в Go-коде в параметре password.

Однако на уровне NGINX (proxy) на lua реализована проверка данного HTTP-параметра, которая не позволяет сделать SQL-инъекцию.

Здесь можно воспользоваться фактом, что URL-парсеры по-разному обрабатывают ';' в параметрах URL — в ранних RFC советуют считать ';' таким же разделителем, как и '&'.

Go до версии 1.17 принимал ';' как разделитель, в то время как nginx lua-парсер не считает это разделителем.

Тогда URL с параметрами вида ?id=1;password=' OR пройдет проверку, т.к. код на стороне NGINX не найдет параметр password, в отличие от go-бэкенд'а.

Далее осталось написать UNION sql-инъекцию для чтения локального файла.

Эксплоит

Флаг

CUP{s2b382s0cb9a7cr2d670b8f94s58q8el8binje17}