В этой статье пойдет речь о том, как получить доступ к root для машины с легким уровнем безопасности под названием «Photographer 1». Она доступна на Vulnhub для тестирования на проникновение. Пользователи могут скачать все необходимое, перейдя по ссылке. Большой вклад в создание этой лаборатории внес v1n1v131r4.
Итак, пора начинать и узнать, как успешно получить доступ к root.
Разведка обстановки
Настало время создать свою собственную лабораторию. Человек будет использовать сеть NAT. Сначала он определит IP-адрес уязвимой машины с помощью netdiscover. В данном случае следует ввести команду:
netdiscover -r 10.0.2.0/24
Итак, найденный IP-адрес – 10.0.2.20.
Теперь, когда у пользователя есть IP-адрес его целевой машины, необходимо продолжить сканирование с помощью nmap. Это будет сделано за счет следующей команды:
sudo nmap –sV 10.0.2.20
На приведенном ниже скриншоте можно увидеть, что на целевой машине открыты 4 порта, которые в дальнейшем могут быть использованы для процесса перечисления.
Обнаруженные порты – 80, 139, 445 и 8000.
Перечисление
При открытых портах 139 и 445, которые также являются портами SMB, стоит попробовать найти «низко висящий плод», что-то очень доступное, к примеру, Sambashare. Обычно в boot2root пользователь запускает нулевой сеанс и смотрит, получил ли он какую-либо информацию. В данном случае человек будет использовать smbclient, чтобы найти определенные данные, к которым он способен получить доступ без creds. Для поиска таких важных ресурсов необходимо ввести следующие команды:
smbclient –N –L \\\\10.0.2.20
smbclient \\\\10.0.2.20\\sambashare
get mailsent.txt
get wordpress.bkp.zip
Отлично!!! Итак, похоже, что пользователь может получить доступ к Sambashare. Стоит продолжить трудиться над этим и выполнить задуманный план.
Человек находит два файла в Sambashare с именами mailsent.txt и wordpress.bkp.zip, который он загрузит на свою машину для дальнейшего осмотра с помощью команды GET.
Файл mailsent.txt кажется интересным. Стоит просмотреть его и понять, скрывает ли он что-нибудь полезное для пользователя.
У человека теперь есть кое-какая важная информация. Он получил два имени пользователя Daisa и Agi.
Понятно, что Agi заключает в себе какой-то секрет. На этом этапе человек почувствовал, что это может быть определенный ключ, связанный с учетными данными, поэтому необходимо сохранить эту информацию для дальнейшего использования.
Теперь, когда у человека есть имена пользователей, настало время перейти к перечислению порта 80. К сожалению, пользователь не смог придумать ничего более продуктивного, поэтому он, собственно, и решил перечислить порт 8000. Был получен такой результат:
Сервер, похоже, работает под управлением KOKEN CMS. Стоит погуглить про него, чтобы найти общедоступный эксплойт. Кажется, необходимый общедоступный эксплойт был обнаружен.
https://www.exploit-db.com/exploits/48706
Применение полученных данных
Читая эксплойт, пользователю кажется, что это аутентифицированный эксплойт загрузки файлов, а это значит, что ему потребуются некоторые учетные данные. Перейдя на страницу администратора CMS, он увидит, что там нужно ввести именно них:
После некоторых проб и ошибок пользователь все еще не мог войти в систему. Похоже, это блокпост на дороге к успеху. Но точно же, человек еще не пробовал верительные грамоты, которые получил ранее.
Если читатели помнят, пользователь смог получить два имени пользователя Daisa и Agi из файла mailsent.txt. Следует попробовать применить эти учетные данные.
Отлично!!! Пользователь успешно вошел в систему, используя следующие учетные данные:
daisa@photographer.com : babygirl.
Пользователь смог войти в систему CMS.
Теперь пользователь загрузит свой Shell PHP, который уже доступен на Kali. Чтобы загрузить его, человек будет следовать определенным шагам. Сначала он нажимает на кнопку «Импортировать контент».
Теперь пользователь получает возможность загрузить его Shell, это видно на картинке ниже.
Перед отправкой своего обратного Shell PHP пользователь должен добавить расширение jpg к нему для того, чтобы обойти фильтрацию расширений в соответствии с эксплойтом. Как только файл будет переименован соответствующим образом, человек будет использовать Burp Suite для перехвата импортированных данных, удаления расширения jpg и пересылки запроса.
После внесения изменений пользователю нужно нажать на вкладку «Вперед» два-три раза. Он немедленно получает обратный Shell на его листенере Netcat.
Теперь, когда пользователь получил обратный Shell, он сначала создаст другой Shell с помощью команды:
python -c "import pty;pty.spawn('/bin/bash')"
После этого пользователь изменит каталог с home на daisa. Как только он окажется в каталоге dais, человек отправится дальше и откроет файл user.txt. Открыв его, пользователь обнаружил пользовательский флаг, как показано на рисунке ниже.
Повышение привилегий
Теперь пришло время для той части CTF, которую ждут все читатели. Теперь пользователь постарается получить доступ к root. Но не стоит спешить – следует действовать медленно и спокойно. Сначала пользователь проверит наличие любых двоичных файлов suid с помощью команды:
find / -perm –u=s –type f 2>/dev/null
Похоже, что php7.2 был установлен в suid. Пользователь может легко увеличить его привилегии, используя php7.2 следующим образом:
/usr/bin/php7.2 -r "pcntl_exec('/bin/bash', ['-p']);"
Для этого он обратился к bins GTFO.
Отлично!!! Теперь, когда у пользователя есть доступ к root, он готов получить флаг root.
Все так думают, так что настала пора пойти и захватить этот последний флаг. Как только пользователь окажется в root shell, ему просто нужно изменить свой каталог на root с помощью команды:
cd root
Теперь, когда человек находится в каталоге root, он прочитает файл proof.txt с помощью команды. Теперь у него есть доступ к последнему флагу, как показано на картинке ниже.
Автор переведенной статьи: Arnav Tripathy.
Важно! Информация исключительно в учебных целях. Пожалуйста, соблюдайте законодательство и не применяйте данную информацию в незаконных целях.