1.2 Testing for Default Credentials
Суть тестування:
В даний час веб-застосунки часто використовують популярне програмне забезпечення з відкритим вихідним кодом або комерційне програмне забезпечення, яке можна встановити на сервери з мінімальною конфігурацією або налаштуванням адміністратор сервера.
Багато апаратної техніки (наприклад, маршрутизатори мережі та сервери баз даних) мають власний веб-інтерфейс для налаштування або адміністрування. Часто ці програми після встановлення, неправильно налаштовані та облікові дані за промовчанням мають стандартні дані для автентифікації та конфігурації. У свою чергу, ці дані добре відомі всім тестерам на проникнення. Також дуже багато ситуацій, коли в додатку створюється новий обліковий запис і залишає пароль за замовчуванням. Якщо цей пароль передбачуваний і користувач не змінює його з першого разу, це може призвести до отримання зловмисником несанкціонованого доступу до програми.
Першопричину цієї проблеми можна визначити так:
- Недосвідчений ІТ-персонал, який не усвідомлює важливості зміни дефолтного пароля, встановленого на компоненти інфраструктури.
- Програмісти, які залишають лазівки, щоб легко отримати доступ і протестувати свою програму, а потім забувають їх видалити.
- Програми із вбудованими обліковими записами, що не видаляються, за замовчуванням, з встановленим ім'ям користувача та паролем.
- Програми, які змушують користувача змінювати облікові дані за умовчанням після першого входу у систему.
Як протестувати
1. Перевірка дефолтних креденшелів до дефолтних обліків у додатках
При тестуванні методом чорної скриньки, тестувальник нічого не знає про додаток, його базову та інфраструктуру. Насправді це часто не так, і деяка інформація про програму відома. Коли ви визначили інтерфейс програми, наприклад веб-інтерфейс маршрутизатора Cisco або WebLogic портал адміністратора, переконайтеся, що відомі імена користувачів та паролі для цих пристроїв не призводять до успішної автентифікації.
Для збору дефолтних даних, ви можете звернутися до документації виробника або, що набагато простіше, знайти загальні облікові дані за допомогою пошукової системи, де можна знайти величезні списки дефолтних або злитих часто повторюваних кредів користувачів. Зверніть увагу, що при переборі кредів, програма може бути включена політика блокування облікового запису, за кілька неправильних спроб підбору пароля та імені користувача. У цьому випадку є можливість заблокувати обліковий запис адміністратора, це може спричинити проблеми.
Багато програм мають докладні повідомлення про помилки, що інформують користувачів сайту про неприпустимість введення даних. Ця інформація буде корисною під час тестування облікових записів користувачів. Такий функціонал можна знайти:
- на сторінці входу до системи,
- на сторінці скидання пароля та забутого пароля,
- а також на сторінці реєстрації. Як тільки ви знайшли ім'я користувача за промовчанням, ви також можете почати вгадувати паролі для цього облікового запису.
Оскільки ці типи облікових даних часто прив'язані до адміністративних облікових записів, ви можете діяти таким чином:
- Спробуйте використовувати такі імена користувачів - "admin", "administrator", "root", "system", "guest", "operator" або "super". Ці імена є популярними серед системних адміністраторів і часто використовуються. Крім того, ви можете спробувати "qa", "test", "test1", "testing" та схожі імена. Спробуйте будь-яку комбінацію вищезгаданого в полях імені користувача та пароля. Якщо програма вразлива до брутфорсу креденшелів, і вам вдасться успішно ідентифікувати будь-яке з перелічених вище імен користувачів, то спробуйте ввести паролі аналогічним чином. Крім того, спробуйте порожній пароль або один з наступних "Password", "pass123", "password123", "admin" або "guest" із зазначеними вище обліковими записами. Також спробуйте зробити перестановку ім'я - пароль. Якщо ці паролі не працюють, можливо, варто скористатися списком спільних імен користувачів і паролів у мережі і спробувати виконати підбір через якийсь інструмент, наприклад Burp Suite.
- Адміністративні користувачі програми часто називаються на честь програми або організації. Це означає, що при тестуванні програми під назвою Obscurity ви можете спробувати використовувати такі креди Obscurity / Obscurity або будь-яку іншу аналогічну комбінацію як ім'я користувача і пароля.
- При виконанні тесту для клієнта, спробуйте використати імена контактів, які ви отримали, як імена користувачів з будь-якими загальними паролями. Електронні адреси клієнтів показують відміни до облікових записів користувачів: наприклад, якщо співробітник Джон Доу і в нього є адреса електронної пошти jdoe@example.com, ви можете спробувати знайти імена системних адміністраторів цієї організації в соціальній мережі та вгадати їх ім'я користувача а відміни до їхнього мила.
- Спробуйте використати всі вказані вище імена користувачів з порожніми паролями. - Перегляньте вихідний код сторінки та JavaScript або через проксі, або переглянувши джерело. Шукайте посилання на користувачів та паролі у джерелі програми. Крім того, якщо у вас є дійсний обліковий запис у додатку, то увійдіть в систему і переглядайте кожен запит і відповідь, для порівняння дійсного входу в систему з невірним входом, наприклад, зверніть увагу на додаткові приховані параметри, цікавий запит GET (login = yes ) і т.д.
- Шукайте імена облікових записів та паролі, написані в коментарях у вихідному коді. Також пошукайте в каталогах резервних копій вихідний код, який може містити цікаві коментарі.
2. Перевірка дефолтних паролів у нових користувачів
Також може статися, що при створенні нового облікового запису в програмі встановлено пароль за промовчанням. Цей пароль може мати деякі стандартні характеристики, які роблять його передбачуваним. Якщо користувач не змінить його при першому використанні (це часто трапляється, якщо користувача не змушують змінювати його) або якщо користувач ще не увійшов до програми, це може призвести до зловмисника до отримання несанкціонованого доступу до програми.
Наступні кроки можуть бути використані для перевірки цих типів дефолтних даних в обліку:
- Вивчення сторінки реєстрації користувача може допомогти визначити очікуваний формат мінімального або максимального розміру довжини імен користувачів і паролів у додатку. Якщо сторінки реєстрації користувача не існує, визначте, чи стандартні організації, її ім'я, в якому форматі надають дані до обліків цієї організації, таких як їх адреса електронної пошти або ім'я перед "@" в електронному листі.
- Спробуйте екстраполювати з програми, як генеруються імена користувачів. Наприклад, чи може користувач вибрати своє ім'я користувача чи система генерує ім'я облікового запису для користувача на основі певної особистої інформації або використовуючи передбачувану послідовність? Якщо програма створює імена облікових записів у передбачуваній послідовності, наприклад user7811, спробуйте рекурсивно провести фазинг всіх можливих облікових записів.
- Спробуйте визначити, чи передбачимо згенерований системою пароль. Для цього швидко створіть багато нових облікових записів. Один за одним, щоб ви могли порівняти та визначити, чи передбачувані паролі. Якщо це передбачувано, спробуйте порівняти їх з іменами користувачів або будь-якими обліковими записами. Використовуйте їх як основу для атаки методом брутфорсу.
- Якщо ви визначили, як формуються імена для обліку користувача, спробуйте «перебрати» паролі за допомогою деяких загально передбачуваних послідовностей, наприклад, дати народження.
- Спробуйте використати всі вказані вище імена користувачів з порожніми паролями або використовувати ім'я користувача також як значення пароля.
Тестування сірої скриньки
- Поговоріть з ІТ-персоналом, щоб визначити, які паролі вони використовують для адміністративного доступу та адміністрування програми.
- Запитайте ІТ-персонал, чи змінено паролі за промовчанням і чи вимкнено облікові записи користувачів за промовчанням.
- Перевірте базу даних на облікові дані за умовчанням, як описано в розділі тестування чорної скриньки. Також перевірте порожні поля пароля.
- Перевірте код на наявність хардкожденних імен користувачів та паролів.
- Перевірте файли конфігурації, які містять імена користувачів та паролі.
- Вивчіть політику паролів і, якщо програма генерує власні паролі для нових користувачів, перевірте політику використовується для цієї процедури.