4.9 KiB
Gadgets de Leitura Interna do Python
Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras maneiras de apoiar o HackTricks:
- Se você deseja ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF, verifique os PLANOS DE ASSINATURA!
- Adquira o swag oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe seus truques de hacking enviando PRs para os repositórios HackTricks e HackTricks Cloud no github.
Informações Básicas
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.
Flask - Ler chave secreta
A página principal de uma aplicação Flask provavelmente terá o objeto global app
onde este segredo é configurado.
app = Flask(__name__, template_folder='templates')
app.secret_key = '(:secret:)'
Neste caso, é possível acessar este objeto apenas usando qualquer gadget para acessar objetos globais da página Bypass Python sandboxes.
No caso em que a vulnerabilidade está em um arquivo Python diferente, você precisa de um gadget para percorrer os arquivos e chegar ao principal para acessar o objeto global app.secret_key
para alterar a chave secreta do Flask e ser capaz de escalar privilégios conhecendo essa chave.
Uma carga útil como esta deste writeup:
{% code overflow="wrap" %}
__init__.__globals__.__loader__.__init__.__globals__.sys.modules.__main__.app.secret_key
{% endcode %}
Use este payload para alterar app.secret_key
(o nome em seu aplicativo pode ser diferente) para poder assinar novos e mais privilégios cookies flask.
Werkzeug - machine_id e node uuid
Usando esses payloads deste writeup você será capaz de acessar o machine_id e o nó uuid, que são os segredos principais que você precisa para gerar o pin Werkzeug que você pode usar para acessar o console python em /console
se o modo de depuração estiver habilitado:
{ua.__class__.__init__.__globals__[t].sys.modules[werkzeug.debug]._machine_id}
{ua.__class__.__init__.__globals__[t].sys.modules[werkzeug.debug].uuid._node}
{% hint style="warning" %}
Note que você pode obter o caminho local dos servidores para o app.py
gerando algum erro na página da web que irá mostrar o caminho.
{% endhint %}
Se a vulnerabilidade estiver em um arquivo Python diferente, verifique o truque anterior do Flask para acessar os objetos do arquivo Python principal.
Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras maneiras de apoiar o HackTricks:
- Se você quiser ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF Confira os PLANOS DE ASSINATURA!
- Adquira o swag oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe seus truques de hacking enviando PRs para os HackTricks e HackTricks Cloud repositórios do github.