Bashed (2021)

Сводка
При сканировании Nmap выделяется только 80 HTTP-порт. С помощью фаззинга веб-сервера можно обнаружить консоль, написанную на языке программирования PHP. Первоначальное повышение привилегий реализуется через мисконфиг прав пользователей (sudo -l), а получение прав суперпользователя через небезопасную задачу Cron.
Разведка
Запустим Nmap, чтобы просканировать открытые порты на удалённом хосте:
Результат сканирования показал, что открыт только 80 HTTP-порт, с которым можно взаимодействовать через веб-браузер:

На данной странице есть пост 4 декабря 2017 года с повествованием о таком инструменте, как phpbash:

На скриншоте указан следующий путь к php-скрипту - /uploads/phpbash.php:

Можно предположить, что такой же скрипт может лежать по аналогичному пути на удалённом хосте:

Теория провалилась, следовательно, нужно копать дальше. Запустим фаззинг с помощью инструмента Gobuster и словаря из SecLists:
Из результата фаззинга можно найти интересный каталог /dev:

В нём и лежал php-скрипт позволяющий выполнять любые действия с помощью консольных команд на удалённой системе от лица пользователя веб-сервера www-data:

Первоначальный доступ
Работать в веб-интерфейсе не удобно, поэтому сделаем терминальный шелл. С этим делом может помочь revshells.com, где нужно указать только IP-адрес и порт, а сервис уже сам подготовит полезную нагрузку:

Пэйлоад с Nc (Netcat) не сработал, поэтому используем Python, так как на удалённом хосте есть интерпретатор этого языка программирования. Полезную нагрузку следует ввести в веб-терминал, который располагается по следующему пути /dev/phpbash.php. Получаем шелл после того, как поставим листенер с помощью Rlwrap, тулзы, которая обеспечит стабильность в работе, и Netcat:

Повышение привилегий до прав пользователя
После получения удалённого доступа www-data, нужно проверить есть ли возможность у пользователя веб-сервера запускать какие-либо команды от лица других пользователей:

Абсолютно любую команду без ввода пароля можно запустить от лица пользователя scriptmanager:
Повысим привилегии через sudo:

Повышение привилегий до прав суперпользователя
В корне файловой системы можно обнаружить каталог scripts, к которому имеет доступ пользователь scriptmanager:

В нём присутствует Python-скрипт, который записывает в файл test.txt строку "testing 123!":

Можно заметить, что каждую минуту файл test.txt обновляется:

Сам файл test.txt имеет владельца и группу пользователей root. Это наводит на мысль о том, что в системе работает Cron, который каждую минуту запускает test.py с правами суперпользователя. Важно отметить, что пользователь scriptmanager может вносить изменения в скрипт. Таким образом, можно повысить свои привилегии, внедрив вредоносный Python-код. Воспользуемся ещё раз сервисом revshells, изменив порт, например, на 9899:

Поставим листенер с помощью Rlwrap и Netcat, затем перезапишем файл test.py:

Получим шелл от лица суперпользователя:

Last updated
Was this helpful?