Natas Web. Проходження CTF майданчики, спрямованої на експлуатацію Web-вразливостей

У даній статті ми розберемося з експлуатацією деяких WEB-узвимостей на прикладі проходження варгеймів Natas. Кожен рівень має доступ до паролю наступного рівня. Всі паролі також зберігаються в файлах /etc/natas_webpass/. Наприклад, пароль для natas5 зберігається у файлі /etc/natas_webpass/natas5 і доступний для читання лише для користувачів natas4 і natas5.

Організаційна інформація

Спеціально для тих, хто хоче дізнаватися щось нове і розвиватися у будь-якій із сфер інформаційної та комп’ютерної безпеки, я буду писати і розповідати про наступних категоріях:

  • PWN;
  • криптографія (Crypto);
  • мережеві технології (Network);
  • реверс (Reverse Engineering);
  • стеганографія (Stegano);
  • пошук та експлуатація WEB-вразливостей.

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

Вся інформація представлена виключно в освітніх цілях. Автор цього документа не несе ніякої відповідальності за будь-які збитки, заподіяні кому-небудь в результаті використання знань і методів, отриманих в результаті вивчення даного документа.

level 0

Переглядаємо вихідний код сторінки і перевіряємо коментарі.

image

Знаходимо пароль.

Дуже часто при розробці сайтів розробники коментують для себе різну допоміжну інформацію, в тому числі і дані для аутентифікації.

level 1

Знову переглядаємо вихідний код сторінки, але на натискання правої клавіші миші призначено javascript подія, що не дозволяє сызвать контекстне меню.

image

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

image

Знаходимо пароль.

Як варіант(іноді важливіший), можна просто завантажити всю сторінку і переглянути код.

wget-http-user=natas1 --http-password=gtVrDuiDfck831PqWsLEZy5gyDz1clto http://natas1.natas.labs.overthewire.org

image

level 2

Знову переглядаємо вихідний код сторінки, помічаємо, що на сторінку завантажується картинка.

image

Зайдемо в дирректорию, звідки відбувається завантаження картинки. Спостерігаємо, що ця дирректоря непроиндексирована і доступна користувачам.

image

Забираємо пароль.

image

Для того, щоб уникнути перегляд файлів в директорії, в налаштуваннях сервера (в даному випадку /etc/apche2/httpd.conf) повинен стояти заборона на индескирование файлів. Або в даній директорії повинен знаходитися файл index.html.

level 3

Знову переглядаємо вихідний код сторінки, там немає нічого цікавого. Другим пунктом після перегляду вихідного коду, є сканування файлів і дирректорий. Як параметеров утиліти dirb вкажемо користувача і пароль для автентифікації http.

image

Файл robots.txt містить список дирректорий і файлів, що заборонені для перегляду роботам-пошуковикам (наприклад google та yandex).

image

Зайдемо в приховану дирректурию на сайті, знайдемо файл і заберемо пароль.

image

image

Як аналог, можна використовувати утиліти dirsearch, або burpsuite.

level 4

Сервер повідомляє, з якої сторінки перейшли і говорить з який потрібно перейти. Ці дані він може перевірити тільки в заголовку протоколу HTTP.

image

У браузері выбирем панель инутрументов → мережа → минулий запит і «змінити та відправити». Слід змінити поле Referer – саме воно показує звідки ми перейшли.

image

Залишилося забрати пароль.

image

Дана дія burpsuite.

Необхідно постійно переглядати, які HTTP поля переглядає Web-Сервер. Це найбільш рідко – фильтруемости дані користувача.

level 5

Сервіс повідомляє, що ми не залогинины. Тобто він зберігає дані нашої авторизації. Єдине місце де Це можна передавати: сесія cookies.

image

Подивимося кукіси (для зручності краще встановити розширення в браузері), і змінимо значення параметра loggedin на 1.

image

Перезагрузим сторінку і заберемо пароль.

image

Даний вид уразливості відноситься до категорії Broken Authentication and Session Management.

level 6

Даний сервіс надає нам вихідний код для аналізу.

image

Секрет, який ми повинні ввести, инклудится (підключається з файлу).

image

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

image

Відправляємо секрет, отримуємо пароль.

level 7

Перейшовши по обидва посиланнями, помічаємо какион чином вони завантажуються. Назва файлу на сервері GET передається в параметрі pages.

image

Спробуємо вказати в якості параметра шлях до файлу /etc/passwd.

image

І нам кажуть, де забрати пароль.

image

Дана уразливість відноситься до категорії LFI.

level 8

Надано вихідний код сервісу. Зберігається закодований рядок і спосіб кодування.

image

Необхідно розкодувати у зворотному порядку:

  1. перевести з hex-виду в бінарне подання;
  2. перевернути рядок;
  3. декодувати base64.
<?php
$secret = "3d3d516343746d4d6d6c315669563362";
echo base64_decode(strrev(hex2bin($secret)))."\n";
?>

image

Відправляємо секрет і отримуємо пароль.

image

level 9

З аналізу вихідного коду стає ясно, що дані передаються в командний рядок для пошуку даних у файлі.

image

Так як дані не фільтруються, то можна зібрати конвеєр і виконати інші команди ОС. Якщо передати запит в рядок, наприклад: « || ls # », то повний запит стане таким «grep -i || ls # dictionary.txt». Все, що після || – виконається з помилкою, а після # – буде закомментировано, тобто ми отримуємо тільки вивід команди ls.

image

Таким чином читаємо файл: «|| cat /etc/natas_webpass/natas10 #».

image

Дана уразливість відноситься до категорії OS Command Injection.

level 10

З аналізу вихідного коду стає ясно, що дані передаються в командний рядок для пошуку даних у файлі.

image

Задача така ж, як і на рівні 9, тільки тепер є фільтр. Т. о. запиту зникнуть знаки: «;»,«|»,«&». Можна лигитимно прочитати файл! Припустимо, що в нашому пароль є символ «z»: « z /etc/natas_webpass/natas11 # ».

image

Джерело

Поділитися
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
Реклама

110

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Схожі записи

Почніть набирати текст зверху та натисніть "Enter" для пошуку. Натисніть ESC для відміни.

Повернутись вверх