Por estos días tuve la oportunidad de trabajar con No tienes permitido ver los links.
Registrarse o Entrar a mi cuenta, un micro-framework que te permite hacer webs con Python y sintaxis de Jinja2. La aplicación que llegó a mis manos tenía un login, un panel que trabaja con una base de datos y hasta con algunos temas de criptografía. Me llamó mucho la atención como funcionaba y esto es un poco de lo que pude concluir.
Server-Side Template Injection
Por la forma en la que está diseñado Flask, podemos explotar Server Side Template Injection. Es interesante tomarlo en cuenta para el momento de hacer pentest porque ya le han reportado No tienes permitido ver los links. Registrarse o Entrar a mi cuenta explotando este tipo de vulnerabilidades.
El primer ejemplo es un XSS mediante Template Injection. Por defecto flask no filtra las variables cuando se usa request.args.get('var'). El código a continuación es vulnerable a XSS.
El cual se puede explotar fácilmente de la siguiente forma:
Otro vector de ataque que encontré fue LFI a través del popular open(), como se puede ver en el siguiente ejemplo:
El cual se puede explotar de la siguiente forma:
El código que usé en el anterior ejemplo en la variable name fue:
También pude haber sacado el archivo completo de la siguiente forma:
Pero le puse el FOR para hacer que se vea mucho mejor, si quieren entender la diferencia entre {{}} y {%%} les recomiendo leer la info sobre FLASK en el link del principio de este post y la verdad 100% recomendable, un framework bien interesante.
Como se pueden imaginar, también se puede explotar Inyección SQL pero he pensado también en otros tipos de explotación bastante interesantes. Si se les ocurren otros métodos de explotación coméntenmelos y no olviden seguirme en TW como @SeguridadBlanca
Server-Side Template Injection
Por la forma en la que está diseñado Flask, podemos explotar Server Side Template Injection. Es interesante tomarlo en cuenta para el momento de hacer pentest porque ya le han reportado No tienes permitido ver los links. Registrarse o Entrar a mi cuenta explotando este tipo de vulnerabilidades.
El primer ejemplo es un XSS mediante Template Injection. Por defecto flask no filtra las variables cuando se usa request.args.get('var'). El código a continuación es vulnerable a XSS.
El cual se puede explotar fácilmente de la siguiente forma:
Otro vector de ataque que encontré fue LFI a través del popular open(), como se puede ver en el siguiente ejemplo:
El cual se puede explotar de la siguiente forma:
El código que usé en el anterior ejemplo en la variable name fue:
También pude haber sacado el archivo completo de la siguiente forma:
Pero le puse el FOR para hacer que se vea mucho mejor, si quieren entender la diferencia entre {{}} y {%%} les recomiendo leer la info sobre FLASK en el link del principio de este post y la verdad 100% recomendable, un framework bien interesante.
Como se pueden imaginar, también se puede explotar Inyección SQL pero he pensado también en otros tipos de explotación bastante interesantes. Si se les ocurren otros métodos de explotación coméntenmelos y no olviden seguirme en TW como @SeguridadBlanca