Веб‑фаз­зинг — это спо­соб узнать о сай­те боль­ше, чем хотел бы раз­работ­чик. Нем­ного ска­ниро­вания, и ата­кующий может най­ти скры­тые фай­лы, кон­фиги или дру­гую инфу, которая ста­нет точ­кой вхо­да. Эта статья покажет, как методич­но и прак­тично выжимать мак­симум информа­ции из веб‑при­ложе­ний.

warning

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

Fuzzing — авто­мати­чес­кий метод тес­тирова­ния, ког­да при­ложе­нию на вход пода­ются слу­чай­ные или недопус­тимые дан­ные. Коман­да OWASP, объ­ясняя фаз­зинг, пред­лага­ет рас­смот­реть игру, в которой поль­зовате­лю зада­ется воп­рос и пре­дос­тавле­ны три вари­анта отве­та: 1, 2 или 3. Но что, если в ответ отпра­вить 5? Или 255? Может быть, вооб­ще не чис­ло, а сим­вол? Это клас­сичес­кий метод фаз­зинга.

Легенда о появлении фаззинга

В вось­мидеся­тых годах про­фес­сор Бар­тон Мил­лер и его коман­да работа­ли над про­ектом по тес­тирова­нию надеж­ности прог­рамм в усло­виях помех. По леген­де, уче­ные обра­тили вни­мание на «белый шум» на телефон­ной линии во вре­мя гро­зы. Этот шум и называ­ют fuzz. Коман­да решила поп­робовать «зашуметь» дан­ные на вход прог­раммы — подавать слу­чай­ные, бес­смыс­ленные, «раз­мытые» (fuzzy) дан­ные.

В вебе хакеры фаз­зят, что­бы най­ти чувс­тви­тель­ные час­ти при­ложе­ния: пап­ку с уяз­вимой админкой, дамп базы дан­ных или авто­копию кон­фига. Фаз­зинг на вебе — это перечис­ление по заранее сос­тавлен­ным сло­варям.

Тул­за для фаз­зинга пос­троч­но про­ходит сло­варь, отправ­ляя зна­чения как часть зап­роса. Про­цесс мож­но пред­ста­вить в виде диало­га меж­ду кли­ентом и сер­вером:

— Есть файл passwords.txt?
— Нет.
— Может, password.txt?
— Тоже нет.
— Может, wp-config.php.bac?
— А это есть, дер­жи содер­жимое...

Те­перь у тебя в руках кре­ды от базы дан­ных и про­чее, что лежало в забытом фай­лике.

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

 

Словари

Сло­вари — это заранее сос­тавлен­ные спис­ки вари­антов. Быва­ют сло­вари обще­го наз­начения вро­де спис­ка инте­рес­ных дирек­торий и имен фай­лов. При­мер сло­варя:

.bash_history
.bashrc
.cache
.config
.cvs
.cvsignore
.env
.forward
.git
.git-rewrite

Этот сло­варь ори­енти­рован на поиск чувс­тви­тель­ных фай­лов. Если мы вдруг най­дем https://site.com/.gitignore, есть шанс, что внут­ри оты­щут­ся пути к дру­гим инте­рес­ным фай­лам.

Мно­гие наз­вания из спис­ка име­ют мало шан­сов зас­ветить­ся в сети. Тот же .env обыч­но зак­рыт пра­вила­ми веб‑сер­вера, а .bash_history поч­ти никог­да не попада­ет в пап­ку веб‑сер­вера.

Но отли­читель­ная чер­та фаз­зинга как раз в том, что про­веря­ются даже самые ред­кие вари­анты. Мы ведь хотим знать, что админ слу­чай­но оста­вил свой .bash_history в общем дос­тупе? Зна­чит, не помеша­ет про­верить!

Су­щес­тву­ют сло­вари, сос­тавлен­ные спе­циаль­но для опре­делен­ных задач. При­мер пер­вых строк из спис­ка пла­гинов WordPress:

0-delay-late-caching-for-feeds
0-errors
0gravatar
0mk-shortener
001-prime-strategy-translate-accelerator
1-1
1-bit-audio-player

Ес­ли мы тес­тиру­ем сайт на WordPress, то можем обра­щать­ся к таким адре­сам, исполь­зуя этот спи­сок:

https://site.com/wp-content/plugins/название-плагина/

Так мы опре­делим, какие пла­гины уста­нов­лены на сай­те, и если оты­щут­ся уяз­вимые вер­сии, то смо­жем поис­кать готовые экс­пло­иты для них или соз­дать самос­тоятель­но по опи­сани­ям уяз­вимос­тей.

Есть целые биб­лиоте­ки сло­варей вро­де популяр­ного SecLists (он пре­дус­танов­лен на Kali) и FuzzDB. В наборах фай­лы обыч­но раз­биты по катего­риям. Я буду исполь­зовать SecLists, пап­ку Discovery. В этой пап­ке лежит все необ­ходимое для сбо­ра дан­ных о веб‑при­ложе­нии: сло­вари для DNS-фаз­зинга, боль­шие спис­ки имен фай­лов и папок, перечис­ления API и спе­цифи­чес­кие име­на для раз­ных CMS.

Часть папки Discovery/Web-Content из SecLists
Часть пап­ки Discovery/Web-Content из SecLists

Ус­танови оба набора на свою машину и покопай­ся в пап­ках, раз­берись, какие сло­вари есть внут­ри.

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

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

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

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

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

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

    Подписаться

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