Я хакнув нідерландський уряд і отримав за це футболку

Привіт! Ця історія про те, як я хакнув нідерландський уряд і отримав за це футболку :)

Історія насправді якась настільки банальна з технічної точки зору, що мені аж незручно. Про все по порядку.

У вересні 2024 року я святкував свій день народження. Я запостив збір на українських месершмітів, ми збирались в бар, перед виходом було ще трохи часу, і я вирішив — «блін, королівство Нідерланди проводить круту CVD-програму з прикольним свегом. Хакни уряд, і отримай футболку. Мені теж така потрібна!»

Почитавши історії успіху від індійців, які вже отримали такі футболки, і самі правила програми, я зрозумів, що скоуп дійсно класний. Фактично всі державні ресурси Нідерландів, які стирчать в інтернеті — входять в скоуп. Тому я швиденько знайшов списки їх урядових сайтів, зробив пошук по піддоменах (зовсім легенький рекон), і натрапив на сайт, який виглядав як щось застаріле.

Я вирішив не мудрувати. Побачив поле «пошук», вбив туди якесь сміття, і перехопив реквест бурпом. Спробував безрезультатно кілька базових пейлоадів, і вирішив зробити те, що я роблю майже завжди одним з перших пунктів, коли зустрічаю цікавий параметр на пентесті. Я розчехлив сканер бурпа 😁

Для тих, хто не в курсі. Бурп можна попросити просканувати весь сайт. Але це дуууже довго, і зазвичай не дає ніяких цікавих результатів. Але у сканера бурпа є чудова функція, яка дозволяє просканувати один конкретний параметр. Для цього треба відправити реквест в інтрудер, виставити параграфи навколо параметра, який вас цікавить, і запустити «scan defined insertion points». Тоді бурп в 200-300 реквестів швиденько підфаззить саме цей параметр, використовуючи наші кукі та інші параметри з реквеста, і є шанс, що там знайдеться вразливість. Це не дуже надійна стратегія, але час від часу вона приносить мені результати одразу, без подальшого копання вглиб. В портсвіггера є навіть лаба, як це робиться.

Зауважу, що я не зовсім прям так тупо ткнув скан. По дефолту цей скан був би досить агресивний, і скоріш за все обламався б об рейт ліміти. Тому в «resource pool» я виставив тільки один потік, а в ділей між реквестами поставив чи то 1337 мілісекунд, чи то 13337 мілісекунд, щоб не стукатись об рейт ліміти.

Десь в той момент, коли я запустив скан, вже пора було виходити в бар, тому я просто встав з-за компа і пішов, не маючи ніяких виразних сподівань на цю історію. Але коли я повернувся ввечері та зібрався в доту, потягнувся закривати бурп... І побачив в ньому примітив звичайної blind postgresql SQL-ін’єкції 🥴

Покрутивши трошечки примітив, я зрозумів, що в мене є можливість контролювати функцію sleep, і респонси приходять з затримкою в 5, 10 і 20 секунд. Логічні примітиви типу OR, AND, XOR теж працювали як треба. Blind time based SQL injection, як вона є. Я вирішив проспатись трошечки, а вранці написав і відправив красивий і професійний звіт про цю вразливість в їх національний центр кібербезпеки.

Чому я не став «докручувати» цю вразливість? Ну насправді тут все дуже просто. Маючи на руках примітив експлоіта, я вже був впевнений, що вразливість тут є. Ну не має параметр «search» виконувати функцію sleep(10). Якби це був пентест проєкт чи оплачуване баг баунті, то для верифікації імпакту я б намагався піти далі, зробити weaponization експлоіта, потягнути якісь назви баз, таблиць, колонок. Можливо, написати кастомний tamper script для sqlmap, тому що руками крутити blind time based sqli це дуже муторно.

Але оскільки це державна CVD, то я вирішив не докручувати вразливість, щоб не нариватись. Вирішив, що зарепорчу це як є, а докручувати буду, якщо мені тріажер скаже, що «я не бачу тут імпакта, фіксити не будемо, закриваю тікет». І протягом кількох годин мені прийшла відповідь, що вразливість прийнята, і вони будуть це фіксити. Радість 😊

Електронний лист з підтвердженням вразливості від національного центру кібербезпеки Нідерландів

Через кілька місяців, десь в січні, я перевірив цю вразливість знову, і виявилось, що вона вже пофікшена. Знову написав їм, вони підтвердили, що все добре, і сказали, що хочуть відправити мені посилку з футболкою. Знову радість 😊

Ще через кілька місяців і футболка прийшла. На все про все від репорту до футболки пройшло скромних ~7 місяців. А на сам пошук вразливості та репортінг пішов ~день.

Посилка з Гааги

Які висновки ми можемо зробити з цієї історії?

Ну, по-перше, вразливості всюди навколо нас. Немає абсолютно безпечних систем, немає ідеально захищених урядів. Я впевнений, що якщо погріндити цю CVD-програму, то можна знайти ще багато чого цікавого. Конкретно в моєму випадку існує дуже висока ймовірність, що за допомогою цієї вразливості зловмисники могли б злити якусь конфіденційну інформацію про нідерландських підприємців, що і було попереджено (чи зупинено) моїм звітом.

По-друге, поважайте рейт ліміти й правила багбаунті/CVD/VDP програм. Немає сенсу лупити 500 реквестів на секунду в 10 потоків, якщо вас заблочать на десятому реквесті. Іноді повільніше = швидше, насправді. Навіть якщо рейтлімітів немає, не валіть бідний сервер купою трафіка, якщо це не пентест, на якому ви економите часо-гроші клієнта і вам зробили вайтлістінг.

По-третє. Якщо працюєте з державними CVD-програмами, я б був двічі обережним, щоб не вийти випадково за скоуп. Принести їм дамп їхньої бази даних було б звісно круто, але існує ненульова ймовірність, що тоді я б отримав тюремну робу замість футболки.

На пентестах з договором — докручуємо, клієнт буде радий бачити імпакт. На багбаунті з врєдним тріажером — докручуємо, пруфаємо імпакт і збільшуємо баунті (але тільки коли попросять, чи якщо правилами програми дозволено). На таких gray-area engagements — не рекомендую докручувати до кінця. Баунті більше не стане, а нариватись зайвий раз не хочеться.

Четверте. Самоіронія в голландців на шикарному рівні, комунікація теж. Так, «баунті» невелика (футболка і лист, а не $$$$). Так, фіксили кілька місяців, і ще кілька місяців йшов свєг, досить повільно. Але вони все прийняли, пофіксили, в суд ніхто не подав, прислали призи, і в цій історії всі отримали позитив. Нідерландські підприємці і їх уряд раді, що вдалось попередити атаку. Я радий, що я отримав відзнаку і зробив хорошу справу. Всі задоволені процесом і результатом, всі в виграші.

І останнє. Якщо ви запускаєте фаззінг параметрів, і нічого знайти не вдається, можливо ви просто пропустили ключовий крок з цієї інструкції — не задонатили на Українських Месершмітів 🌝

Українські Месершміти

Вони роблять дрони та різні прибамбаси для них, які нищать русню. Можливо, плюсик в карму — це саме те, чого вам не вистачає, щоб знайти свою наступну круту вразливість. В них завжди відкрита банка для бажаючих бачити більше дохлої русні:

🖇️ send.monobank.ua/jar/7Mr8wc433f

На цьому на сьогодні в мене все. Ставте лайки, коментуйте, обговорюйте, питайте. Донатьте :)

Бажаю вам гарних вихідних, залишаємось на зв’язку. Удачі 😉

Лист, який йшов разом з футболкою

P.S. Підписуйтесь на мій канал в телеграмі :)

👍ПодобаєтьсяСподобалось28
До обраногоВ обраному4
LinkedIn
Ctrl + Enter
Ctrl + Enter

То всетаки в НЛ досі паперові листи ходять?

Хороша і цікава історія від того у кого велика кількість годин не тільки роботи з кодом, але й в доті) Моя повага)

Круто. Автор, порекомендуй з чого почати бекенд деву, який хочу навчитися шукати вразливості?

Привіт! Класне питання :)

Є безкоштовна portswigger web academy, вона дуже крута. Там є купа теорії і практичних лаб по більшості актуальних вразливостей. Але воно може бути трошечки overwhelming для новачка, тому що там розповідають не дуже структуровано. Це більше як тренажер.

Є шикарний безкоштовний довідник по вразливостям і методам їх пошуку/експлуатації, hacktricks. Прекрасне місце. От виникло в тебе питання по XSS, ідеш на hacktricks і шукаєш там XSS. Купа інфи, багато дуже кейсів покрито, регулярно користуюсь. Але для новачка знову ж таки недостатньо структуровано.

Є ультра дешеві self paced курси, hack the box і tryhackme. От в випадку, якщо ти ще нічого толком не знаєш про security, я би рекомендував tryhackme. Підписка ~15$ на місяць, але добре структуровані курси з купою теорії і практичних вправ. Знаю незліченну кількість людей, які в пентестах почали розбиратись саме через ці платформи. Tryhackme буде полегше і послабше, hackthebox буде більш «потний».

Рекомендую взяти підписку на tryhackme, розгорнути собі лінукс на віртуалці (чи навіть просто wsl на вінді), і починати проходити там кожен день хоча б по одному уроку. Паралельно можеш доганятись лабами з portswigger web academy по тим темам які зацікавили і треба добавка, і почитувати hacktricks час від часу. Через кілька місяців таких тренувань почнеш відчувати, що рух пішов.

Немає абсолютно безпечних систем, немає ідеально захищених урядів.

отак... нам кажуть — цифровізація це добре... а потім хтось заходить на державні сайти, і копіює бази даних...

Підписатись на коментарі