В этой статье я покажу, как захватить стратосферу, а точнее — получить рут на виртуалке Stratosphere с CTF-площадки Hack The Box. На этот раз мы повоюем с фреймворком Apache Struts для получения RCE-уязвимости в веб-приложении, рассмотрим в действии редко обсуждаемую, но очень полезную концепцию получения удаленной сессии Forward Shell, а также поиграем с угоном библиотеки и эксплуатацией функции eval()
для скрипта на Python.
Несмотря на то что Stratosphere не слишком сложна (5,2 балла из 10), прохождение этой ВМ доставило мне немало удовольствия благодаря возможности попрактиковаться с редко встречаемой техникой Forward Shell.
Помимо этого, вот с чем мы столкнемся на пути к флагу суперпользователя:
eval()
и «угон» импортируемого модуля.Приступим, пожалуй. Сначала заглядываем в открытые порты с помощью героя всех фильмов про хакеров — сканера Nmap.
root@kali:~# nmap -n -Pn -sV -sC -oA nmap/stratosphere 10.10.10.64
root@kali:~# cat nmap/stratosphere.nmap# Nmap 7.70 scan initiated Sat Aug 10 23:56:34 2019 as: nmap -n -v -Pn -sV -sC -oA nmap/initial 10.10.10.64
Nmap scan report for 10.10.10.64
Host is up (0.054s latency).
Not shown: 997 filtered ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.4p1 Debian 10+deb9u2 (protocol 2.0)
| ssh-hostkey:
| 2048 5b:16:37:d4:3c:18:04:15:c4:02:01:0d:db:07:ac:2d (RSA)
| 256 e3:77:7b:2c:23:b0:8d:df:38:35:6c:40:ab:f6:81:50 (ECDSA)
|_ 256 d7:6b:66:9c:19:fc:aa:66:6c:18:7a:cc:b5:87:0e:40 (ED25519)
80/tcp open http
| fingerprint-strings:
| [ ....................................................... ]
| [ ............ [содержимое строки-отпечатка] ............ ]
| [ ....................................................... ]
| GetRequest:
| [ ....................................................... ]
| [ ................ [ответ на GET-запрос] ................ ]
| [ ....................................................... ]
| http-methods:
| Supported Methods: GET HEAD POST PUT DELETE OPTIONS
|_ Potentially risky methods: PUT DELETE
|_http-title: Stratosphere
8080/tcp open http-proxy
| fingerprint-strings:
| [ ....................................................... ]
| [ ............ [содержимое строки-отпечатка] ............ ]
| [ ....................................................... ]
| GetRequest:
| [ ....................................................... ]
| [ ................ [ответ на GET-запрос] ................ ]
| [ ....................................................... ]
| http-methods:
| Supported Methods: GET HEAD POST PUT DELETE OPTIONS
|_ Potentially risky methods: PUT DELETE
|_http-open-proxy: Proxy might be redirecting requests
|_http-title: Stratosphere
2 services unrecognized despite returning data. If you know the service/version, please submit the following fingerprints at https://nmap.org/cgi-bin/submit.cgi?new-service :
==============NEXT SERVICE FINGERPRINT (SUBMIT INDIVIDUALLY)==============
| [ ....................................................... ]
| [ .... [отпечаток неопознанного сервиса на порте 80] .... ]
| [ ....................................................... ]
==============NEXT SERVICE FINGERPRINT (SUBMIT INDIVIDUALLY)==============
| [ ....................................................... ]
| [ ... [отпечаток неопознанного сервиса на порте 8080] ... ]
| [ ....................................................... ]
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Read data files from: /usr/bin/../share/nmap
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Sat Aug 10 23:56:59 2019 -- 1 IP address (1 host up) scanned in 24.41 seconds
В этот раз Nmap разразился мощнейшим потоком информации, большую часть из которой я не стал включать в листинг, потому что она бесполезна для наших нужд: в основном это были строки — отпечатки неопознанных сервисов, которые сканер не смог идентифицировать и попросил сделать это за него. Также я не стал приводить содержимое ответов на GET-запросы, которые Nmap решил отправить на веб — 80-й и 8080-й порты.
В остальном имеем классическую (пока) схему.
С веба и начнем.
Посмотрим, нет ли в веб-сервере уязвимостей, пригодных для использования в качестве входной точки в машину.
На http://10.10.10.64
тебя встретит цветастый градиент сайта Stratosphere.
При переходе по ссылке GET STARTED NOW сервер выплюнет страницу с таким наполнением.
<!-- view-source:http://10.10.10.64/GettingStarted.html --> <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>Stratosphere -- Getting Started</title> </head> <body> <h1>Site under construction. Please check back later.</h1> </body> </html>
Говорят, что сайт пока только разрабатывается, поэтому пусто. Придерживаясь классической разведывательной тактики, следующим шагом сканируем серверы на словарные директории.
Из всех инструментов для поиска дефолтных директорий мне больше других нравится gobuster. Этот многопоточный брутфорсер написан на Go, что позволяет без лишних усилий закинуть бинарник в систему и сразу же запустить его. Gobuster поддерживается создателем в актуальном состоянии, серьезно обновляется с выходом новых версий, и, что немаловажно, он действительно быстрый.
Указав нужный хост через опцию -u
и словарь для перебора имен директорий (один из стандартных для Kali) через -w
, запустим перебор в расширенном режиме (опция -e
позволяет выводить найденные URL-адреса в полном виде), сохраняя при этом вывод утилиты во внешний файл через -o
для отчетности.
root@kali:~# gobuster dir -u 'http://10.10.10.64' -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -e -o gobuster/stratosphere.gobuster===============================================================
Gobuster v3.0.1
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@_FireFart_)
===============================================================
[+] Url: http://10.10.10.64
[+] Threads: 10
[+] Wordlist: /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt
[+] Status codes: 200,204,301,302,307,401,403
[+] User Agent: gobuster/3.0.1
[+] Expanded: true
[+] Timeout: 10s
===============================================================
2019/08/11 00:44:24 Starting gobuster
===============================================================
http://10.10.10.64/manager (Status: 302)
http://10.10.10.64/Monitoring (Status: 302)
Progress: 13738 / 220561 (6.23%)^C
[!] Keyboard interrupt detected, terminating.
===============================================================
2019/08/11 00:45:39 Finished
===============================================================
Обнаружив два любопытных адреса, я остановил перебор (больше ничего не найдется, поверь на слово) и пошел проверять то, что предложил мне gobuster.
Другие известные инструменты для брута директорий:
Перейдя по адресу http://10.10.10.64/manager
, видим стандартный сервер-менеджер Apache Tomcat. Доступа к нему у нас, конечно же, нет.
На http://10.10.10.64/Monitoring
— кое-что гораздо интереснее.
От кнопок SIGN ON и REGISTER толку мало — обе они ведут к сообщению о том, что сайт все еще на стадии разработки.
Главная зацепка — это Action-приложение, представленное на веб-странице скриншотом ранее, которое часто ставят вместе с MVC-фреймворком Struts.
Struts предназначен для создания веб-приложений, базирующихся на технологии Java EE — наборе правил и спецификаций для Java, который описывает архитектуру серверной платформы для построения приложений.
Простыми словами, Struts — это реализация концепции «модель — представление — контроллер» (Model — View — Controller, MVC), созданная в Apache Software Foundation. Action здесь представляет собой запрос клиента, обрабатываемый контроллером (сервлетом ActionServlet) на сервере. Круговорот трафика в мире Apache Struts изображен на картинке ниже.
«Это, конечно, здорово, но что все это может дать для нашей задачи проникновения в систему?» — вопросишь ты. Не так давно в механизме взаимодействия, описанном выше, была обнаружена уязвимость, позволяющая выполнить произвольный код на удаленном хосте, рейтинг опасности которой был оценен в максимальные 10.0 по нотации CVSSv2.
Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее
1 год7690 р. |
1 месяц720 р. |
Читайте также
Последние новости