Изучим атакующую возможность Burp`а - Intruder. Intruder дает возможность моифицировать запрос по маскам и слать его, например так можно пробрутить админку, чем мы с тобой сейчас и займемся.
Да, я знаю где лежат логин и пароль дефолтные от DVWA
Итак, запущеный барп, запущеный браузер, настроеные прокси на барп - это все что сейчас понадобится. Открываем урл DVWA и попадаем на форму авторизации. Вводи любые данные и жми "Login" - это нужно чтобы барп поймал запрос.
Смотри в барп, вкладка Target -> Site map.
Видно? ПКМ на пост запросе. Теперь нужно перейти на вкладку Intruder
Тут остановимся подробнее. Большое текстовое поле - это твой сырой HTTP запрос, который тебе нужно настроить т.е. указать какие параметры ты хочешь модифицировать. Посмотри внимательно, значение параметра password обернуто в спец символ и тоже самое в значении user_token. Вот управлять этим можно кнопками Add, Clear, Auto. Выделил что нужно менять и жмешь соответствующую кнопку. Auto отметит все значения для всех параметров.
Типы атак:
- Sniper - подставление payload исключитьтельно в первую позицию. Т.е. обработка только одного параметра.
- Battering ram - Подставление одного значения payload во все выделеные параметры.
- Pitchfork - Подставление по одному значению из каждого списка payload для каждого параметра.
- Cluster bomb - Перебор всех комбинайций payload.
Объяснию, если требуется протестировать только один параметр, например на XSS, то нужно выбирать тип снайпер и таргетить только один параметр. Ты также можешь выбрать Battering ram если хочешь чтобы один и тотже пейлоад вставал на место нескольких значений. Cluster bomb используется как раз для брута. В нашем случае Pichfork, потому что нам нужно грепить CSRF токен из ответов сервера. CSRF токенизация используется только для POST запросов и необходима для обеспечения защиты от подделки этих запросов. Итак я выделали параметр для пароля, чтобы подставлять туда значения и user_token, чтобы подставлять туда CSRF токен.
Переходим к настройке пайлоадов (полезная нагрузка).
Payload set - список выбраных пейлоадов (они считаются слева на право, сверху вниз), пароль я выбираю тебя выбирай пароль. Pyload type - тип подстваляемого значения, в данном случчае это обычный список. В опциях пейлоада, в выпадающем списке найди Passwords и тыкни. Паролей достаточно много.
Теперь сложнее. Выбирай в пайлоад сетс - 2
А тип пейлоада Recursive grep. Теперь нужно узнать как именно в HTML выглядит поле с токеном. Для этого можно перейти куда угодно: вернуться на вкладку Position и на поле запроса ПКМ или в Target и тоже самое или в Proxy
Инструмент Repeater позволяет руками модифицировать запрос и отправлять его на сервер и потом анализировать ответ. Переходи на вкладку Repeater.
Сейчас нам не нужно ничего модифицировать, поэтому просто жми "GO", справа увидишь ответ, с каким кодом он пришел? Правильно 302! Никакого контента этот ответ не может содержать, нам нужно перейти по Location, для этого жми "Follow redirection".
Выделил стрелочку, они помогают перемещаться по истории запроса. Теперь код ответа 200 и он содержит html. Крути вниз пока не найдешь форму и инпут с токеном. Ниже полей запроса и ответа есть поиск, если что. Т.е. CSRF токен содержится в
<input type='hidden' name='user_token' value='TOKEN' />
Отлично, теперь ты умеешь пользоваться репитером :-) Возвращаемся в интрудер.
Отмечаем галочку на скрине и жмем Add.
Внизу виден ответ от сервера. Да неудобно что тут именно 302 ответ светится, когда нам нужен переход по редиректу, поэтому появилась вставка с рептером. Указываем в полях шаблон для выдергивания токена, тут надо писать так, как есть в html и тут не поддерживаются регулярки, регулярки справа. Отметим галочку, чтобы не парсил загловки. Жмем "OK". Обрати внимание, токен содержится именно между тем, что я ввел в поля.
Теперь надо отметить редирект в пределах сайта, также длина CSRF токена всегда равна 32 и пересылаем куки, если нас залогинит, нам должны выдать другие куки.
И еще надо убрать многопоточный режим, так как Recursive grep его не поддерживает. Возвращаемся в Payloads
и видим, что наше выражение для grep встало. Отлично, можно жать "Start attack".
Окно атаки интрудера показывает каждую итерацию по списку пэйлоадов. Внизу отображены запросы и ответы, сейчас у нас по 2 запроса и по 2 ответа, потому что сайт редиректит. На скринах я выделил, как работает Recursive grep
Т.е. перед следующим запросом парсится токен из предыдущего запроса и вставляется в запрос. Поэтому не поддерживается многопоточность. Пользователь user у нас не прошел, пробуем admin. Когда закончит можешь просто закрыть окно. Перейти в настройки запроса интрудера и вписать вместо user admin и запустить.
Таким же образом можно тестировать любые параметры на все что угодно. Мы еще вернемся не раз к интрудеру и репитеру.