DVWA 1.9+: Cross Site Scripting (XSS) no Document Object Model (DOM)
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.