## https://sploitus.com/exploit?id=82D65016-6108-5C85-AEEF-52322192F768
# XSS Sandbox
Um ambiente educacional seguro para praticar e estudar vulnerabilidades de Cross-Site Scripting (XSS). Este projeto demonstra três tipos principais de XSS.
## Cenários Implementados
### 1. XSS Refletido (Reflected XSS)
**Como funciona**: O valor digitado no campo de busca é refletido diretamente na página sem sanitização adequada. A entrada do usuário é inserida no HTML através de `innerHTML`, permitindo execução de código JavaScript.
**Vulnerabilidade no código**:
```javascript
searchResult.innerHTML = `Exibindo resultados para: ${query}`;
```
**5 Exemplos de Payloads**:
1. **Alert Básico**:
```html
alert('XSS Refletido funcionou!')
```
Exibe um alerta simples para confirmar a vulnerabilidade.
2. **Roubo de Cookie**:
```html
alert('Cookie: ' + document.cookie)
```
Mostra os cookies da sessão atual em um alerta.
3. **Redirecionamento Malicioso**:
```html
window.location.href='https://malicious-site.com'
```
Redireciona o usuário para um site malicioso.
4. **Keylogger Simples**:
```html
document.addEventListener('keypress', function(e) { console.log('Tecla pressionada: ' + e.key); })
```
Registra todas as teclas pressionadas no console do navegador.
5. **Modificação de Conteúdo**:
```html
document.body.innerHTML = 'Site Comprometido!'
```
Substitui todo o conteúdo da página por uma mensagem de comprometimento.
### 2. XSS Armazenado (Stored XSS)
**Como funciona**: Os comentários são "armazenados" localmente no DOM e exibidos para todos os usuários. O nome do usuário e o texto do comentário são inseridos diretamente no HTML sem validação.
**Vulnerabilidade no código**:
```javascript
newComment.innerHTML = `${username}: ${commentText}`;
```
**5 Exemplos de Payloads**:
1. **Alert no Nome de Usuário**:
```html
Nome: alert('XSS no nome!')
Comentário: Teste normal
```
Executa JavaScript através do campo de nome.
2. **Imagem Quebrada com Onerror**:
```html
Nome: Usuário
Comentário:
```
Usa o evento onerror de uma imagem inexistente para executar código.
3. **Iframe Malicioso**:
```html
Nome: Atacante
Comentário:
```
Cria um iframe invisível que executa JavaScript.
4. **Event Handler em Link**:
```html
Nome: User
Comentário: Clique aqui para mais info
```
Adiciona um manipulador de evento onclick em um link.
5. **SVG com JavaScript**:
```html
Nome: SVGUser
Comentário:
```
Usa SVG com evento onload para executar código.
### 3. XSS Baseado em DOM (DOM XSS)
**Como funciona**: A entrada do usuário é processada inteiramente pelo JavaScript do lado cliente e inserida no DOM sem passar pelo servidor. O valor é lido do input e escrito diretamente no elemento de resultado.
**Vulnerabilidade no código**:
```javascript
const output = `Iniciando ping simulado para ${target}...`;
networkResult.innerHTML = output;
```
**5 Exemplos de Payloads**:
1. **Script Tag Fechada**:
```html
127.0.0.1alert('DOM XSS!')
```
Fecha a tag pre existente e insere um script.
2. **Manipulação de Estilo**:
```html
localhostbody{background: red !important;}
```
Injeta CSS para alterar completamente a aparência da página.
3. **Form Injection**:
```html
8.8.8.8Login
```
Injeta um formulário falso para capturar credenciais.
4. **JavaScript Inline**:
```html
google.com" onmouseover="alert('Mouse sobre o texto!')
```
Adiciona um evento que executa quando o mouse passa sobre o texto.
5. **Payload com Múltiplas Tags**:
```html
site.comClique aquiconsole.log('Console comprometido')
```
Combina múltiplas técnicas em um único payload.
### Execução
1. **Clone ou baixe o projeto**:
```bash
git clone https://github.com/VertigoFromOuterSpace/SiteXSS.git
cd SiteXSS
```
2. **Abra o arquivo HTML**:
- Duplo clique em `index.html`, ou
- Abra através do navegador: `file://caminho/para/index.html`
3. **Teste os cenários**:
- Use os payloads de exemplo fornecidos
- Experimente criar seus próprios payloads
- Observe como cada tipo de XSS se comporta
### Dicas para Prática
1. **Comece com exemplos simples**: Use `alert('teste')` para confirmar a vulnerabilidade.
2. **Analise o código fonte**: Examine como cada payload é processado no JavaScript.
3. **Use Developer Tools**: Abra o console do navegador para ver erros e logs.
4. **Experimente variações**: Modifique os payloads para entender diferentes vetores.
5. **Documente descobertas**: Anote quais payloads funcionam e por quê.
## Conceitos de Segurança Demonstrados
### Tipos de XSS
1. **Reflected XSS**: Payload executado imediatamente quando refletido na página.
2. **Stored XSS**: Payload armazenado e executado quando a página é carregada.
3. **DOM XSS**: Payload executado através de manipulação do DOM pelo lado cliente.
### Vetores de Ataque
1. **Script Tags**: `código`
2. **Event Handlers**: `onload`, `onerror`, `onclick`
3. **HTML Injection**: Injeção de tags HTML arbitrárias
4. **Attribute Injection**: Manipulação de atributos de elementos existentes
5. **Protocol Handlers**: `javascript:` URLs
### Impactos Demonstrados
1. **Session Hijacking**: Roubo de cookies e tokens de sessão
2. **Phishing**: Criação de formulários falsos para captura de credenciais
3. **Defacement**: Alteração visual da página
4. **Keylogging**: Captura de teclas digitadas
5. **Redirection**: Redirecionamento para sites maliciosos
## Limitações do Ambiente
1. **Armazenamento Temporário**: Comentários são perdidos ao recarregar a página
2. **Simulação de Servidor**: Não há backend real, apenas simulação cliente-side
3. **Ambiente Local**: Algumas restrições de segurança do navegador podem aplicar
4. **Scope Limitado**: Foca apenas em XSS, não aborda outras vulnerabilidades web
5. **Sem Autenticação**: Não demonstra cenários com sessões reais de usuário
## Recursos Adicionais
### Para Estudo Complementar
1. **OWASP XSS Prevention Cheat Sheet**
2. **PortSwigger Web Security Academy**
3. **MDN Web Security Guidelines**
4. **SANS Secure Coding Practices**
5. **W3C Security Considerations**
### Ferramentas Relacionadas
1. **Burp Suite**: Para testes avançados de aplicações web
2. **OWASP ZAP**: Scanner de vulnerabilidades gratuito
3. **XSSHunter**: Plataforma para detectar XSS blind
4. **BeEF**: Framework de exploração de navegadores
5. **Browser Developer Tools**: Para análise de DOM e debugging
## Contribuição
Faça o que bem entender com esse projeto.