Post

HackTheBox - Templated Walkthrough

Analysis of Website

Ao iniciar o desafio vamos receber um endereço de IP, basta colar no navegador para poder acessar o desafio.

Logo de cara vemos que se trata de um framework web escrito em Python. Flask é uma estrutura WSGI leve construída em programação Python. WSGI significa (Web Server Gateway Interface) traduzindo para português (Interface de Gateway de Servidor Web). Flask é frequentemente utilizado no back-end de aplicativos web. Jinja2 é um mecanismo de template em Python amplamente utilizado para geração dinâmica de conteúdo em aplicativos web.

image

Exploitation

Se o site exibir uma página de erro (404, 403, etc.) quando acessarmos a página que não existe, o caminho poderá estar refletido na página de erro. Por exemplo, quando tentamos acessar /index.html que não existe, a página de erro mostrará mensagens como a seguinte.

image

Aqui eu usei outro exemplo, nesse caso a palavra test e novamente vemos que está sendo refletida.

image

Como se trata de um framework em python, concluímos que aqui ocorre uma vulnerabilidade de Server Side Template Injection, SSTI é uma vulnerabilidade de segurança que ocorre quando um aplicativo web permite que um invasor insira código de modelo (template) do lado do servidor em campos de entrada que são posteriormente processados e executados pelo servidor.

Vamos usar o seguinte payload:

1
{ { 7*7 } }

Por exemplo, 206.189.28.151:32571/{ { 7*7 } }. A página de erro refletirá o resultado dessa multiplicação, conforme a seguir.

image

Flag

Vamos usar o seguinte payload para executar comandos:

1
 { { request.application.__globals__.__builtins__.__import__('os').popen('id').read() } }

image

Executando o comando ls, conseguimos ver o arquivo flag.txt.

image

De uma forma bem simples conseguimos a flag, esse desafio não é difícil, para quem está começando a ver sobre SSTI é bem interessante.

image

Happy hacking, keep learning and don’t forget to think outside the box!!

Fontes:

This post is licensed under CC BY 4.0 by the author.