quinta-feira, 5 de julho de 2012

Cross-site scripting (XSS) por Ahmed Elhady Mohamed


Introdução

[+] XSS por Wikipédia

Cross-site scripting (XSS) é um tipo de vulnerabilidade do sistema de segurança de um computador, encontrado normalmente em aplicações web que ativam ataques maliciosos ao injetarem client-side script dentro das páginas web vistas por outros usuários. Um script de exploração de vulnerabilidade cross-site pode ser usado pelos atacantes para escapar aos controles de acesso que usam a mesma política de origem.

[+] XSS é perigoso?

Sim, XSS é realmente perigoso, é de alta gravidade, porque ele poderia mudar o site e roubar as credenciais de administrador, nestes casos, o invasor pode controlar e comprometer o aplicativo.
Eu nunca tinha dado tanta importância para o XSS até ver uma palestra na CPBR5 que falava das 10 ameaças da OWASP mais usadas, vi coisas realmente incríveis com o XSS até mesmo roubo de sessões.

[+] O Que o atacante quer alcançar?

- Alterar configurações
- Roubar cookies
- Fazer uma publicação falsa
- Realizar roubos de Tokens para ataque CSRF

[+] Tipos de Ataques XSS

Persistent (stored) XSS
O ataque é armazenado no site.
Non persistent  (reflect) XSS
Usuário tem que ir através de um link especial para ser explorado.
DOM-based  XSS
problema existe dentro do script do lado do cliente
Vamos discutir cada tipo destes ataques em detalhes.

[+] Persistent (stored) XSS

O persistent (or stored) vulnerability XSS é uma variante mais devastadora da falha de cross-site scripting, ela ocorre quando os dados fornecidos pelo atacante é salvo pelo servidor e em seguida permanentemente exibida nas páginas retornadas para outros usuários na exibição regular da navegação. Um exemplo clássico disso é com quadros de mensagens de forum onde os usuários tem permissões para postar mensagens formatadas em HTML para que outros usuários possam ler.
Persistent XSS simplesmente ocorre quando o desenvolvedor armazena os dados de entrada do usuário no banco de dados ou simplesmente o escreve em um arquivo sem uma filtragem adequada, em seguida, envia-os novamente para os usuários.

[+] Exemplo de persistent XSS em PHP

'.mysql_error().'
'); } ?>
Os dois parâmetros em que o código ”message” e ”name” não são higienizados adequadamente e assim nós armazenamos estes parâmetros para a tabela no guestbook(livro de visitas), portanto, quando a exibição desses parâmetros voltar ao navegador do cliente, ele irá executar o código JavaScript malicioso.
Cross-site scripting (XSS) por Ahmed Elhady Mohamed
< –
Dentro da caixa de texto vulnerável foi inserido um código em java script malicioso.
– >
Assim que o código é executado olha o resultado:

Cross-site scripting (XSS) por Ahmed Elhady Mohamed

[+] Non Persistent (Reflected) XSS

A definição non persistent (ou reflected) XSS é de longe o tipo mais comum. Estes buracos aparecem quando os dados fornecidos por um cliente web, mais comumente em parâmetros de consulta HTTP ou envios de formulários HTML, é usado imediatamente por scripts do servidor para gerar uma página de resultados para o usuário, sem a correta higienização do pedido.

[+] Exemplo de non persistent XSS em PHP

'; 
echo 'Hello' . $_GET['name']; 
echo '
'; } ?>
Como você pode ver, o “name” é um parâmetro não higienizado e retornara para o usuário, assim quando o usuário injetar um código malicioso em JS ele será executado.
Vamos injetar o código   e vejamos o que vai acontecer.
Assim que inserimos o código no campo vulnerável ele retorna o erro e notem que na barra de navegação do browser que ele vai mostrar o código digitado também.
.
.
.
.
.
O restante do artigo fiquei com um pouco de preguiça de traduzir, mas é um bom artigo e vale a pena se visualizado.
Segue o link do PDF http://www.exploit-db.com/wp-content/themes/exploit/docs/18895.pdf



Fonte: http://unknownantisec.wordpress.com/2012/05/20/cross-site-scripting-xss-por-ahmed-elhady-mohamed/

Nenhum comentário:

Postar um comentário

............