Черный ход, секретный вход (от англ. 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
![Бэкдор pam_unix и прохождение Compromised](https://cryptoworld.su/wp-content/uploads/2021/03/2dcf77ab0a30522e90435a52d017adcc.jpg)
Давайте посмотрим сайт.
![Бэкдор pam_unix и прохождение Compromised](https://cryptoworld.su/wp-content/uploads/2021/03/9dca96f2387cd4bc58daac3ce1a8b9be.jpg)
Находим только 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
![Бэкдор pam_unix и прохождение Compromised](https://cryptoworld.su/wp-content/uploads/2021/03/c53d836e552d0d38b08d050be0c4a346.png)
И находим интересную директорию backup, а в ней архив.
![Бэкдор pam_unix и прохождение Compromised](https://cryptoworld.su/wp-content/uploads/2021/03/c7c66682646097f2a9006375f5558214.png)
Данный архив содержит исходные коды сайта.
![Бэкдор pam_unix и прохождение Compromised](https://cryptoworld.su/wp-content/uploads/2021/03/462d0bb4b088ef89e15c391ff359c320.png)
Среди данных файлов мы и находим упоминание скрытого на сервере файла.
![Бэкдор pam_unix и прохождение Compromised](https://cryptoworld.su/wp-content/uploads/2021/03/894f9152c99beccf6667a05ee8241fc7.png)
Файл содержит учетные данные админа.
![Бэкдор pam_unix и прохождение Compromised](https://habrastorage.org/getpro/habr/upload_files/616/1a3/2a6/6161a32a653e445558259ab30ca99a6e.png)
Авторизуемся.
![Бэкдор pam_unix и прохождение Compromised](https://cryptoworld.su/wp-content/uploads/2021/03/4db4751d64ac4ab017eab0b67f0ced55-1.png)
Entry Point
После изучения данной CMS, находим RCE эксплоит.
![Бэкдор pam_unix и прохождение Compromised](https://cryptoworld.su/wp-content/uploads/2021/03/6bbe7c329e4dded996f1ce4d6cf2413e.png)
Но вот только он не отрабатывает как нужно.
![Бэкдор pam_unix и прохождение Compromised](https://cryptoworld.su/wp-content/uploads/2021/03/e3e4c9730eea59f7f32c8fff92b90f15.png)
Посмотрим код эксплоита. Используется функция system, которая, возможно, блокируется.
![Бэкдор pam_unix и прохождение Compromised](https://cryptoworld.su/wp-content/uploads/2021/03/247d6547aae43f27c535ce0cd6828838.png)
Давайте изменим нагрузку и вызовем phpinfo, чтобы посмотреть заблокированные функции.
![Бэкдор pam_unix и прохождение Compromised](https://cryptoworld.su/wp-content/uploads/2021/03/3b269301409b6bd8c390245df55b5ecc.png)
![Бэкдор pam_unix и прохождение Compromised](https://cryptoworld.su/wp-content/uploads/2021/03/54772786225a7c2231750b4c95a01f3e.png)
И видим большой список таких функций. Для обхода данных блокировок можем использовать этот код. Данный PHP код мы чуть изменим, чтобы сразу выполнять запрошенные команды.
![Entry Point](https://cryptoworld.su/wp-content/uploads/2021/03/2ad07ab72fa93539a8d7db81024c7de5.png)
И изменим код эксплоита так, чтобы считать и отправить новый PHP код.
![Entry Point](https://cryptoworld.su/wp-content/uploads/2021/03/90d1eac9c1e4222dbe67693796e4bd14.png)
И данный код работает.
![Entry Point](https://cryptoworld.su/wp-content/uploads/2021/03/c44efd99246d60c905fd13f2a430b285.png)
Глянем на пользователей и заметим, что у mysql есть bash.
![Entry Point](https://cryptoworld.su/wp-content/uploads/2021/03/52e0e8552d8b41b687adada8089212b2.png)
Давайте удобный шелл, для этого используем webwrap.
![Entry Point](https://cryptoworld.su/wp-content/uploads/2021/03/24a76051ea0bbdcd28067a17020b348b.png)
USER1
Поскольку MySQL имеет командную оболочку, мы можем использовать службу как обычный пользователь, выполняя команды из MySQL. Учетные данные для подключения к базе данных должны быть в конфигурациях.
![USER1](https://cryptoworld.su/wp-content/uploads/2021/03/91b927efed7c6bd25d58ce71c63fa65f.png)
![USER1](https://cryptoworld.su/wp-content/uploads/2021/03/fadc983d21e11cce401cc6d660eb13d9.png)
Теперь, когда мы получили учетные данные, давайте проверим функции mysql.
![USER1](https://cryptoworld.su/wp-content/uploads/2021/03/38ef073d43719f6fa5d5836c873d4f0d.png)
И давайте сгенерируем SSH ключи и запишем публичный в домашнюю директорию службы с помощью execcmd.
mysql -u root --password=changethis -e "select execcmd('echo ssh-rsa AAAAB3NzaC1yc2EAAAADA/ ... 6GuPNZGryVNovs= ralf@ralf-PC > ~/.ssh/authorizedkeys');"
И заходим по SSH.
![USER1](https://cryptoworld.su/wp-content/uploads/2021/03/7275f0600454f209ba5e25e89dffe740.png)
USER2
И мы можем прочитать логи, где можно поискать пароли.
![USER2](https://cryptoworld.su/wp-content/uploads/2021/03/5ec3f7d0f4336c4e40ebebe8dc988da3.png)
Попробуем сменить пользователя с найденным паролем.
![USER2](https://cryptoworld.su/wp-content/uploads/2021/03/2318119e7b4386fedcbd1ec869d3dee4.png)
ROOT
После долгого изучения машины была дана подсказка о названии машины и использовании бэкдоров. Давайте-ка найдем последние измененные файлы.
find . -mtime -100 2>/dev/null
![ROOT](https://cryptoworld.su/wp-content/uploads/2021/03/6e474a8b5d9b2a8f518d03d6d35223ce.png)
И находим скрытую библиотеку pamunix.so, причем есть такая же, видимо легитимная. Скачиваем этот файл.
scp sysadmin@compromised.htb:/lib/x8664-linux-gnu/security/.pamunix.so ~/tmp/
И закидываем в дизасемблер (я использовал Cutter). Среди строк находим password.
![ROOT](https://cryptoworld.su/wp-content/uploads/2021/03/7698a4349531de0a089849857f657ab9.png)
Посмотрим, где эта строка используется.
![ROOT](https://cryptoworld.su/wp-content/uploads/2021/03/88b1569b6b02dc5b71fadbb7bf8cab2d.png)
![ROOT](https://cryptoworld.su/wp-content/uploads/2021/03/9f518958f41f7611d5efdfdb30f6e170.png)
И видим сравнение пароля с шестнадцатеричными значениями, которые являются половинами строки.
![ROOT](https://cryptoworld.su/wp-content/uploads/2021/03/ca0dfae388611e65f2eb757408c08d4d.png)
Пробуем данную строку как пароль рута, и удачно авторизуемся.
![ROOT](https://cryptoworld.su/wp-content/uploads/2021/03/89ce0b4350fd147daf2862dc92426a00.png)
Сегодняшняя статья состоит в основном из одного кода.Но так как я сам не особо любителб теории то сегодняшняя лабораторная мне по вкусу так же надеюсь и вам.Я думаю что сегодняшняя статья принесет вам немало пользы в укреплении инфобезопасности.Всем удачи)
Вся информация представлена только в образовательных целях. Автор этого документа не несет ответственности за любой ущерб, причиненный кому-либо в результате использования знаний и методов, полученных в результате изучения этого документа.