Werkzeug / Flask Debug
Миттєве налаштування для оцінки вразливостей та тестування на проникнення. Виконайте повний пентест з будь-якого місця за допомогою 20+ інструментів та функцій, які охоплюють рекон, звітність. Ми не замінюємо пентестерів - ми розробляємо власні інструменти, модулі виявлення та експлуатації, щоб дати їм можливість краще досліджувати, виконувати команди та насолоджуватися.
Консольне RCE
Якщо ввімкнено режим налагодження, ви можете спробувати отримати доступ до /console
та отримати RCE.
Також у Інтернеті є кілька експлойтів, таких як цей або один у metasploit.
Захищено пін-кодом - Обхід шляху
У деяких випадках /console
кінцева точка буде захищена пін-кодом. Якщо у вас є вразливість файлового обходу, ви можете витікати всю необхідну інформацію для генерації цього пін-коду.
Експлойт PIN консолі Werkzeug
Повідомлення щодо сценарію "заблоковано консоль" зустрічається при спробі отримати доступ до інтерфейсу налагодження Werkzeug, що вказує на необхідність ПІН-коду для розблокування консолі. Рекомендується використовувати уразливість консолі, аналізуючи алгоритм генерації ПІН-коду в файлі ініціалізації налагодження Werkzeug (__init__.py
). Механізм генерації ПІН-коду можна вивчити з сховища вихідного коду Werkzeug, проте рекомендується отримати фактичний код сервера за допомогою уразливості обходу файлів через можливі розбіжності версій.
Для використання ПІН-коду консолі потрібні два набори змінних: 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
, щоб знайти ідентифікатор пристрою, а потім витягніть MAC-адресу з/sys/class/net/<ідентифікатор пристрою>/address
.Перетворення шістнадцяткової MAC-адреси на десяткову можна виконати, як показано нижче:
get_machine_id()
: Об'єднує дані з/etc/machine-id
або/proc/sys/kernel/random/boot_id
з першим рядком/proc/self/cgroup
після останнього слеша (/
).
Last updated