obuchenie_post
March 9

День 7. OWASP Top 10 - 2021

В этой комнате каждая тема OWASP разбирается по полочкам: что представляет собой уязвимость, как она возникает и каким образом её можно эксплуатировать. Теория подкрепляется практикой — вас ждут задания для закрепления материала.

Запускаем машину и чтобы к ней подключиться, нужно скачать vpn от HTB. Переходим в Access

Accessing Machines

Выбираем сервак и качаем.

У сайта ThyHackMe какие то не поладки с openvpn - которые они не признают и не хотят исправлять ... промучавшись больше 3х недель, я проанализировал клнфиг которые они выдают, и там указан порт который у них не открыт 1194 на сервере, возможно это с мировыми событиями связанно, допустим тот же HTB, openvpn работает. то дисконект то что то не доходит до моего ПК. Будем использовать виртуальную машину

1. Broken Access Control - Доступ к машинам

Нарушенный контроль доступа (вызов IDOR)

Нарушенный контроль доступа (IDOR Challenge))

2. Криптографические сбои

Криптографические сбои (Дополнительный материал 1)

Наиболее распространенный способ хранения большого объема данных в формате, легко доступном из многих мест, — это база данных. Это идеально подходит для чего-то вроде веб-приложения, поскольку множество пользователей могут взаимодействовать с веб-сайтом в любое время. Движки баз данных обычно следуют синтаксису языка структурированных запросов ( SQL ).

В производственной среде часто можно увидеть базы данных, настроенные на выделенных серверах, на которых запущена служба базы данных, например MySQL или MariaDB; однако базы данных также могут храниться в виде файлов. Их называют базами данных «плоских файлов», поскольку они хранятся в виде одного файла на компьютере. Это намного проще, чем настраивать целый сервер баз данных, и потенциально может использоваться в небольших веб-приложениях. Доступ к серверу баз данных выходит за рамки сегодняшней задачи, поэтому давайте сосредоточимся на базах данных «плоских файлов».

Как упоминалось ранее, базы данных с плоскими файлами хранятся в виде файла на диске компьютера. Обычно это не будет проблемой для веб-приложения, но что произойдет, если база данных будет храниться в корневом каталоге веб-сайта (т. е. в одном из файлов, доступных пользователю, подключающемуся к веб-сайту)? Ну, мы можем загрузить и запросить ее на нашей собственной машине, имея полный доступ ко всему в базе данных. Действительно, раскрытие конфиденциальных данных!

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

Как расшифровать хэш-пароля?

Криптографические сбои (Дополнительный материал 2)

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

Мы видим, что хеш был успешно взломан, а пароль пользователя был "password". Как безопасно!

Стоит отметить, что Crackstation работает с использованием огромного списка слов. Если пароль отсутствует в списке слов, то Crackstation не сможет взломать хэш.

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

Нам удалось узнать только 1 пароль, остальные защищены.
Что делать с другими, пробовать найти метод их шифрования изначальное, тут поможет большой словарь паролей и много удачи и много времени.

Криптографические сбои (вызов)

Тут уже дают нам лично потыкать задачку, давайте запустим машинку.

перейдем на веб-морду сайта, который обычно лежит на 80 порту, но тут у нас он нестандартный и лежит на 81.

Посмотрим что там покажет перевод- читаем
Приходит понимание, что сайт ещё в разработке, "нажми на здесь" кнопочка, обычно содержит почту.

открываем код элемента или отправляем curl запрос

хорошо, так же мы нашли страницу /login.php

Обычно разработчики оставляют комментарии для свой работы, что бы не забыть и тд. (НЕ ДЕЛАЙТЕ ТАК), мы нашли один такой и он говорит о том ,что есть еще одна страница, /assets.

перейдя на /assets мы попадаем в директорию с файлами самого сайта.
что мы видим, версию Apache/2.4.54 - это тоже один из векторов, посмотреть уязвимости данного ПО и версии, но задачка у нас на работой с бд.

смотрим дальше:
css/ - скорее всего тут стили для сайта
fonts/ - шрифты
images/ - картинки
js/ - скрипты
webapp.db - база данных

конечно мы можем скачать все что угодно, но самое вкусное из этого списка - БД. Качаем.

Можем открыть файл в sqlite и посмотреть как его написал разработчик или же использовать команды как в обучение, пробуем и то и то.

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

Что мы получили? 3 юзера admin, Bob и Alice, их хеш пароли, и столбик фильтр говорит нам что там лежит либо 1 либо 0, проанализировав можно понять что Bob и Admin имеет значение 1, скорее всего это разграничение прав, 1 = права админа, 0 - права пользователя.

расшифруем хеш admin

Авторизуемся

THM{Yzc2YjdkMjE5N2VjMzNhOTE3NjdiMjdl}

вводим ответы

3. Инъекция

3.1. Ввод команды

Ввод команды

Внедрение команд происходит, когда серверный код (например, PHP ) в веб-приложении вызывает функцию, которая напрямую взаимодействует с консолью сервера. Веб-уязвимость инъекции позволяет злоумышленнику воспользоваться этим вызовом для произвольного выполнения команд операционной системы на сервере. Возможности для злоумышленника отсюда безграничны: он может перечислить файлы, прочитать их содержимое, выполнить некоторые базовые команды для проведения разведки на сервере или сделать что угодно, как если бы он сидел перед сервером и вводил команды непосредственно в командную строку.

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

пробуем в практике, да умельцы написали сайт которая позволяет общаться к внутренней программу "корова говорит", то есть рисуется корона и говорит то что вы вводите в поле. Спросите "зачем?" - ответ прост, показать как можно взламывать такие приложения.
Переходим на веб морду, порт 82.

Вводим что угодно, я ввел privet mir. Проверяем работоспособность, работает!

теперь мы знаем положительную работу программы, то есть как она должна работать, теперь попробуем, поломать её.
я добавил к нашему "privet mir" ещё одну часть ";ls"
что произошло, я отправил программе что вывести, privet mir; ls
корова промычала privet mir, но почему она не вывела вторую часть?
все дело в ";" это завершает команду, а ls это команда для обращения к серверу, по итогу я заставил программу вывести где я сейчас нахожусь и какие файлы есть, я увидел директорию сайта и его файлы.

drpepper.txt интересный файл, можно прочесть
I'm sorry Mario, but the Dr. Pepper you are looking for is in another webapp
.
Прости, Марио, но тот Доктор Пеппер, которого ты ищешь, находится в другом веб-приложении.

Некая подсказка, что пора уходить от сюда.

Можем узнать где мы находимся pwd командой

под каким я пользователем использую скрипт? - Apache

какая оболочка?

версия Apache2
;cat /etc/alpine-release

4. Небезопасная конструкция

Небезопасный дизайн

Небезопасный дизайн относится к уязвимостям, которые присущи архитектуре приложения. Это не уязвимости, связанные с плохими реализациями или конфигурациями, но идея, лежащая в основе всего приложения (или его части), изначально ошибочна. В большинстве случаев эти уязвимости возникают, когда на этапах планирования приложения выполняется неправильное моделирование угроз, и распространяются вплоть до вашего конечного приложения. В некоторых других случаях уязвимости небезопасного дизайна могут также быть введены разработчиками при добавлении некоторых «ярлыков» вокруг кода для упрощения тестирования. Например, разработчик может отключить проверку OTP на этапах разработки, чтобы быстро протестировать остальную часть приложения без ручного ввода кода при каждом входе в систему, но забыть включить ее снова при отправке приложения в производство.

Переходим на цель

попробуем сменить пароль

подсказка говорит есть имя joseph

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

авторизуемся за джозефа - пусть будет Жека.
у Жеки появляется доступ.

похоже на хранилище файлов...

читаем флаг и уходим.

я бы назвал такой хакинг - глупость человека + глупость вопроса, приложения, не всегда чтобы взломать что-то/кого-то нужны утилиты и крутые программы, просто логика)

5. Неправильная настройка безопасности

практика

прочитав новость и тд, переходим на сайт и видим что на веб морде поднято приложение обычный todo list - список дел

переходим в /console
и видим что можно использовать ЯП python
ls не работает, потому что это системная команда, но ее можно завернуть в оболочку питона.

Заварачиваем команду ls в питон и погнали: 
import os; print(os.popen("ls -l").read())

читаем код приложения и находим флаг

6. Уязвимые и устаревшие компоненты
Вот ещё бы самому научиться писать эксплойты для уязвимостей.

Уязвимые и устаревшие компоненты - Эксплойт

Попробуем найти ручками готовый эксплоит зная название и версию ПО

защита от дурака?

ставим комментарий

Уязвимые и устаревшие компоненты — Лаборатория

тут свобода действия, цель достичь флага.

переходим на сайт, это онлайн библиотека, заходим в панель админ, креды admin:admin запускает нас в админку!

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

попробуем найти готовый эксплоит
https://www.exploit-db.com/exploits/47887

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

7. Ошибки идентификации и аутентификации

Практические ошибки идентификации и аутентификации

Зарегистрируем пользователя " admin" заметьте пробел в начала.

вводим данные, успех!

по заданию нам нужен Дарен
проворачиваем такую же схему, и заходим

пробуем логин Артур

Успех. Знания закрепили, 1 пробел может быть атакой)

8. Нарушения целостности программного обеспечения и данных

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

Нарушения целостности программного обеспечения

нас просят проверить хеш файла по sha256

sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=

Нарушения целостности данных

Давайте подумаем о том, как веб-приложения поддерживают сеансы. Обычно, когда пользователь входит в приложение, ему назначается некий токен сеанса, который необходимо сохранить в браузере на все время сеанса. Этот токен будет повторяться при каждом последующем запросе, чтобы веб-приложение знало, кто мы. Эти токены сеанса могут иметь множество форм, но обычно назначаются через файлы cookie. Файлы cookie — это пары ключ-значение, которые веб-приложение будет хранить в браузере пользователя и которые будут автоматически повторяться при каждом запросе к веб-сайту, который их выдал.

задание

пробуем расшифровать

Задача

Пробуем зайти как гость

Анализируем куки

пробуем изменить токен так чтобы зайти за админа

и так, у нас есть сессия гостя
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6Imd1ZXN0IiwiZXhwIjoxNzM5Nzk3ODI0fQ.6s7HWZWqzxccrpmWLZvc3t4Vm39y2DulDzyLVvFOVRM

эта строчка разделена точками на 3 части

1) eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9
2) eyJ1c2VybmFtZSI6Imd1ZXN0IiwiZXhwIjoxNzM5Nzk3ODI0fQ
3) 6s7HWZWqzxccrpmWLZvc3t4Vm39y2DulDzyLVvFOVRM

как видит токен сервер
1)

сразу меняем шифрование на none

получаем: eyJ0eXAiOiJKV1QiLCJhbGciOiJub25lIn0=

2) видит уже пользователя

гостя меняем на админ

получаем: eyJ1c2VybmFtZSI6ImFkbWluIiwiZXhwIjoxNzM5Nzk3ODI0fQ==

и 3 часть не измена - сигнатура ее не вставляем

соединяем все в одно

eyJ0eXAiOiJKV1QiLCJhbGciOiJub25lIn0.eyJ1c2VybmFtZSI6ImFkbWluIiwiZXhwIjoxNzM5Nzk3ODI0fQ.

9. Сбои в ведении журнала безопасности и мониторинге

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

10. Подделка запросов на стороне сервера (SSRF)

Подделка запросов на стороне сервера

Этот тип уязвимости возникает, когда злоумышленник может заставить веб-приложение отправлять запросы от его имени в произвольные пункты назначения, имея при этом контроль над содержимым самого запроса. Уязвимости SSRF часто возникают из-за реализаций, где нашему веб-приложению необходимо использовать сторонние сервисы.

Представьте себе, например, веб-приложение, которое использует внешний API для отправки SMS-уведомлений своим клиентам. Для каждого электронного письма веб-сайт должен сделать веб-запрос на сервер поставщика SMS для отправки содержимого сообщения, которое должно быть отправлено. Поскольку поставщик SMS взимает плату за каждое сообщение, они требуют, чтобы вы добавляли секретный ключ, который они заранее назначают вам, к каждому запросу, который вы делаете к их API . Ключ API служит маркером аутентификации и позволяет поставщику узнать, кому выставлять счет за каждое сообщение. Приложение будет работать следующим образом:

смотрим куда обращается кнопочка для скачки файла

<a href="/download?server=secure-file-storage.com:8087&amp;id=75482342"

берем ссылку и открываем прослушку портов

БИНГО!

Так же заходи в нашу:

Основная группа обучения ИБ
Lab-группу с полезным софтом / книгами / аудио.
Чат для обсуждений, задавай свои вопросы.
P.S. С вами был @Fnay_Offensive
До новой встречи, user_name!