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

в 17:36, , рубрики: ctf, ralf_web, информационная безопасность

image

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

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

  • 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

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

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.

Автор: RalfHacker

Источник


* - обязательные к заполнению поля