IDOR — самый опас­ный зверь в лесу OWASP. Даже один экзем­пляр, попав­ший не в те руки, может дорого обой­тись ком­пании нашего инже­нера, поэто­му он исполь­зует все воз­можнос­ти, дос­тупные в его белом ящи­ке, что­бы обог­нать на этой охо­те пен­тесте­ров, баг­ханте­ров и зло­умыш­ленни­ков.
 

Действующие лица

  • Дмит­рий — аппсек ком­пании «Пузон­Тех»
  • Рам­сель — баг­хантер
  • Ро­ман — девопс‑инже­нер
  • Игорь — QA-лид

info

По прось­бам выжив­ших все име­на были изме­нены. Из ува­жения к погиб­шим осталь­ные события были отоб­ражены имен­но так, как они про­исхо­дили.

 

Действие первое

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

На сто­ле сто­ит круж­ка кофе, от нее под­нима­ется струй­ка аро­мат­ного пара. В инбоксе по баг‑баун­ти‑алер­там одно новое сооб­щение.

Дмит­рий: Да что там еще, неуж­то опять при­нес­ли пач­ку уче­ток сот­рудни­ков со сти­леров, не надо­едает же им...

Рам­сель: Вот вам IDOR в под­твержде­нии заказа, мож­но получить имя, адрес, телефон ваших кли­ентов и кор­зину, на скри­не — дан­ные про­изволь­ного кли­ента.

Дмит­рий: О, неп­лохо, но у нас же там UUID вез­де в иден­тифика­торах, где ты вооб­ще взял этот ID?

Рам­сель: Бро, а ты зацени веб‑архив по вашему домену!

Дмит­рий: Да, валид­ное. Надо бы поис­кать у нас по логам все такие мес­та.

Ро­ман: Всё есть, схо­ди в ClickHouse, возь­ми аксесс‑логи по внеш­ним балан­сирам.

 

***

Итак, у нас есть аксесс‑логи при­ложе­ния, сто­ит филь­тра­нуть по нашим доменам, по response status < 300 и, воз­можно, толь­ко по авто­ризо­ван­ным поль­зовате­лям (что­бы убрать мусор со ска­неров).

Уже в скрип­те отфиль­тру­ем ста­тику.

За­меним парамет­ры path и query заг­лушка­ми и сгруп­пиру­ем по получен­ному пути, что­бы в резуль­тате оста­лись толь­ко уни­каль­ные руч­ки.

Обя­затель­но оста­вим при­меры сырых дан­ных, они при­годят­ся даль­ше.

В резуль­тате из тра­фика у нас получит­ся CSV.

Да­лее мы можем в этом фай­ле отфиль­тро­вать резуль­таты по колон­кам path и args. Нам нуж­но оста­вить толь­ко те зна­чения, где будут наши заг­лушки для все­го похоже­го на токены или иден­тифика­торы объ­ектов: {uuid}, {hex}, {code} или {int}. К это­му филь­тру впол­не мож­но добавить уже извес­тные нам наз­вания чувс­тви­тель­ных иден­тифика­торов, допус­тим тот же order_id, или auth_token, или еще что‑нибудь.

Даль­ше для отфиль­тро­ван­ных подоз­ритель­ных ручек мож­но взять сырые зна­чения иден­тифика­торов из path_example и args_example, пре­дус­мотри­тель­но сох­ранен­ные нами, скле­ить их обратно в пол­ный путь и спис­ком ско­пиро­вать в сло­варик (Simple list) для Burp Intruder, под­ста­вив к сво­ему GET-зап­росу с акту­аль­ными тес­товыми кре­дами (или вооб­ще без них).

Там, где в отве­те нам вер­нется что‑то, кро­ме 403, — повод пос­мотреть, отда­ет ли сер­вер чужие дан­ные и что в коде эндпо­инта авто­риза­ции.

 

***

Ак­курат­но соб­рав с десяток ручек, отве­тив­ших валид­ными дан­ными на зап­росы, Дмит­рий пошел искать пра­виль­ных раз­работ­чиков и заводить тикеты на исправ­ления.

И надо под­нять вып­лату Рам­селю, мно­го наш­ли проб­лем бла­года­ря его репор­ту.

 

Действие второе

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

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

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

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

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

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

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

    Подписаться

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