DVWA 1.9+: Cross Site Scripting (XSS) no Document Object Model (DOM)

Miguel Sampaio da Veiga
Canivete-Suiço
Published in
3 min readOct 1, 2019

XSS é um dos tipos de ataques que figura no OWASP Top Ten (em número 7). O OWASP disponibiliza uma vasta gama de informação sobre este ataque aqui.

A DVWA dá-nos três vectores de ataque XSS. Este artigo vai centrar-se sobre XSS DOM. Arranquemos as nossas máquinas — DVWA e Kali — e comecemos o laboratório. O objectivo é expor o valor dos cookies

Low Security

Com a security level definida para low, vamos abrir a página XSS DOM.

Pressionando Select podemos ver que o URL aceita o parâmetro default=English. Este é o sinal que procuramos e é este parâmetro que vamos explorar — vamos mudar o valor deste parâmetro para test:

Esta experiência indica que a página apresentada vai buscar o valor do parâmetro ao URL. Vamos agora substituir o valor test por um script com um alert: <script>alert(“Houston, we have a problem!!”)</script>

O parâmetro é vulnerável a XSS. Vamos tentar obter o cookie <script>alert(document.cookie)</script>:

Medium security

Visualmente não há alterações entre os níveis de segurança. Vamos substitui o valor do parâmetro para test e observar a página.

Parece funcionar. Mas colocando a nossa script… nada. Deve haver alguma protecção sobre os valores dos parâmetros. Vamos ver o que se passa usado as Developer Tools:

Aproveitamos e testamos alguns valores para perceber o que a App faz com estes. Depois deste momento de tentativa e erro percebo que uma das formas de conseguir passar a nossa script é quebrar as tags com o seguinte valor: <</select><img src=”#” onclick=alert(“Gotcha!!!”)>:

Basta substituir o Gotach pelo document.cookie e:

High Security

Novamente, o aspecto da página não muda. Começamos pelo alert(“test”) e nada, completamente filtrado. Vamos experimentar algo diferente com os parâmetros no URL (mais informação sobre URL e parâmetros via POST e GET aqui) default=English&test:

A inclusão do &test parece escapar à proteção da aplicação. Vamos testar com a inclusão do seguinte no URL default=English&<script>alert(document.cookie)</script>:

Acabamos de poluir o URL (mais informação aqui) e obter a nossa terceira flag.

Conclusão

Neste exercício foi possível obter as três cookies nos três níveis de dificuldade da DVWA. Nos próximos artigos vamos continuar a explorar os outros vectores de ataque.

--

--