Разбираем третью задачку из нашего соревнования CTF. Задание называется traverser, 100 баллов за флаг.
Ссылка ведёт на URL:
http://challenge01.root-me.org/web-serveur/ch15/ch15.php
Нам предлагают пройти одно из испытаний на root-me.org.
Ссылки
Решение
Задача на эксплуатацию уязвимости из разряда Directory traversal attack или Path Traversal.
Path Traversal - получение доступа к файлам и каталогам, которые расположены вне пределов, определенных конфигурацией. Путем манипулирования переменными, которые указывают на положение файлов, с помощью последовательностей "../" и их вариаций, может быть получен доступ к любым файлам и каталогам, имеющимся в системе.
Проходим по URL:
Мы видим некую фотогалерею. При клике на меню в URL меняется переменная galerie. galerie=apps, galerie=emotes, galerie=actions.
Предположим, что значение переменной - это путь к папке. Попробуем подняться на уровень выше. Заменим переменную на galerie=./
http://challenge01.root-me.org/web-serveur/ch15/ch15.php?galerie=./
Получили список директорий с фотками. Присмотримся - есть одна странная папка, которая не отображается в меню - "86hwnX...". Смотрим код страницы.
86hwnX2r - вот полное название папки.
Попробуем посмотреть что в ней лежит:
http://challenge01.root-me.org/web-serveur/ch15/ch15.php?galerie=86hwnX2r
Да, есть картинки и ещё что-то с названием "passwo...". Снова смотрим код страницы.
password.txt - вот что за файлик лежит в папке.
Откроем его.
http://challenge01.root-me.org/web-serveur/ch15/galerie/86hwnX2r/password.txt
А вот и флаг:
kcb$!Bx@v4Gs9Ez
Безопасность
- Валидируйте переменные, которые указывает пользователь.
- Не используйте в параметрах названия директорий.