Python Internal Read Gadgets

Aprende hacking en AWS de cero a héroe con htARTE (Experto en Equipos Rojos de AWS de HackTricks)!

Otras formas de apoyar a HackTricks:

Información Básica

Diferentes vulnerabilidades como Cadenas de Formato en Python o Contaminación de Clases podrían permitirte leer datos internos de Python pero no ejecutar código. Por lo tanto, un pentester necesitará aprovechar al máximo estos permisos de lectura para obtener privilegios sensibles y escalar la vulnerabilidad.

Flask - Leer clave secreta

La página principal de una aplicación Flask probablemente tendrá el objeto global app donde esta clave secreta está configurada.

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

En este caso es posible acceder a este objeto simplemente utilizando cualquier gadget para acceder a objetos globales desde la página de Bypass Python sandboxes.

En el caso en que la vulnerabilidad se encuentre en un archivo Python diferente, se necesita un gadget para atravesar archivos y llegar al principal para acceder al objeto global app.secret_key y cambiar la clave secreta de Flask y poder escalar privilegios conociendo esta clave.

Una carga útil como esta de este análisis:

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

Utilice esta carga útil para cambiar app.secret_key (el nombre en su aplicación puede ser diferente) para poder firmar nuevas y más privilegiadas cookies de Flask.

Werkzeug - machine_id y node uuid

Utilizando esta carga útil de este informe podrá acceder al machine_id y al nodo uuid, que son los secretos principales que necesita para generar el pin de Werkzeug que puede usar para acceder a la consola de Python en /console si el modo de depuración está habilitado:

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

Ten en cuenta que puedes obtener la ruta local de los servidores al app.py generando algún error en la página web que te proporcione la ruta.

Si la vulnerabilidad está en un archivo python diferente, revisa el truco anterior de Flask para acceder a los objetos desde el archivo python principal.

Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Última actualización