# Dangling Markup - HTML scriptless injection
{{#include ../../banners/hacktricks-training.md}}
## Resumo
Esta técnica pode ser usada para extrair informações de um usuário quando uma **injeção de HTML é encontrada**. Isso é muito útil se você **não encontrar nenhuma maneira de explorar um** [**XSS** ](../xss-cross-site-scripting/index.html)mas você pode **injetar algumas tags HTML**.\
Também é útil se algum **segredo estiver salvo em texto claro** no HTML e você quiser **exfiltrá-lo** do cliente, ou se você quiser enganar alguma execução de script.
Várias técnicas comentadas aqui podem ser usadas para contornar algumas [**Content Security Policy**](../content-security-policy-csp-bypass/index.html)exfiltrando informações de maneiras inesperadas (tags html, CSS, tags meta http, formulários, base...).
## Principais Aplicações
### Roubo de segredos em texto claro
Se você injetar `` tag. Todas as informações serão enviadas até que a citação seja fechada, mas isso requer alguma interação do usuário (o usuário deve clicar em algum link, porque a tag base terá mudado o domínio apontado pelo link):
```html
test
```
### Roubo de formulários
```html
```
Então, os formulários que enviam dados para o caminho (como `
```
### Roubo de segredos em texto claro via noscript
`` É uma tag cujo conteúdo será interpretado se o navegador não suportar javascript (você pode ativar/desativar Javascript no Chrome em [chrome://settings/content/javascript](chrome://settings/content/javascript)).
Uma maneira de exfiltrar o conteúdo da página da web do ponto de injeção até o fundo para um site controlado pelo atacante será injetar isso:
```html
```
### Bypassando CSP com interação do usuário
A partir desta [pesquisa da portswigger](https://portswigger.net/research/evading-csp-with-dom-based-dangling-markup), você pode aprender que mesmo em ambientes **mais restritos pelo CSP**, você ainda pode **exfiltrar dados** com alguma **interação do usuário**. Nesta ocasião, vamos usar o payload:
```html
You must click me
```
### Fluxo de script enganoso 1 - Ataque de namespace HTML
Insira uma nova tag com um id dentro do HTML que irá sobrescrever a próxima e com um valor que afetará o fluxo de um script. Neste exemplo, você está selecionando com quem uma informação será compartilhada:
```html
← Injected markup ...
Share this status update with: ← Legitimate optional element of a dialog
... function submit_status_update() { ... request.share_with =
document.getElementById('share_with').value; ... }
```
### Fluxo de script enganoso 2 - Ataque de namespace de script
Crie variáveis dentro do namespace javascript inserindo tags HTML. Então, essa variável afetará o fluxo da aplicação:
```html
← Injected markup ... // Legitimate application code
follows function retrieve_acls() { ... if (response.access_mode == AM_PUBLIC) ←
The subsequent assignment fails in IE is_public = true; else is_public = false;
} function submit_new_acls() { ... if (is_public) request.access_mode =
AM_PUBLIC; ← Condition always evaluates to true ... }
```
### Abuso de JSONP
Se você encontrar uma interface JSONP, poderá chamar uma função arbitrária com dados arbitrários:
```html
```
### Abuso de Iframe
Um documento filho possui a capacidade de visualizar e modificar a propriedade `location` de seu pai, mesmo em situações de origem cruzada. Isso permite a incorporação de um script dentro de um **iframe** que pode redirecionar o cliente para uma página arbitrária:
```html
```
Isso pode ser mitigado com algo como: `sandbox=' allow-scripts allow-top-navigation'`
Um iframe também pode ser abusado para vazar informações sensíveis de uma página diferente **usando o atributo name do iframe**. Isso ocorre porque você pode criar um iframe que se iframe a si mesmo, abusando da injeção HTML que faz com que **as informações sensíveis apareçam dentro do atributo name do iframe** e, em seguida, acessar esse nome a partir do iframe inicial e vazá-lo.
```html
```
Para mais informações, consulte [https://portswigger.net/research/bypassing-csp-with-dangling-iframes](https://portswigger.net/research/bypassing-csp-with-dangling-iframes)
### \` ou realizar um redirecionamento (em 5s neste caso): ``
Isso pode ser **evitado** com um **CSP** em relação ao **http-equiv** ( `Content-Security-Policy: default-src 'self';`, ou `Content-Security-Policy: http-equiv 'self';`)
### Novo \