Python Internal Read Gadgets

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

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

Різні вразливості, такі як Python Format Strings або Class Pollution, можуть дозволити вам читати внутрішні дані 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 від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Last updated