Статья Уязвимости WordPress и их эксплуатация для начинающего пентестера

  • Автор темы Автор темы wakizashi
  • Дата начала Дата начала
Перечисление, уязвимости и эксплуатация.

29438

Для начала предлагаю вспомнить (или выучить) основы. Что из себя представляет процесс взлома сайта хакером? Как происходит разведка перед эксплуатацией?

Если переходить на примитивы, то веб-приложение работает на веб-сервере, а веб-сервер в свою очередь управляется операционной системой. То есть сразу перед аудитором безопасности открываются три вектора атаки - на машину, на веб-сервер(например, Apache2) и на веб-приложение.

Зная об этом, пентестер прорабатывает три направления атаки, поэтому он приступает к процессу, который называется "Enumerating" или русским языком "Перечисление".

Перечисление - это разведка, получение доступной информации о цели. Например версия OS, SSH, Apache или nginx, даст исследователю возможность перейти к следующему шагу - гуглению. Как бы смешно это не звучало, но чтобы получить информацию об уязвимостях того или иного программного обеспечения, нужно в поисковую строку ввести точную версию продукта и добавить ключевое слово, например - "vulns". С приходом опыта и понимания процесса, поисковую систему в арсенале заменяют специализированные интернет-ресурсы, представляющие из себя базу данных со всеми известными уязвимостями, а так же готовые скрипты со встроенным поиском уязвимостей в базе данных.

После того, как полученная на этапе перечисления информация проанализирована, уязвимости найдены и сгруппированы по показателям эффективности, исследователь, желающий перейти к непосредственной атаке, применяет найденный или написанный собственноручно сплоит и становится хакером :) Сам же процесс взлома основывается на применении специальных программ, эскплуатирующих брешь в безопасности и пост-эсксплуатацию, включающую в себя заливку шеллов, повышение привелегий в системе и прочие нелегитимные действия.
Подытожим: взлом веб-приложения - это перечисление, анализ полученной информации и последующая эксплуатация обнаруженных уязвимостей.
Если стоит цель оптимизировать процесс взлома, то в глаза сразу бросится второй этап - анализ информации. Процедура поиска уязвимостей - действие категорически времязатратное, поэтому в узко-профилированных задачах это мероприятие автоматизируется за счёт создания локальной базы уязвимостей тестируемого продукта и дальнейшего обращения к ней, либо синхронизации сканера с онлайн-ресурсами. То есть по завершении фазы перечисления уязвимостей, у пентестера уже будет перед глазами информация об известных уязвимостях цели, благодаря чему можно будет сразу перейти к поиску сплоита и эксплуатации.

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

Сканер уязвимостей для WordPress
Самым популярным сканером WordPress среди разработчиков является WPScan, скачать сканер можно с github.com или же обнаружить в предустановленном виде в Parrot Security OS.

Функционал WPScan включает в себя определение версии CMS, анализ установленной темы оформления, перечисление установленных плагинов и функцию брут-форса админки. Помимо вышеперечисленного, предоставляется возможность запустить сканер через прокси, задать значение User-Agent и cookie.

Ознакомиться с передаваемыми параметрами вы можете набрав в терминале
Bash:
wpscan -h
29434


Данный сканер обладает исчерпывающим функционалом для проведения анализа установленной CMS и расширений, постоянно обновляется и служит основой для онлайн-сканеров, обладающих схожим набором возможностей. Разработан продукт при поддержке Sucuri - компанией, занимающейся обеспечением безопасности сайтов клиентов. Для полноты картины рекомендую ознакомиться со спектром предоставляемых услуг, получите много пищи для размышлений.

После применения сканера, вы получите полную информацию о версиях плагинов, самой системы контент-менеджмента, темы оформления и прочие данные, получаемые на стадии перечисления. Рутинную работу поиска уязвимостей сканер выполнит тоже за вас, в отчете вы увидите перечень уязвимостей и ссылки на их описание.
При исследовании безопасности WordPress этот сканер послужит на славу, но прошу учесть, что трафика на анализ уходит много, даже при сканировании "голого" сайта, сканер получил и передал 28 мегабайт информации, заняв в оперативной памяти 180 мегабайт, если собираетесь тестить на Raspberry Pi, то будьте внимательны, возможно возникновение ошибок из-за нехватки ОЗУ.
Из альтернатив могу привести заезженный Plecost, однако он не обновлялся уже давно, поэтому не рекомендую к использованию новичкам. Для энтузиастов же, Plecost применим из-за меньшей, по сравнению с WPScan, ресурсоёмкостью. В результате небольшого допиливания является отличным средством для выявления в сети сайтов с уязвимыми версиями плагинов.

Настройка Plecost для проведения массовой эксплуатации - дело не трудное. Чтобы произвести массовое сканирование, вам нужно определиться с искомым плагином и его версией, спарсить по доркам ссылки, прогнать список через сканер. Это в упрощённом варианте. Ну а после нахождения, разумеется, сообщить о найденных уязвимостях владельцам сайтов.

Об онлайн-сканерах скажу только то, что пользоваться ими, когда было принято решение стать пентестером - глупость. Серверная часть этих сканеров выполняет те же действия, что и WPScan, но формирует приятный и понятный отчёт, легко воспринимаемый людьми, не привыкшими к консольному интерфейсу.
Обратите внимание! Онлайн-сканеры почти наверняка ведут запись логов, поэтому использование вышеупомянутых в бою недопустимо, как минимум из соображений безопасности.
Выбор и установка уязвимого плагина. Оценка многообразия.
Основная масса уязвимостей заложена в плагинах, поэтому перейдём к поиску и установке такого вот "ненадежного товарища".
Сайты для получения справки по обнаруженным и опубликованным уязвимостям:
Код:
https://wpvulndb.com/
http://exploit-db.com/
На wpvulndb новичку сразу бросится в глаза, что огромное количество плагинов несет в себе уязвимости разных типов. Начиная от XSS,LFI и заканчивая "дырами", открывающими возможность перед хакером чуть-ли не сразу исполнить код на сервере. Причин такого многообразия несколько, но разберу две основные:
  1. Первая причина - невнимательность! При разработке популярных и не очень популярных плагинов, нередко заказчик обращается с ТЗ на фриланс-биржи, где уставшие индусы не всегда проверяют свой код на наличие различных недочетов и недоработок. Как пример - очень большое количество уязвимостей в плагинах для WordPress основаны на том, что девелопер оставляет функции или переменные, используемые на стадии дебаггинга. Такие уязвимости обнаруживаются и исправляются почти моментально, но всё же стоит быть внимательным и не забывать про обновления.
  2. Второй причиной является "закладка" бэкдора самим разработчиком. Довольно распространённое явление, злоумышленники клонируют функционал известных плагинов и публикуют свой. После скачивания и установки владельцу бэкдора падает уведомление, иногда для отправки уведомлений используется электронная почта, поэтому отследить подозрительную активность по логам не составит труда. После выявления уязвимости в плагине ноу-нейм разработчика, последний либо пропадает, либо выпускает два-три обновления с закрытой брешью, а потом в его замечательном плагине снова находят бэкдор. В общем, никому нельзя доверять.
В рамках ознакомления с пентестом WordPress, мною было принято решение не усложнять первую практику для тех, кто заинтересован в изучении безопасности CMS. На деле эксплуатация уязвимостей требует довольно большого количества навыков, а навыки в свою очередь новичок получает с огромным трудом, особенно на ранних этапах. Я продемонстрирую то, как применяя простые в использовании скрипты, даже крайне "зеленый" пентестер может убедиться в важности профессии, осознать ответственность и риски.

Для первого опыта я рекомендую установить плагин , так как с помощью инструмента XAttacker без каких-либо глубоких знаний можно будет получить свой первый "профит" в виде загруженного на сервер файла.

Подготовка сайта к проведению атак.
Чтобы повторить упражнения, приведенные в этой статье, вам понадобится:
  • даунгрейд версии WordPress до 4.7.1
  • установленный плагин addblockblocker
  • словарный пароль администратора
Процедура отката версии WP была описана мною в предыдущей статье, ознакомиться с ее содержанием можно по этой ссылке: Установка и подготовка CMS WordPress для нужд начинающего пентестера или WP PenLAB - своими руками - часть 1
Скачаем, запакуем и установим плагин addblockblocker.

Сперва выполним следующие команды в терминале:
Bash:
wget -r -np -nH http://plugins.svn.wordpress.org/addblockblocker/trunk/
cd addblockblocker/
zip -r addblockblocker.zip trunk/
В результате получим архив, который необходимо установить на наш сайт, перейдя в Плагины-Добавить новый-Загрузить плагин

29433


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

Перейдём к практике. Эксплуатировать будем уязвимость в CMS WordPress 4.7.1, в плагине "addblockblocker" и применим атаку брутфорсом. Сначала предлагаю удобно организовать рабочее место. Создайте директории для отчетов, откройте терминал и браузер.

Приступим к исследованию нашего сайта на уязвимости. Сканирование произведем с помощью WPScan:
Bash:
wpscan --url your_site -o your_path/to/file/file.txt
На выходе получаем результат(при выводе в терминал):

29435


В отчёте будет предоставлена информация о найденных уязвимостях, там мы увидим следующие строки, которые нас интересуют на данный момент:
Код:
WordPress 4.7.0-4.7.1 - Unauthenticated Page/Post Content Modification via REST API
Adblock Blocker 0.0.1 - Arbitrary File Upload
Эксплуатация Unauthenticated Page/Post Content Modification via REST API.
Я не просто так выбрал эту уязвимость в качестве примера. Эта лазейка в WordPress 4.7 - 4.7.1 позволяет атакующему изменять содержание публикации на сайте. Разумеется, хакер не будет менять тело публикации полностью, дабы не напрягать администратора сайта лишними движениями, а просто допишет вредоносный скрипт и скроет его содержимое от посторонних глаз. Для того, чтобы ознакомиться с эксплуатацией уязвимостей на уровне скрипт-кидди, я прилагаю ссылку на python-скрипт. Скрипт выполняет атаку и заменяет выбранный вами пост содержанием текстового файла.

Приступим. Скачиваем сплоит отсюда: . Не забудьте проверить расширение файла, python-скрипты имеют расширение .py

После скачивания открываем терминал и вводим команду:
Bash:
python name_of_sploit.py http://url.url/ 1 file_with_content.txt
После того, как скрипт отработает, обновите страницу поста и проверьте содержание. Все, что вы укажете в файле, будет внесено в тело записи.

29439


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

Эксплуатация Adblock Blocker 0.0.1 - Arbitrary File Upload. Связка с XAttacker для простоты использования и получения первого профита.
Подготовимся к атаке на уязвимый плагин и установим XAttacker. Если коротко говорить о том, что представляет из себя данный инструмент, то можно уложиться в два слова - почти вишмастер. Скрипт может анализировать список сайтов, обнаруживать уязвимые плагины для разных CMS, в том числе WordPress, а затем автоматически заливать шелл. Подробнее ознакомиться с функционалом можете на гитхабе. Перед использованием рекомендую сразу создать файл, содержащий URL вашего сайта с уязвимым плагином.

Установка и запуск XAttacker:
Bash:
git clone https://github.com/Moham3dRiahi/XAttacker.git
cd XAttacker/
perl XAttacker.pl
После запуска скрипта вам будет предложено дать на исследование ваш список сайтов либо воспльзоваться парсером поисковика, для того чтобы сформировать свой список. Выбираем первый вариант, указываем путь к файлу с адресом нашего сайта, наблюдаем за процессом. Если все шаги были выполнены верно, то вы увидите в терминале заветные строчки:

29432


Далее переходим по ссылке, следующей за уведомлении о том, что шелл залит, и видим перед собой форму для загрузки файлов. Поздравляю, первый сайт можно считать заовненым :)

Эксплуатация была не сложной, но показательной. Настоятельно рекомендую изучить всю информацию об уязвимости в этом плагине и сравнить её причины с другими уязвимостями, позволяющими нелегитимно загрузить файл на сервер.

Bruteforce-атака на словарный пароль.
Про брутфорс WordPress и без того сказано уже очень много, подробнее про механику процесса можно узнать, ознакомившись со статьей Получение контроля над WordPress с помощью использования XML-RPC
Я в практике использую два python-скрипта, скачать их и ознакомиться с функционалом можно перейдя по ссылке: n00py/WPForce
В этом наборе читателя должен интересовать в первую очередь скрипт с названием WPForce, с его помощью мы и переберем наш словарный пароль.

Выполним следующие команды:
Bash:
git clone https://github.com/n00py/WPForce
cd WPForce/
Теперь создадим два текстовых файла. Первый будет хранить имена пользователей, во втором же будут указаны пароли для перебора.
Bash:
nano usr.txt
29436

Bash:
nano pwd.txt
29437


Запустим брутфорс:
Bash:
python wpforce.py -i usr.txt -w pwd.txt -u "YOUR_URL"
Если все шаги были выполнены правильно, то на выходе мы увидим найденную пару логин-пароль от аккаунта администратора. Получив эту ценную информацию, злоумышленник получит полный доступ ко всем файлам в директории сайта,загрузит шелл и закрепиться на цели. Пост-эксплуатацию рассмотрим позднее.

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

Заключение.
Считаю, что первые шаги в инфобезе должны быть осознанными и аккуратными. Получение знаний, опыта эксплуатации уязвимостей и устранения брешей в безопасности ресурса - крайне важны для начинающего пентестера. Изучение проблематики возникновения уязвимостей занимает в несколько раз больше времени, если не отрабатывать полученную информацию на практике. Если у тебя есть интерес, желание и время на развитие, то советую тщательно изучить другие уязвимости, найти к ним сплоиты и научиться хотя-бы быстро и без мучений пользоваться готовыми скриптами, не забывая заглядывать в их код. Знание механик заражения, эксплуатации и защиты приведут тебя к карьере, о которой ты мечтал. Не сдавайся и становись лучше!
 
класс, было бы очень интересно почитать про joomla
 
Выдает ссылку на сайт с XAttacker.gif
При переходе не чего нет, как быть? как шелл заливается ?
 
WPscan показал парочку уязвимостей. С ним разобрался, а вот как дальше? Не могу найти как проексплуатировать.
CVE-2015-9357 - Akismet старый
CVE-2020-10568 - ещё один плагин
 
Здравствуйте, а кто может посоветовать или рассказать как правильно скрыть юзеров при сканировании wpscan-ом. Спасибо
 
Добрый день, форумчане !
Подскажите как взломать cms WordPress со сложным паролем. Так как брутфорс будет очень долго перебирать.
Буду благодарен.

Сорри за тупой вопрос.
Всем добра 👍
 
Я использую его, вопрос в другом. Читайте внимательно.
Прочитал ещё пару раз. Постарался быть очень внимательным. В посте упоминание про wpscan всё-равно не появилось.
Я к тому, что если версия не уязвима (или нет уязвимых плагинов, которые, как раз и можно найти wpscan'ом), то только брутфорс или соц. инженерия.
 
Помогите решить проблему с WPScan, я пытаюсь запустить сканирование сайта, а софтина мне вовращает ошибку:
Scan Aborted: The url supplied 'http://nppl.ru/' seems to be down (Server returned nothing (no headers, no data))
Помогите, как исправить? Сайт точно на WP, версии 4.4.25, вот админка:
 

Вложения

  • VirtualBoxVM_ru42pMyf4l.png
    VirtualBoxVM_ru42pMyf4l.png
    190,9 КБ · Просмотры: 8
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!