Найти тему
It-Assistant

Бэкдор pam_unix и прохождение Compromised

Оглавление

Черный ход, секретный вход (от англ. Back door — буквально «черный ход») — это недоработка алгоритма, намеренно встроенная разработчиком и позволяющая неавторизованный доступ к данным или управлению на расстоянии операционной системой и компьютером в целом.
Основная цель бэкдора — тайный и быстрый доступ к данным, в большинстве случаев — зашифрованным и защищенным данным. Например, бэкдор может быть интегрирован в алгоритм шифрования для последующего прослушивания защищенного канала злоумышленником.

Содержание скрыть

1 Recon

2 Entry Point

3 USER1

4 USER2

5 ROOT

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

Давайте посмотрим сайт.

-2

Находим только 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

-3

И находим интересную директорию backup, а в ней архив.

-4

Данный архив содержит исходные коды сайта.

-5

Среди данных файлов мы и находим упоминание скрытого на сервере файла.

-6

Файл содержит учетные данные админа.

Авторизуемся.

-7

Entry Point

После изучения данной CMS, находим RCE эксплоит.

-8

Но вот только он не отрабатывает как нужно.

-9

Посмотрим код эксплоита. Используется функция system, которая, возможно, блокируется.

-10

Давайте изменим нагрузку и вызовем phpinfo, чтобы посмотреть заблокированные функции.

-11
-12

И видим большой список таких функций. Для обхода данных блокировок можем использовать этот код. Данный PHP код мы чуть изменим, чтобы сразу выполнять запрошенные команды.

-13

И изменим код эксплоита так, чтобы считать и отправить новый PHP код.

-14

И данный код работает.

Глянем на пользователей и заметим, что у mysql есть bash.

-15

Давайте удобный шелл, для этого используем webwrap.

-16

USER1

Поскольку MySQL имеет командную оболочку, мы можем использовать службу как обычный пользователь, выполняя команды из MySQL. Учетные данные для подключения к базе данных должны быть в конфигурациях.

-17
-18

Теперь, когда мы получили учетные данные, давайте проверим функции mysql.

-19

И давайте сгенерируем SSH ключи и запишем публичный в домашнюю директорию службы с помощью execcmd.

mysql -u root --password=changethis -e "select execcmd('echo ssh-rsa AAAAB3NzaC1yc2EAAAADA/ ... 6GuPNZGryVNovs= ralf@ralf-PC > ~/.ssh/authorizedkeys');"

И заходим по SSH.

-20

USER2

И мы можем прочитать логи, где можно поискать пароли.

-21

Попробуем сменить пользователя с найденным паролем.

-22

ROOT

После долгого изучения машины была дана подсказка о названии машины и использовании бэкдоров. Давайте-ка найдем последние измененные файлы.

find . -mtime -100 2>/dev/null

-23

И находим скрытую библиотеку pamunix.so, причем есть такая же, видимо легитимная. Скачиваем этот файл.

scp sysadmin@compromised.htb:/lib/x8664-linux-gnu/security/.pamunix.so ~/tmp/

И закидываем в дизасемблер (я использовал Cutter). Среди строк находим password.

-24

Посмотрим, где эта строка используется.

-25
-26

И видим сравнение пароля с шестнадцатеричными значениями, которые являются половинами строки.

-27

Пробуем данную строку как пароль рута, и удачно авторизуемся.

Вся информация представлена ​​только в образовательных целях. Автор этого документа не несет ответственности за любой ущерб, причиненный кому-либо в результате использования знаний и методов, полученных в результате изучения этого документа.

Источник