Python Internal Read Gadgets
Основна інформація
Різні вразливості, такі як Python Format Strings або Class Pollution, можуть дозволити вам читати внутрішні дані Python, але не дозволять виконувати код. Тому пентестеру потрібно максимально використовувати ці дозволи на читання, щоб отримати чутливі привілеї та ескалювати вразливість.
Flask - Читання секретного ключа
На головній сторінці додатка Flask, ймовірно, буде **глобальний об'єкт app
, де налаштований цей секрет.
У цьому випадку можливий доступ до цього об'єкту, просто використовуючи будь-який гаджет для доступу до глобальних об'єктів зі сторінки Bypass Python sandboxes.
У випадку, коли вразливість знаходиться в іншому файлі Python, вам потрібен гаджет для перегляду файлів, щоб дістатися до основного файлу для доступу до глобального об'єкту app.secret_key
для зміни секретного ключа Flask і можливості підвищення привілеїв знавши цей ключ.
Пейлоад, подібний до цього з цього опису:
Використовуйте цей вразливий код, щоб змінити app.secret_key
(назва в вашому додатку може бути іншою), щоб мати можливість підписувати нові та більш привілейовані куки flask.
Werkzeug - machine_id та node uuid
Використовуючи цей вразливий код з цього опису, ви зможете отримати доступ до machine_id та uuid вузла, які є основними секретами, необхідними для генерації піна Werkzeug, який можна використовувати для доступу до консолі Python у /console
, якщо увімкнений режим налагодження:
Зверніть увагу, що ви можете отримати локальний шлях сервера до app.py
, спричиняючи деяку помилку на веб-сторінці, яка надасть вам шлях.
Якщо вразливість знаходиться в іншому файлі Python, перевірте попередній трюк Flask, щоб отримати доступ до об'єктів з основного файлу Python.
Last updated