Хабрахабр

Natas Web. Прохождение CTF площадки, направленной на эксплуатацию Web-уязвимостей

image

Каждый уровень имеет доступ к паролю следующего уровня. В данной статье мы разберемся с эксплуатацией некоторых WEB-узвимостей на примере прохождения варгейма Natas. Например, пароль для natas5 хранится в файле /etc/natas_webpass/natas5 и доступен для чтения только для пользователей natas4 и natas5.
Все пароли также хранятся в файлах /etc/natas_webpass/.

Организационная информация

Специально для тех, кто хочет узнавать что-то новое и развиваться в любой из сфер информационной и компьютерной безопасности, я буду писать и рассказывать о следующих категориях:

  • PWN;
  • криптография (Crypto);
  • cетевые технологии (Network);
  • реверс (Reverse Engineering);
  • стеганография (Stegano);
  • поиск и эксплуатация WEB-уязвимостей.

Вдобавок к этому я поделюсь своим опытом в компьютерной криминалистике, анализе малвари и прошивок, атаках на беспроводные сети и локальные вычислительные сети, проведении пентестов и написании эксплоитов.

Также ваши личные просьбы, вопросы, предложения и рекомендации рассмотрю лично и отвечу всем. Чтобы вы могли узнавать о новых статьях, программном обеспечении и другой информации, я создал канал в Telegram и группу для обсуждения любых вопросов в области ИиКБ.

Автор этого документа не несёт никакой ответственности за любой ущерб, причиненный кому-либо в результате использования знаний и методов, полученных в результате изучения данного документа.
Вся информация представлена исключительно в образовательных целях.

level 0

Просматриваем исходный код страницы и проверяем комментарии.

image

Находим пароль.

Очень часто при разработке сайтов разработчики комментируют для сеюя различную вспомогательную информацию, в том числе и данные для авторизации.

level 1

Снова просматриваем исходный код страницы, но на нажатие правой клавиши мыши назначено javascript событие, которые не позволяет сызвать контекстное меню.

image

Для просмотра страницы можно ипользоватть горячие клавиши браузера, тогда событие нажатия правой клавиши мыши не сработает.

image

Находим пароль.

Как вариант(иногда приоритетней), можно просто скачать всю страницу и просмотреть код.

wget --http-user=natas1 --http-password=gtVrDuiDfck831PqWsLEZy5gyDz1clto http://natas1.natas.labs.overthewire.org

image

level 2

Снова просматриваем исходный код страницы, замечаем, что на страницу загружается картинка.

image

Наблюдаем, что эта дирректоря непроиндексирована и доступна пользователям. Зайдем в дирректорию, откуда происходит загрузка картинки.

image

Забираем пароль.

image

Или в данной дирректории должен находиться файл index.html. Для того, чтобы избежать просмотр файлов в дирректории, в настройках сервера (в данном случае /etc/apche2/httpd.conf) должен стоять запрет на индескирование файлов.

level 3

Снова просматриваем исходный код страницы, там нет ничего интересного. Вторым пунктом после просмотра исходного кода, является сканирование файлов и дирректорий. В качестве параметеров утилиты dirb укажем пользователя и пароль для http-аутентификации.

image

Файл robots.txt содержит список дирректорий и файлов, который запрещены для просмотра роботам-поисковикам (например google и yandex).

image

Зайдем в скрытую дирректурию на сайте, найдем файл и заберем пароль.

image

image

Как аналог, можно использовать утилиты dirsearch, или burpsuite.

level 4

Сервер сообщает, с какой страницы перешли и говорит с какой нужно перейти. Эти данные он может проверить только в заголовке протокола HTTP.

image

Следует изменить поле Referer – именно оно показывает откуда мы перешли. В браузере выбирем панель инутрументов → сеть → прошлый запрос и «изменить и отправить».

image

Осталось забрать пароль.

image

Данное действие burpsuite.

Это самые редко- фильтруемые пользовательские данные. Необходмо постоянно просматривать, какие HTTP поля просматривает Web-Сервер.

level 5

Сервис сообщает, что мы не залогинины. То есть он хранит данные нашей авторизации. Единственное место где Это можно передавать: сессия cookies.

image

Посмотрим кукисы (для удобства лучше установить расширения в браузере), и изменим значение параметра loggedin на 1.

image

Перезагрузим страницу и заберем пароль.

image

Данный вид уязвимости относится к категории Broken Authentication and Session Management.

level 6

Данный сервис предоставляет нам исходный код для анализа.

image

Секрет, который мы должны ввести, инклудится (подключается из файла).

image

Так как данные файлы содержат код php, то они
отображаются, только если их скачивать. Переходим по адресу этого файла на сервере и получаем
секрет.

image

Отправляем секрет, получаем пароль.

level 7

Перейдя по обеим ссылкам, замечаем какион образом они загружаются. Название файла на сервере передаётся в GET параметре pages.

image

Попробуем указать в качестве параметра путь к файлу /etc/passwd.

image

И нам говорят, где забрать пароль.

image

Данная уязвимость относится к категории LFI.

level 8

Предоставлен исходный код сервиса. Хранится закодированная строка и способ кодирования.

image

Необходимо раскодировать в обратном порядке:

  1. перевести из hex-вида в бинарное представление;
  2. перевернуть строку;
  3. декодировать base64.

<?php
$secret = "3d3d516343746d4d6d6c315669563362";
echo base64_decode(strrev(hex2bin($secret)))."\n";
?>

image

Отправляем секрет и получаем пароль.

image

level 9

Из разбора исходного кода становится ясно, что пользовательские данные передаются в командную строку для поиска данных в файле.

image

Если передать в запрос строку, к примеру: « || ls # », то полный запрос станет таким «grep -i || ls # dictionary.txt». Так как данные не фильтруются, то можно собрать конвейер и выполнить иные команды ОС. е. Все, что после || – выполнится с ошибкой, а после # – будет закомментировано, т. мы получаем только вывод команды ls.

image

Таким образом читаем файл: «|| cat /etc/natas_webpass/natas10 #».

image

Данная уязвимость относится к категории OS Command Injection.

level 10

Из разбора исходного кода становится ясно, что пользовательские данные передаются в командную строку для поиска данных в файле.

image

Т.о. Задача такая же, как и на уровне 9, только теперь присутствует фильтр. Можно лигитимно прочитать файл! из запроса исчезнут знаки: «;»,«|»,«&». Предположим, что в нашем пароле есть символ «z»: « z /etc/natas_webpass/natas11 # ».

image

Вы можете присоединиться к нам в Telegram. Продолжение следует.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть