Werkzeug / Flask Debug
Миттєво доступна установка для оцінки вразливостей та тестування на проникнення. Запустіть повний тест на проникнення з будь-якого місця з 20+ інструментами та функціями, які охоплюють від розвідки до звітування. Ми не замінюємо тестувальників на проникнення - ми розробляємо спеціальні інструменти, модулі виявлення та експлуатації, щоб повернути їм трохи часу для глибшого аналізу, отримання доступу та отримання задоволення.
Console RCE
Якщо налагодження активне, ви можете спробувати отримати доступ до /console
і отримати RCE.
В інтернеті також є кілька експлойтів, таких як цей або один у metasploit.
Захищено PIN-кодом - Перехід по шляху
В деяких випадках /console
кінцева точка буде захищена PIN-кодом. Якщо у вас є вразливість до обходу файлів, ви можете витягти всю необхідну інформацію для генерації цього PIN-коду.
Експлойт PIN-коду консолі Werkzeug
Примусьте сторінку помилки налагодження в додатку, щоб побачити це:
Повідомлення щодо сценарію "консоль заблокована" з'являється при спробі доступу до інтерфейсу налагодження Werkzeug, що вказує на необхідність введення PIN-коду для розблокування консолі. Пропонується експлуатувати PIN-код консолі, аналізуючи алгоритм генерації PIN-коду у файлі ініціалізації налагодження Werkzeug (__init__.py
). Механізм генерації PIN-коду можна вивчити з репозиторію вихідного коду Werkzeug, хоча рекомендується отримати фактичний код сервера через вразливість обходу файлів через потенційні розбіжності версій.
Для експлуатації PIN-коду консолі потрібні два набори змінних: probably_public_bits
та private_bits
:
probably_public_bits
probably_public_bits
username
: Відноситься до користувача, який ініціював сесію Flask.modname
: Зазвичай позначається якflask.app
.getattr(app, '__name__', getattr(app.__class__, '__name__'))
: Зазвичай розв'язується в Flask.getattr(mod, '__file__', None)
: Представляє повний шлях доapp.py
у каталозі Flask (наприклад,/usr/local/lib/python3.5/dist-packages/flask/app.py
). Якщоapp.py
не застосовується, спробуйтеapp.pyc
.
private_bits
private_bits
uuid.getnode()
: Отримує MAC-адресу поточної машини, зstr(uuid.getnode())
перетворюючи її в десятковий формат.Щоб визначити MAC-адресу сервера, потрібно ідентифікувати активний мережевий інтерфейс, що використовується додатком (наприклад,
ens3
). У випадках невизначеності, використовуйте/proc/net/arp
для знаходження ID пристрою, потім витягніть MAC-адресу з/sys/class/net/<device id>/address
.Перетворення шістнадцяткової MAC-адреси в десяткову можна виконати, як показано нижче:
get_machine_id()
: Об'єднує дані з/etc/machine-id
або/proc/sys/kernel/random/boot_id
з першим рядком/proc/self/cgroup
після останнього слешу (/
).
Last updated