Перевод: Типы атак в Intruder (Burpsuite)
@Ent_TranslateIB
Давненько я не публиковал никаких статей. Сегодня я хотел бы написать о типах атак, используемых в программе intruder. Я пропускаю все другие части, предполагая, что у вас есть предварительные знания. так что давайте начнем.
Intruder
Intruder - это встроенный инструмент Burp Suite, используемый для фаззинга. Мы перехватываем запрос, передаем его в Intruder и используем его как шаблон для отправки манипулируемых значений в нужное поле. Допустим, мы перехватили запрос, содержащий форму входа в систему, здесь мы можем манипулировать полями имени пользователя и пароля в соответствии с нашими пожеланиями для перебора. Мы можем передать желаемую полезную нагрузку в любые поля. Не только в формах входа, это может быть применено в любом контексте. Например: мы можем передать в фаззинг поддиректории, конечные точки или виртуальные хосты, используя некоторые словари.
Мы не будем много говорить об intruder, скорее о его типах атак. В intruder доступны четыре типа атак:
- Sniper
- Battering ram
- Pitchfork
- Cluster bomb
Sniper
Это очень распространенный тип атаки. Этот тип атаки использует только один набор полезной нагрузки, который содержит словарь. Целевые позиции снабжаются значениями по одному. Этот тип атаки полезен для проверки нескольких параметров запроса по отдельности на наличие таких распространенных уязвимостей, как "SQL injection и XSS".
Допустим, у нас есть две позиции, в которые нам нужно передать полезную нагрузку
username=$username$ и password=$password$.
Теперь Sniper заполняет каждую позицию полезной нагрузкой по очереди. Допустим, наш словарь содержит следующее:
1. яблоко
2. мяч
3. кот
Поэтому наш запрос выглядит следующим образом:
username=$apple$ и password=$password$
username=$ball$ и password=$password$
username=$cat$ и password=$password$
username=$username$ и password=$apple$
username=$username$ и password=$ball$
username=$username$ и password=$cat$
Или если бы это был какой-то другой вариант, например:
https://medium.com/list_of_things?search=$value$
тогда запрос будет выглядеть следующим образом
https://medium.com/list_of_things?search=$яблоко$
https://medium.com/list_of_things?search=$мяч$
https://medium.com/list_of_things?search=$кошка$
Мы можем подсчитать количество запросов, которые делает этот режим, как :
запросы = количество слов в словаре * количество позиций
Мы можем использовать этот режим для атак на позиции. Допустим, мы узнали имя пользователя, но не знаем пароль. Мы можем перебрать пароль здесь. Также, допустим, нам нужно проверить конечные точки API или какую-то директорию и т.д.
Battering Ram
Это также атака с одной полезной нагрузкой. Она имеет одну полезную нагрузку и помещает ее во все позиции и перебирает все полезные нагрузки. В отличие от Sniper, заполняющего позиции по очереди, он использует одно слово из словаря, заполняет им все позиции, затем берет другое, заполняет все позиции и так далее. Эта атака может быть использована, когда, скажем, имя пользователя и пароль одинаковы или все поля требуют одинаковых значений.
Допустим, у нас есть две позиции, в которые нужно ввести полезную нагрузку
username=$username$ и password=$password$.
Теперь Battering Ram делает то, что он заполняет каждую позицию полезной нагрузкой и переходит к следующей. Допустим, наш словарь содержит следующее:
1. яблоко
2. мяч
3. кот
Таким образом, наш запрос выглядит следующим образом:
username=$apple$ и password=$apple$
username=$ball$ и password=$ball$
username=$cat$ и password=$cat$
Или если бы это был другой вариант, например:
https://medium.com/list_of_things?search=$value$¶meter=$same_value$.
то запрос будет выглядеть следующим образом
https://medium.com/list_of_things?search=$apple$¶meter=$apple$
https://medium.com/list_of_things?search=$ball$¶meter=$ball$
https://medium.com/list_of_things?search=$cat$¶meter=$cat$
Мы можем подсчитать количество запросов, которые делает этот режим, как :
запросы = количество слов в словаре
Pitchfork
В отличие от вышеописанных режимов, здесь используется несколько наборов полезной нагрузки, т.е. (словари). Это похоже на использование разных снайперов для каждой позиции. Один снайпер для одного параметра и другой для другого. Это похоже на использование функции "один к одному". Если есть два поля, мы используем два словаря, а затем вставляем элементы каждого словаря в соответствующую позицию. Так как это один к одному и набивка элементов из полезной нагрузки должна выполняться одновременно, т.е. элементы словаря1 набиваются в параметр1, а элементы словаря2 - в параметр2, оба словаря должны содержать одинаковое количество элементов. Если они отличаются строками, то успешно используется только минимальный из них. Например.
Словарь1:
1. яблоко
2. Мяч
3. Кот
4. Собака
Словарь2:
1. 11111
2. 2222
3. 333
4. 4444
5. 5555
то общее количество циклов будет равно 4, потому что среди двух словарей словарь1 имеет наименьшее количество элементов в списке полезной нагрузки. таким образом "5555" из словаря2 будет проигнорирован.
Теперь, чтобы показать, как это работает, предположим, что у нас есть
username=$parameter1$ и password=$parameter2$.
Выполнение будет выглядеть следующим образом:
username=$apple$ и password=$11111$
username=$ball$ и password=$2222$
username=$cat$ и password=$333$
username=$dog$ и password=$4444$
Эта атака полезна для подбора учетных данных, если у нас есть список имен пользователей и паролей, то мы можем эффективно его использовать.
Примечание: За один раз может быть использовано не более 20 полезных нагрузок одновременно.
Cluster bomb
В ней также используется несколько полезных нагрузок, как и в случае с pitchfork, но в отличие от pitchfork, раньше элементы располагались по порядку и один за другим, в соответствии с номером, и это был один к одному. Теперь это происходит по принципу "многие ко многим", т.е. если есть два набора полезных нагрузок (словарей), то каждый элемент словаря1 будет сопряжен с каждым элементом словаря2. Это гарантирует, что все возможные комбинации словарей будут использованы в атаке.
Например:
Словарь1:
1. яблоко
2. Мяч
3. Кошка
Словарь2:
1. 11111
2. 2222
3. 333
Теперь возможные пары будут следующими
Пары:
1. яблоко, 11111
2. яблоко, 2222
3. яблоко, 333
4. мяч, 11111
5. мяч, 2222
6. мяч, 333
7. кот, 11111
8. кошка,2222
9. кошка,333
Так что если у нас есть
username=$parameter1$ и password=$parameter2$
Выполнение будет выглядеть следующим образом:
username=$apple$ и password=$11111$
username=$apple$ и password=$2222$
username=$apple$ и password=$333$
username=$ball$ и password=$11111$
username=$ball$ и password=$2222$
username=$ball$ и password=$333$
username=$cat$ и password=$11111$
username=$cat$ и password=$2222$
username=$ball$ и password=$333$
Примечание: Здесь мы также можем использовать максимум 20 словарей, и в отличие от pitchfork, все элементы в словарях проверяются, независимо от количества элементов в полезной нагрузке.
Спасибо.
Оригинал статьи - здесь.
Поддержите автора хлопками на Medium.
Перевод статьи был выполнен проектом перевод энтузиаста:
- 📚 @Ent_TranslateIB - Телеграмм канал с тематикой информационной безопасности
- 🔥 @Ent_Translate - Инстаграм проекта