Пред­положим, ты уже зна­ешь, что такое пей­лоад и как выпол­нить базовую ата­ку в Burp Intruder. Нас­тало вре­мя пос­мотреть на более глу­бокие тех­ники. В этой статье я раз­беру, как обновлять CSRF-токен при ата­ке, рас­ска­жу, как свя­зать Burp Collaborator и Burp Intruder, научу работать со встро­енны­ми преп­роцес­сорами и соз­давать кас­томные.

warning

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

 

Токены и сессии

То­кены CSRF могут быть проб­лемой при ата­ках с помощью Intruder. Но есть нес­коль­ко воз­можных решений. Пер­вый вари­ант — исполь­зовать пей­лоад Recursive grep. Он меня­ет поведе­ние Intruder, зас­тавляя его пар­сить каж­дый ответ перед тем, как сде­лать новый зап­рос. Сде­лал зап­рос, вытащил токен и под­ста­вил его в сле­дующий зап­рос.

Для тес­та я исполь­зую тес­товое уяз­вимое при­ложе­ние DVWA, прос­то потому, что на уров­не High там есть защита токеном CSRF. Ты можешь исполь­зовать любой сайт, на который получил раз­решение для тес­тов. Если хочешь уста­новить DVWA, сде­лай это через Docker:

docker run -d -p 8085:80 vulnerables/web-dvwa

Burp некор­рек­тно работа­ет с доменом localhost и IP-адре­сом 127.0.0.1, поэто­му добавь в hosts локаль­ный домен:

# Other hosts
127.0.0.1 test.local

Зай­ди на http://test.local:8085/setup.php, логинь­ся с кре­дами admin/admin. Про­мотай вниз, наж­ми кноп­ку соз­дания базы дан­ных. При­ложе­ние соз­даст базу и пред­ложит сно­ва залоги­нить­ся. На этот раз исполь­зуй admin/password. Най­ди меню DVWA Security, изме­ни уро­вень безопас­ности на High.

Пе­ред ата­кой идем на /vulnerabilities/csrf/. Это фор­ма сме­ны пароля, которая защище­на от CSRF. Вби­ваем любые дан­ные и отправ­ляем фор­му, что­бы перех­ватить GET-зап­рос.

Нуж­но убе­дить­ся, что защита от CSRF вклю­чена: пой­ман­ный зап­рос переки­дываю в Repeater и сно­ва отправ­ляю на сер­вер. В отве­те ошиб­ка: при­ложе­ние руга­ется на неп­равиль­ный токен. Зна­чит, мы на вер­ном пути.

Ошибка в токене CSRF
Ошиб­ка в токене CSRF

От­прав­ляю зап­рос в Intruder. Так как это фор­ма сме­ны пароля, в зап­росе два поля, которые дол­жны содер­жать оди­нако­вые дан­ные. Выделяю зна­чения парамет­ров password_new и password_conf, делаю их перемен­ными (или точ­ками инъ­екции, как тебе удоб­нее). В нас­трой­ках пей­лоадов ука­зываю Simple list. Как сло­варь выбираю оди­нако­вые фай­лы с пароля­ми.

warning

Каж­дый раз, ког­да отправ­ляешь зап­рос в Intruder, очи­щай мар­керы кноп­кой Clear. Если в зап­росе был выделен текст, Intruder авто­мати­чес­ки пометит его как перемен­ную. Если не заметишь, ата­ка пой­дет не по пла­ну. Луч­ше при­учить себя очи­щать зап­рос перед началом работы.

Ввер­ху окна Intruder выбира­ем тип ата­ки Pitchfork. При такой ата­ке Intruder пос­ледова­тель­но берет дан­ные из сло­варей, никак не переме­шивая их и не дуб­лируя. У нас два пароля, и к каж­дому при­вязан свой сло­варь. Сна­чала Intruder возь­мет по пер­вой строч­ке и под­ста­вит в соот­ветс­тву­ющие перемен­ные, потом — по вто­рой, и так, пока не закон­чатся сло­вари.

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

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

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

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии