👋 Привіт! Я — Ш'ям, дослідник безпеки з особливим талантом знаходити вразливості швидше, ніж охолоне твоя кава. Сьогодні я розповім, як я випадково натрапив на критичну вразливість Local File Inclusion (LFI) на сайті xyz. Спойлер: я використав Google Dorks. 🔍
Попередження: цей блог містить сцени несподіваного успіху, розчарованих розробників і хакера, який намагається не сміятися занадто голосно. ☄️
Підготовка: Нудьгуючий хакер і Google Dorks
Було спокійне вівторкове післяобіддя, і я перебував у "режимі хакера". Уявіть мене, який сидить за столом: на одному екрані Kali Linux, на іншому — меми, а поряд чашка чаю. ☕
Відчувши цікавість, я вирішив запустити кілька Google Dorks, щоб подивитися, що вийде. Для тих, хто не знайомий, Google Dorks — це розширені пошукові запити, які можуть розкрити цікаві (а іноді й уразливі) кінцеві точки. Це як полювання за скарбами, тільки в Google. 🗺️
Один із моїх улюблених Dorks:
inurl:”download.php?filename=”
Чому? Тому що він часто знаходить кінцеві точки, які динамічно обробляють файли — ідеальна територія для тестування LFI. Тож я запустив пошук, і ось що знайшов:
xyz Download Endpoint:
https://www.xyz.com/downloads/download.php?filename=
Виявлення за 2 секунди
Коли я побачив це посилання, це було як натискання на велику червону кнопку з написом “НЕ НАТИСКАТИ”. Звісно, я натиснув. 😂
Я: "Давайте подивимося, чи справді це так невинно, як виглядає, маленьке посилання."
Сервер: Тремтить від нервів.
Я змінив параметр filename
у URL на
../../../../etc/passwd
Ось що я надіслав:
- **************************************************************
- GET /downloads/download.php?filename=../../../../etc/passwd HTTP/1.1Host: www.xyz.com
- **************************************************************
І всього за 2 секунди сервер відповів ось так:
Я: "Стривайте, що?! Це спрацювало?!" 🤯
Сервер: "О ні, я не повинен був це робити..." 😰
Внутрішній монолог хакера
На цьому етапі я сидів і думав:
- Я що, щойно відкрив ворота до Мордору? 🏰
- Як це взагалі можливо?
- Сміятися чи плакати за команду безпеки сервера? 😅
Поки мій мозок святкував, я уявляв розробників:
- Менеджер: "Ей, цей функціонал завантаження файлів безпечний?"
- Розробник: "Так, звісно. Ми тестували це з усіма видами PDF!"
- Менеджер: "Чудово, відправляємо в продакшн!" 🚢
Мій брат питає: Що таке LFI? Аха!
Для тих, хто не знає, Local File Inclusion (LFI) — це як попросити когось показати фото їхнього собаки, а замість цього вони випадково відправляють тобі свою історію браузера. 🐕💻
Це трапляється, коли сайт дозволяє завантажувати локальні серверні файли, маніпулюючи параметрами введення. Чому це небезпечно?
- Ви можете отримати доступ до чутливих файлів, як-от
/etc/passwd
. - Можна знайти API-ключі або паролі.
- Якщо це використати далі, це може призвести до повного захоплення сервера.
Що ми дізналися про LFI?
LFI — це як залишити свою передню двері відкритою, бо ви думаєте, що ніхто не зайде. Це легко використати, але так само легко запобігти.
Ось що мало б статися:
- Валідація вводу: Сервер повинен був перевірити, чи параметр
filename
відповідає списку дозволених файлів (наприклад, тільки.pdf
). - Санітизація: Видаляти підозрілі символи, як-от
../
. - Обробка помилок: Замість того, щоб віддавати чутливі файли, сервер повинен був повернути ввічливу помилку, як-от: "Вибачте, цей файл не існує!"
Час для мемів
Бо жоден блог про хакерство не обходиться без мемів:
Сервер, мовляв:
“Ти хотів один файл? Ось, бери всю систему.”
Розробники після прочитання звіту:
“Стривайте, люди можуть це зробити з нашою кінцевою точкою?”
Я, звітуючи про помилку:
“Твій сервер довірив мені.”
“Це була твоя перша помилка.”
Чому це важливо?
Виявлення цієї вразливості було не тільки демонстрацією моїх хакерських навичок — це було важливе нагадування про необхідність правильної валідації вводу. Якщо б ця вразливість потрапила до рук не тих людей, наслідки могли б бути дуже серйозними.
Заключні думки
Цей досвід нагадав мені про дві речі:
- Ніколи не недооцінюйте силу цікавості та хорошого Google Dork.
- Завжди санітизуйте ваші введення, друзі!
Чи знаходили ви коли-небудь таку вразливість LFI так швидко? Або у вас є улюблений Dork? Напишіть про це в коментарях нижче.
Перекладено з: How I Uncovered an LFI in 15 Seconds: The Tale of a Curious Hacker and an Unprepared Server 🐞