<summary><strong>Aprende hacking en AWS de cero a héroe con</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs exclusivos**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sigue** a **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
XSSI designa un tipo de vulnerabilidad que explota el hecho de que, cuando un **recurso se incluye usando la etiqueta `script`, la SOP no se aplica**, porque los scripts deben poder incluirse entre dominios. Un atacante puede así **leer todo** lo que se incluyó usando la etiqueta **`script`**.
Esto es especialmente interesante cuando se trata de JavaScript dinámico o JSONP cuando se utilizan informaciones de autoridad ambiental como cookies para la autenticación. Las cookies se incluyen al solicitar un recurso de un host diferente.
La información privada se encuentra dentro de un archivo JS globalmente accesible, puedes detectar esto leyendo archivos, buscando palabras clave o utilizando regexps.\
Para explotar esto, solo incluye el script con información privada dentro del contenido malicioso:
**La información confidencial se añade al script cuando un usuario lo solicita**. Esto se puede descubrir fácilmente enviando la solicitud **con y sin las cookies**; si se recupera **información diferente**, entonces podría contener información confidencial. Para hacer esto automáticamente puedes usar la extensión de burp: [https://github.com/luh2/DetectDynamicJS](https://github.com/luh2/DetectDynamicJS).
//The confidential info will be inside the callback to angular.callbacks._7: angular.callbacks._7({"status":STATUS,"body":{"demographics":{"email":......}}})
Si una variable no reside dentro del espacio de nombres global, a veces esto puede ser explotado de todos modos utilizando _prototype tampering_. El _prototype tampering_ abusa del diseño de JavaScript, es decir, que al interpretar código, JavaScript recorre la cadena de prototipos para encontrar la propiedad llamada. El siguiente ejemplo está extraído del artículo [The Unexpected Dangers of Dynamic JavaScript](https://www.usenix.org/system/files/conference/usenixsecurity15/sec15-paper-lekies.pdf) y demuestra cómo al sobrescribir una función relevante de tipo `Array` y acceder a `this`, una variable no global también puede ser filtrada.
En el código original `slice` de tipo `Array` accede a los datos que nos interesan. Un atacante puede, como se describe en la cláusula anterior, sobrescribir `slice` y robar los secretos.
Investigador de Seguridad [Sebastian Lekies](https://twitter.com/slekies) recientemente actualizó su lista de [vectores](http://sebastian-lekies.de/leak/).
Takeshi Terada describe otro tipo de XSSI en su artículo [Ataques XSSI basados en identificadores](https://www.mbsd.jp/Whitepaper/xssi.pdf). Logró filtrar archivos Non-Script entre dominios incluyendo, entre otros, archivos CSV como fuente en la etiqueta `script`, utilizando los datos como nombres de variables y funciones.
El primer ataque XSSI documentado públicamente fue en 2006. La entrada en el blog de Jeremiah Grossman [Técnicas de Ataque Web Avanzadas usando GMail](http://jeremiahgrossman.blogspot.ch/2006/01/advanced-web-attack-techniques-using.html) describe un XSSI, que al sobrescribir el constructor `Array` pudo leer la agenda completa de una cuenta de google.
En 2007 Joe Walker publicó [JSON no es tan seguro como la gente piensa](http://incompleteness.me/blog/2007/03/05/json-is-not-as-safe-as-people-think-it-is/). Utiliza la misma idea para robar JSON que está dentro de un `Array`.
Otros ataques relacionados se llevaron a cabo inyectando contenido codificado en UTF-7 en el JSON para escapar del formato JSON. Esto es descrito por Gareth Heyes, autor de [Hackvertor](https://hackvertor.co.uk/public), en la entrada de blog [Secuestro de JSON](http://www.thespanner.co.uk/2011/05/30/json-hijacking/) publicada en 2011. En una prueba rápida, esto todavía era posible en Microsoft Internet Explorer y Edge, pero no en Mozilla Firefox o Google Chrome.
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** revisa los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).