![]() |
Здравствуйте. Хочу представить вашему вниманию очередную площадку для тренеровок в области web-хакинга.
Practical Website Hacking Ссылка на мероприятие: http://ctf.infosecinstitute.com/ctf2/ Представлено всё в формате CTF, есть 13 уровней, на каждом уровне дано задание. Оформлено всё довольно приятно, слева вверху выпадающий список уровней (можно сразу приступить к любому). В центре экрана - задание. В левом нижнем углу есть название типа уязвимости, которой нужно пользоваться, и её номер в OWASP-TOP10. Внизу есть кнопка с подсказками. Задания разные: XSS, LFI, CSRF, инъекции, работа с php, обход фильтров, blacklist и прочее. В общем, хорошо подойдёт тем, кто представляет, что такое уязвимости, но не имеет достаточно практики. Write Up Далее пойдут спойлеры, распишу, как я проходил данную площадку. Кто хочет порешать самостоятельно, не читайте .SpoilerTarget" type="button">Spoiler: Level 1 - XSS У нас есть форма для составления списка сайтов. Нужно с помощью XSS вывести сообщение "Ex1". Ну что ж, начнём. Сначала введём корректные данные. Составляется список с названием и адресом. В одну из этих форм нужно подсунуть скрипт Код HTML:
HTML:Есть несколько вариантов решения. Браузеры позволяют р едактировать html "на лету" (на стороне клиента), чем мы и воспользуемся. Например, можно просто в атрибут pattern дописать символы <>, maxsize увеличить. или просто удалить эти атрибуты. И изменить тип url на text. Но мне больше нравится такой вариант: в основную форму можно добавить атрибут novalidate="". Он отключает внутренние проверки на корректность данных. Код HTML:
HTML:Код:
Code:.SpoilerTarget" type="button">Spoiler: Level 2 - php injection Здесь у нас есть самодельный калькулятор. Нужно узнать версию php, информацию о сервере и блаблабла. Это можно сделать функцией phpinfo(). Приступим. Подставляем нормальные числа, потом пробуем буквы. Вроде бы работает правильно. Смотрим html, обращаем внимание на блок с арифметическими действиями. Помимо текста в них есть реальный оператор. Скорее всего, он передаётся в функцию на сервер (как говорит подсказка, там выполняется eval). В неё мы и будем внедряться. Переписываем операцию сложения. Код:
Code:.SpoilerTarget" type="button">Spoiler: Level 3 - Parameter Delimiter Форма для регистрации. Вбиваем, логинимся - видем строчку role: normal. По заданию мы должны зарегистрироваться, при этом с правами admin. Мы знаем, что данные о пользователе хранятся в файле, и используется некоторый разделитель. Это может быть , | || # и т.д. При этом порядок данных тоже может быть любой. Ну, будем перебирать в формате userXXX | admin Сразу замечаем, что стоит ограничитель длины в полях username и password. Удаляем атрибут maxlength (или увеличиваем). Вбиваем поля, отправляем....и ошибка. Оказывается, проверка на длину стоит ещё и у них на сервере. Значит, остались только поля last name и email. Тыкаем, тыкаем, до, после, запятую, палку, слеш. Не срабатывает. Тогда открываю подсказку. И чёрт, подсказка говорит, что всё лежит в разных строчках. Ну, и опять несколько вариантов. Первый - удалить поле ввода и встроить новое (в которое можно вставлять несколько строчек). Код HTML:
HTML:В общем регистрируемся, заходим и ... видим слово admin. Но ничего не случается... тогда вспоминаем что вид был role:normal, поэтому делаем ещё одну попытку, уже добавляя role:admin. Попадаем в новый уровень. P.S. пытался поставить просто в одну строчку символ переноса (%0A) - не сработало. .SpoilerTarget" type="button">Spoiler: Level 4 - Insecure Direct Object References Чтож. У нас подключается GET-параметром текстовый файл. Нужно "загрузить файл PHP, расположенный в корне infosecinstitute.com. Файл не должен существовать, но вы должны загрузить его без ошибок, и он должен иметь расширение .php" потыкав по формам, видим параметр file=file1.txt Пытаемся воткнуть php - выдаёт ошибку. ну, ладно. Сначала в корень надо попасть. ну, делаем запрос http://ctf.infosecinstitute.com/ctf2...e.com/file.txt Выдаёт ошибку, что, мы указываем на url. Атата. хм... в таких фильтрах часто делают ошибку в регистрах. Делаем запрос и всё гуд: http://ctf.infosecinstitute.com/ctf2...e.com/file.txt на .php стоит фильтрация, на .txt её нет. Тогда file.txt.php даёт нам победу. .SpoilerTarget" type="button">Spoiler: Level 5 - Missing Function Level Access Control Страница для авторизированных пользователей. Нам нужно с помощью "магии" залогиниться. Первая мысль - найти в куках параметр авторизации. Увы, мимо... Ладно. Видим, что Login выглядит как кнопка, но не нажимается. Открывает html. Это действительно кнопка с атрибутом disable. указывает на ссылку login.html. Пытаемся пройти по адресу - вновь провал. Тогда возвращаемся на наш пятый уровень, просто заменяя в Headers предшествующую ссылку на Referer: http://ctf.infosecinstitute.com/ctf2...ses/login.html и всё сработало. P.S. Для Firefox удобный плагин Modify Headers. Просто там пишешь, что такой-то заголовок постоянно изменять, добавлять, удалять. .SpoilerTarget" type="button">Spoiler: Level 6 - CSRF Ну, здесь всё просто. Есть форма для комментариев, есть парочка тегов. Нам нужно сделать перессылку на другую страничку. Тег изображения может содержать адрес сайта, поэтому им и воспользуемся Код HTML:
HTML:.SpoilerTarget" type="button">Spoiler: Level 7 - XSS Вновь XSS. Дана страничка для входа. На этот раз надо засунуть на страницу Код HTML:
HTML:Смотрим html-код. Видим строчку Код HTML:
HTML:Сюда передаётся значение адресной строки. Попробуем в адресную строку прописать такие адреса: Код:
Code:Код:
Code:Есть форма для загрузки картинки и форма показа картинок. Нужно с помощью загруженного файла запустить JS-скрипт с окном alert(). Создаём файл 8.html Код HTML:
HTML:При попытке залить его вылезает ошибка, расширение плохое. Переименовываем в 8.jpg.html - проходит. Так, осталось этот файл запустить. Так, у нас есть форма с картинками. Смотрим код - видим строку с ссылкой на картинку Код HTML:
HTML:Код:
Code:.SpoilerTarget" type="button">Spoiler: Level 9 - Broken Authentication and Session Management Мы авторизованы под одним человеком, надо зайти под другого. Никаких активных форм нет. Идём копаться в куки. Видем в них параметр user=Sk9ITitET0U%3D %3D это символ "=" . Sk9ITitET0U= похоже на код base64. Идём на сайт base64.ru и расшифровываем. получаем JOHN+DOE. Значит, зашифровываем MARY+JANE и подставляем в куки. Можно сделать с помощью Burpsuite, или с помощью Modify Headers прям в браузере. .SpoilerTarget" type="button">Spoiler: Level 10 - Source Code Tampering Есть игра, задание - получить 9999 очков и пройти на максимальном уровне сложности. Ну, ради интереса я сыграли пару раз. Потом полез в код страницы, и наткнулся на js-код игры. Код HTML:
HTML:Код HTML:
HTML:.SpoilerTarget" type="button">Spoiler: Level 11 - Bypassing blacklists К сожалению, мы забанены. Нужно это исправить. Хм... ну, лезем в куки, видим там параметр welcome=no и меняем его на yes. Подставляем новые куки в Modify Headers и готово. .SpoilerTarget" type="button">Spoiler: Level 12 - Dictionary Attack Нужно подобрать пароль к пользователю admin. В условии нам сказано нагуглить пароль по фразе filetype:lst password На первой же ссылке висит список паролей (их там 3545). Можно скопировать и вставить в текстовый документ, можно так: Код:
Code:Использую гидру: Код:
Code:Код:
Code:P.S. ещё видео есть в интернете, где парень пишет свой брут на curl. .SpoilerTarget" type="button">Spoiler: Level 13 - Unvalidated Redirects and Forwards И последний уровень, нам нужно сделать редирект на другой сайт. Смотрим пакет при обновлении страницы Код:
Code:Код:
Code:P.S. Сейчас освоюсь с форумом, научусь картинки добавлять и подошью скринов |
Дописал) Если будут вопросы - пишите) И да, если кто объяснит мне, тугодуму, как цеплять картинки - буду благодарен)
|
Цитата:
|
Цитата:
|
| Время: 04:57 |