5.8 KiB
Gadgets de Leitura Interna do Python
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Você trabalha em uma empresa de segurança cibernética? Você quer ver sua empresa anunciada no HackTricks? ou você quer ter acesso à última versão do PEASS ou baixar o HackTricks em PDF? Confira os PLANOS DE ASSINATURA!
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Adquira produtos oficiais PEASS & HackTricks
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-me no Twitter 🐦@carlospolopm.
- Compartilhe suas técnicas de hacking enviando PRs para o repositório hacktricks e para o repositório hacktricks-cloud.
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 um aplicativo Flask provavelmente terá o objeto global app
onde essa chave secreta é configurada.
app = Flask(__name__, template_folder='templates')
app.secret_key = '(:secret:)'
Neste caso, é possível acessar esse 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, é necessário um gadget para percorrer arquivos para chegar ao principal e acessar o objeto global app.secret_key
para alterar a chave secreta do Flask e ser capaz de escalar privilégios conhecendo essa chave.
Um payload como este 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 ser capaz de 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 principais segredos que você precisa para gerar o pino 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" %}
Observe que você pode obter o caminho local dos servidores para o app.py
gerando algum erro na página da web que irá lhe dar 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.
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Você trabalha em uma empresa de segurança cibernética? Você quer ver sua empresa anunciada no HackTricks? ou você quer ter acesso à última versão do PEASS ou baixar o HackTricks em PDF? Verifique os PLANOS DE ASSINATURA!
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Adquira o swag oficial do PEASS & HackTricks
- Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-me no Twitter 🐦@carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para o repositório hacktricks e repositório hacktricks-cloud.