Python Internal Read Gadgets
Reading time: 3 minutes
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Основна інформація
Різні вразливості, такі як Python Format Strings або Class Pollution, можуть дозволити вам читати внутрішні дані python, але не дозволять виконувати код. Тому, пентестер повинен максимально використати ці дозволи на читання, щоб отримати чутливі привілеї та ескалувати вразливість.
Flask - Читання секретного ключа
Головна сторінка додатку Flask, ймовірно, міститиме глобальний об'єкт app
, де цей секрет налаштовано.
app = Flask(__name__, template_folder='templates')
app.secret_key = '(:secret:)'
У цьому випадку можливо отримати доступ до цього об'єкта, просто використовуючи будь-який гаджет для доступу до глобальних об'єктів з сторінки обходу пісочниць Python.
У випадку, коли вразливість знаходиться в іншому файлі python, вам потрібен гаджет для переходу між файлами, щоб дістатися до основного, щоб отримати доступ до глобального об'єкта app.secret_key
, щоб змінити секретний ключ Flask і мати можливість підвищити привілеї знаючи цей ключ.
Пейлоад, подібний до цього з цього опису:
__init__.__globals__.__loader__.__init__.__globals__.sys.modules.__main__.app.secret_key
Використовуйте цей payload, щоб змінити app.secret_key
(ім'я у вашому додатку може бути іншим), щоб мати можливість підписувати нові та більш привілейовані flask cookies.
Werkzeug - machine_id та node uuid
Використовуючи ці payload з цього опису ви зможете отримати доступ до machine_id та uuid node, які є основними секретами, необхідними для генерації Werkzeug pin, який ви можете використовувати для доступу до python консолі в /console
, якщо режим налагодження увімкнено:
{ua.__class__.__init__.__globals__[t].sys.modules[werkzeug.debug]._machine_id}
{ua.__class__.__init__.__globals__[t].sys.modules[werkzeug.debug].uuid._node}
warning
Зверніть увагу, що ви можете отримати локальний шлях сервера до app.py
, викликавши деякі помилки на веб-сторінці, які нададуть вам шлях.
Якщо вразливість знаходиться в іншому файлі python, перевірте попередній трюк Flask для доступу до об'єктів з основного файлу python.
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.