Python Internal Read Gadgets
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Diferentes vulnerabilidades, como Python Format Strings ou Class Pollution, podem permitir que você leia dados internos do python, mas não permitirão que você execute código. Portanto, um pentester precisará aproveitar ao máximo essas permissões de leitura para obter privilégios sensíveis e escalar a vulnerabilidade.
A página principal de uma aplicação Flask provavelmente terá o objeto global app
onde esta chave secreta está configurada.
Neste caso, é possível acessar este objeto apenas usando qualquer gadget para acessar objetos globais da página de Bypass Python sandboxes.
No caso em que a vulnerabilidade está em um arquivo python diferente, você precisa de um gadget para percorrer arquivos para chegar ao principal e acessar o objeto global app.secret_key
para mudar a chave secreta do Flask e poder escalar privilégios conhecendo esta chave.
Uma carga útil como esta deste writeup:
Use este payload para mudar app.secret_key
(o nome no seu app pode ser diferente) para poder assinar novos e mais privilegiados cookies do flask.
Usando esses payloads deste writeup você poderá acessar o machine_id e o uuid do nó, que são os principais segredos que você precisa para gerar o pin do Werkzeug que você pode usar para acessar o console python em /console
se o modo de depuração estiver habilitado:
Observe que você pode obter o caminho local do servidor para o app.py
gerando algum erro na página da web que te dará o caminho.
Se a vulnerabilidade estiver em um arquivo python diferente, verifique o truque Flask anterior para acessar os objetos do arquivo python principal.
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)