Черный ход, секретный вход (от англ. Back door — буквально «черный ход») — это недоработка алгоритма, намеренно встроенная разработчиком и позволяющая неавторизованный доступ к данным или управлению на расстоянии операционной системой и компьютером в целом.
Основная цель бэкдора — тайный и быстрый доступ к данным, в большинстве случаев — зашифрованным и защищенным данным. Например, бэкдор может быть интегрирован в алгоритм шифрования для последующего прослушивания защищенного канала злоумышленником.
Recon
Данная машина имеет IP адрес 10.10.10.204, который я добавляю в /etc/hosts.
10.10.10.207 compromised.htb
Первым делом сканируем открытые порты. Я это делаю с помощью следующего скрипта, принимающего один аргумент — адрес сканируемого хоста:
#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)
nmap -p$ports -A $1
Давайте посмотрим сайт.
Находим только CMS — LiteCart. Давайте просканируем директории, и я делаю это с помощью gobuster.
gobuster dir -t 128 -u http://compromised.htb/ -w /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt -x html,php
И находим интересную директорию backup, а в ней архив.
Данный архив содержит исходные коды сайта.
Среди данных файлов мы и находим упоминание скрытого на сервере файла.
Файл содержит учетные данные админа.
Авторизуемся.
Entry Point
После изучения данной CMS, находим RCE эксплоит.
Но вот только он не отрабатывает как нужно.
Посмотрим код эксплоита. Используется функция system, которая, возможно, блокируется.
Давайте изменим нагрузку и вызовем phpinfo, чтобы посмотреть заблокированные функции.
И видим большой список таких функций. Для обхода данных блокировок можем использовать этот код. Данный PHP код мы чуть изменим, чтобы сразу выполнять запрошенные команды.
И изменим код эксплоита так, чтобы считать и отправить новый PHP код.
И данный код работает.
Глянем на пользователей и заметим, что у mysql есть bash.
Давайте удобный шелл, для этого используем webwrap.
USER1
Поскольку MySQL имеет командную оболочку, мы можем использовать службу как обычный пользователь, выполняя команды из MySQL. Учетные данные для подключения к базе данных должны быть в конфигурациях.
Теперь, когда мы получили учетные данные, давайте проверим функции mysql.
И давайте сгенерируем SSH ключи и запишем публичный в домашнюю директорию службы с помощью execcmd.
mysql -u root --password=changethis -e "select execcmd('echo ssh-rsa AAAAB3NzaC1yc2EAAAADA/ ... 6GuPNZGryVNovs= ralf@ralf-PC > ~/.ssh/authorizedkeys');"
И заходим по SSH.
USER2
И мы можем прочитать логи, где можно поискать пароли.
Попробуем сменить пользователя с найденным паролем.
ROOT
После долгого изучения машины была дана подсказка о названии машины и использовании бэкдоров. Давайте-ка найдем последние измененные файлы.
find . -mtime -100 2>/dev/null
И находим скрытую библиотеку pamunix.so, причем есть такая же, видимо легитимная. Скачиваем этот файл.
scp sysadmin@compromised.htb:/lib/x8664-linux-gnu/security/.pamunix.so ~/tmp/
И закидываем в дизасемблер (я использовал Cutter). Среди строк находим password.
Посмотрим, где эта строка используется.
И видим сравнение пароля с шестнадцатеричными значениями, которые являются половинами строки.
Пробуем данную строку как пароль рута, и удачно авторизуемся.
Сегодняшняя статья состоит в основном из одного кода.Но так как я сам не особо любителб теории то сегодняшняя лабораторная мне по вкусу так же надеюсь и вам.Я думаю что сегодняшняя статья принесет вам немало пользы в укреплении инфобезопасности.Всем удачи)
Вся информация представлена только в образовательных целях. Автор этого документа не несет ответственности за любой ущерб, причиненный кому-либо в результате использования знаний и методов, полученных в результате изучения этого документа.