Python Internal Read Gadgets

Вивчайте та практикуйте хакінг AWS: Навчання HackTricks AWS Red Team Expert (ARTE) Вивчайте та практикуйте хакінг GCP: Навчання HackTricks GCP Red Team Expert (GRTE)

Підтримайте HackTricks

Основна інформація

Різні вразливості, такі як Рядки формату Python або Забруднення класу можуть дозволити вам читати внутрішні дані Python, але не дозволять виконувати код. Тому пентестеру потрібно максимально використовувати ці дозволи на читання, щоб отримати чутливі привілеї та ескалювати вразливість.

Flask - Читання секретного ключа

На головній сторінці додатка Flask, ймовірно, буде **глобальний об'єкт app, де цей секрет налаштований.

app = Flask(__name__, template_folder='templates')
app.secret_key = '(:secret:)'

У цьому випадку можливий доступ до цього об'єкту, просто використовуючи будь-який гаджет для доступу до глобальних об'єктів зі сторінки Bypass Python sandboxes.

У випадку, коли вразливість знаходиться в іншому файлі Python, вам потрібен гаджет для переходу між файлами, щоб отримати доступ до основного, щоб отримати доступ до глобального об'єкту app.secret_key для зміни секретного ключа Flask і мати можливість підвищення привілеїв знавши цей ключ.

Пейлоад, подібний до цього з цього опису:

__init__.__globals__.__loader__.__init__.__globals__.sys.modules.__main__.app.secret_key

Використовуйте цей вразливий код для зміни app.secret_key (назва в вашому додатку може бути іншою), щоб мати можливість підписувати нові та більш привілейовані куки flask.

Werkzeug - machine_id та node uuid

Використовуючи цей вразливий код з цього опису, ви зможете отримати доступ до machine_id та uuid вузла, які є основними секретами, необхідними для генерації піна Werkzeug, який можна використовувати для доступу до консолі Python у /console, якщо увімкнений режим налагодження:

{ua.__class__.__init__.__globals__[t].sys.modules[werkzeug.debug]._machine_id}
{ua.__class__.__init__.__globals__[t].sys.modules[werkzeug.debug].uuid._node}

Зверніть увагу, що ви можете отримати локальний шлях сервера до app.py, спровокувавши деяку помилку на веб-сторінці, яка поверне вам шлях.

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

Вивчайте та практикуйте взлом AWS:Навчання HackTricks AWS Red Team Expert (ARTE) Вивчайте та практикуйте взлом GCP: Навчання HackTricks GCP Red Team Expert (GRTE)

Підтримайте HackTricks

Last updated