Часто при аудите веб-приложений требуется проанализировать ответ веб-сервера и на основе его анализа сделать какие-то выводы (желательно в сводную таблицу результатов). Burp Intruder — популярный инструмент для комбинированных атак на параметры HTTP-запроса. Но кроме извлечения данных из HTML-ответов по простейшей регулярке, он не умеет никак их анализировать. Исправим это и прикрутим к Intruder свой кастомный процессинг ответов сервера на Python.

Задача

Для демонстрации подхода возьмем простую задачу: есть форум, который по URL вида http://forum.local/groups/<ID>/users/ выдает список юзеров из группы с ID = . Список ID групп есть, их около сотни. Задача: найти группу с наибольшим количеством юзеров, а остальные отсортировать по убыванию.

GET /groups/1/users/ HTTP/1.1
Host: forum.local
По URL с ID категории отдается таблица со списком юзеров
По URL с ID категории отдается таблица со списком юзеров

Ответ сервера:

...
<table class="users">
  <tbody>
    <tr class="user">
      <td class="name">Etha Marquardt</td>
      <td class="email">Cyrus.Kemmer@yahoo.com</td>
      <td class="adress">22579-1558, Macedonia, 528 Heathcote Mount</td>
    </tr>
    <tr class="user">
      <td class="name">Alexzander Ritchie I</td>
      <td class="email">Alejandra.Frami86@yahoo.com</td>
      <td class="adress">62299, Cuba, 147 Hudson Plains</td>
    </tr>
    ...
  </tbody>
</table>
...

Очевидно, нам нужно распарсить HTML-страничку и подсчитать количество <tr class="user">, а затем вывести это значение в таблицу результатов. Burp не предоставляет возможностей стороннего постпроцессинга ответов. Научим его!

Решение

Идея состоит в том, чтобы:

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

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

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

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

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


Check Also

Неинновационные инновации. Откуда растут корни технологий Apple

Тройная камера, умный режим HDR, «ночной режим» Night Shift, True Tone, Liquid Retina Disp…

8 комментариев

  1. Аватар

    clicker314

    06.10.2016 at 13:47

    Годная статья. Спасибо!

  2. Аватар

    vasian_adidas

    06.10.2016 at 15:42

    Желаю рака всем кто принимал активное участие в становлении хакера как платной параши. Пол страны на дошикиках экономит, а у них подписка 4к

    • Аватар

      clicker314

      06.10.2016 at 15:56

      Бесплатно только мухи серут — но толку от этого мало.

      Я бы и 10к платил без проблем, если-бы форум нормальный сделали.

    • Ilya Rusanen

      Илья Русанен

      06.10.2016 at 18:02

      «Хакер» всегда был платным. Ну и да, авторы за «Дошики» статьи писать не рвутся. Может, ты станешь первым?)

  3. Аватар

    aquamoney

    09.10.2016 at 21:08

    Я, может, что-то не понял, но неужели не проще сделать эту задачу на NodeJS с использованием библиотеки request и jquery? Зачем городить вот такое?

    • Ilya Rusanen

      Илья Русанен

      09.10.2016 at 21:42

      Привет!

      Я писал:

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

      Это просто синтетический пример для демонстрации техники работы с хуками Burp.

      На Node.js, разумеется, можно. Можно и с request,и без request, и без jquery и даже даже без Node.js =).

      Но во время аудита для типовых задач чаще используются готовые тулзы, а не пишутся свои. А так-то да, я только за пожонглировать коллбеками)

  4. Аватар

    madglow

    09.02.2017 at 08:32

    Возможно я придираюсь, но «Скачай его, разархивируй в любую папку» не равно «Скачай его и проинсталируй». Просто распакованный архив(в отличии от установленного Jython) не содержит pip в /bin.

  5. Аватар

    r0uly

    29.05.2019 at 11:05

    Отличная статья! Всем, кто когда-либо писал свой плагин для бурпа и сталкивался с проблемой идентификации «особых» ответов сервера — эта статья будет полезна.

Оставить мнение