diff --git a/pentesting-web/xs-search/css-injection/README.md b/pentesting-web/xs-search/css-injection/README.md index 12df2fd5..c0f06ea6 100644 --- a/pentesting-web/xs-search/css-injection/README.md +++ b/pentesting-web/xs-search/css-injection/README.md @@ -44,13 +44,28 @@ Alguns exemplos de código para explorar isso: [https://gist.github.com/d0nutptr 2. Capacidade de **enquadrar a página para acionar a reavaliação do CSS dos payloads recém-gerados** 3. Capacidade de usar **imagens hospedadas externamente** (pode ser bloqueado por CSP) +### Seletor de Atributo Cego + +Como [**explicado neste post**](https://portswigger.net/research/blind-css-exfiltration), é possível combinar os seletores **`:has`** e **`:not`** para identificar conteúdo mesmo de elementos cegos. Isso é muito útil quando você não tem ideia do que está dentro da página da web carregando a injeção de CSS.\ +Também é possível usar esses seletores para extrair informações de vários blocos do mesmo tipo, como em: +```html + + + +``` +Combinando isso com a seguinte técnica **@import**, é possível extrair muitas informações usando injeção de CSS em páginas cegas com [**blind-css-exfiltration**](https://github.com/hackvertor/blind-css-exfiltration)**.** + ### @import -A técnica anterior tem algumas desvantagens, verifique os pré-requisitos. Você precisa ser capaz de **enviar vários links para a vítima**, ou precisa ser capaz de **enquadrar a página vulnerável à injeção de CSS**. +A técnica anterior tem algumas desvantagens, verifique os pré-requisitos. Você precisa ser capaz de **enviar vários links para a vítima**, ou precisa ser capaz de **incluir a página vulnerável à injeção de CSS em um iframe**. -No entanto, existe outra técnica inteligente que usa **`@import` do CSS** para melhorar a qualidade da técnica. +No entanto, existe outra técnica inteligente que usa **CSS `@import`** para melhorar a qualidade da técnica. -Isso foi mostrado pela primeira vez por [**Pepe Vila**](https://vwzq.net/slides/2019-s3\_css\_injection\_attacks.pdf) e funciona assim: +Isso foi mostrado pela primeira vez por [**Pepe Vila**](https://vwzq.net/slides/2019-s3\_css\_injection\_attacks.pdf) e funciona da seguinte maneira: Em vez de carregar a mesma página várias vezes com dezenas de payloads diferentes a cada vez (como na técnica anterior), vamos **carregar a página apenas uma vez e apenas com uma importação para o servidor do atacante** (este é o payload a ser enviado para a vítima): ```css @@ -216,7 +231,7 @@ Neste ponto, o ataque está claro: Ainda precisamos de um método aprimorado para iniciar a iteração, porque ` +### Exfiltração de nó de texto (II): vazando o conjunto de caracteres com uma fonte padrão (não requer ativos externos) **Referência:** [PoC usando Comic Sans por @Cgvwzq & @Terjanq](https://demo.vwzq.net/css2.html) @@ -387,7 +402,7 @@ unicode-range: U+0041; ``` Se houver uma correspondência, a **fonte será carregada de `/static/bootstrap.min.css?q=1`**. Embora não seja carregada com sucesso, o **navegador deve armazená-la em cache**, e mesmo que não haja cache, há um mecanismo de **304 não modificado**, então a **resposta deve ser mais rápida** do que outras coisas. -No entanto, se a diferença de tempo entre a resposta em cache e a não em cache não for grande o suficiente, isso não será útil. Por exemplo, o autor mencionou: No entanto, após testar, descobri que o primeiro problema é que a velocidade não é muito diferente, e o segundo problema é que o bot usa a flag `disk-cache-size=1`, o que é realmente atencioso. +No entanto, se a diferença de tempo entre a resposta em cache e a não em cache não for grande o suficiente, isso não será útil. Por exemplo, o autor mencionou: No entanto, após testar, descobri que o primeiro problema é que a velocidade não é muito diferente, e o segundo problema é que o bot usa a flag `disk-cache-size=1`, o que é realmente cuidadoso. ### Exfiltração de nó de texto (III): vazando o conjunto de caracteres através da medição do tempo de carregamento de centenas de "fontes" locais (não requer ativos externos)