Teste de penetração Python - XSS Web Attack
Ataques de script entre sites são um tipo de injeção que também se refere ao ataque de injeção de código do lado do cliente. Aqui, códigos maliciosos são injetados em um site legítimo. O conceito de Same Origin Policy (SOP) é muito útil para entender o conceito de Cross-site scripting. SOP é o princípio de segurança mais importante em todos os navegadores da web. Ele proíbe sites de recuperar conteúdo de páginas com outra origem. Por exemplo, a página da web www.tutorialspoint.com/index.html pode acessar o conteúdo dewww.tutorialspoint.com/contact.htmlmas www.virus.com/index.html não pode acessar o conteúdo dewww.tutorialspoint.com/contact.html. Desta forma, podemos dizer que o cross-site scripting é uma forma de contornar a política de segurança SOP.
Tipos de ataque XSS
Nesta seção, vamos aprender sobre os diferentes tipos de ataque XSS. O ataque pode ser classificado nas seguintes categorias principais -
- XSS persistente ou armazenado
- XSS não persistente ou refletido
XSS persistente ou armazenado
Nesse tipo de ataque XSS, um invasor injeta um script, conhecido como carga útil, que é armazenado permanentemente no aplicativo da Web de destino, por exemplo, em um banco de dados. Esta é a razão, é chamado de ataque XSS persistente. Na verdade, é o tipo de ataque XSS mais prejudicial. Por exemplo, um código malicioso é inserido por um invasor no campo de comentário de um blog ou na postagem do fórum.
XSS não persistente ou refletido
É o tipo mais comum de ataque XSS em que a carga útil do invasor deve fazer parte da solicitação, que é enviada ao servidor da Web e refletida de volta de forma que a resposta HTTP inclua a carga útil da solicitação HTTP. É um ataque não persistente porque o invasor precisa entregar a carga útil para cada vítima. O exemplo mais comum desse tipo de ataque XSS são os e-mails de phishing com a ajuda dos quais o atacante atrai a vítima para fazer uma solicitação ao servidor que contém as cargas XSS e acaba executando o script que é refletido e executado dentro do navegador .
Exemplo
Da mesma forma que o SQLi, os ataques XSS da web podem ser implementados pela manipulação de dados de entrada para o aplicativo. Nos exemplos a seguir, estamos modificando os vetores de ataque SQLi, feitos na seção anterior, para testar o ataque XSS da Web. O script Python fornecido abaixo ajuda a analisar o ataque XSS usandomechanize -
Para começar, vamos importar o mechanize módulo.
import mechanize
Agora, forneça o nome do URL para obter a resposta após o envio do formulário.
url = input("Enter the full url")
attack_no = 1
Precisamos ler os vetores de ataque do arquivo.
With open (‘vectors_XSS.txt’) as x:
Agora vamos enviar a solicitação com cada vetor arrack -
For line in x:
browser.open(url)
browser.select_form(nr = 0)
browser[“id”] = line
res = browser.submit()
content = res.read()
A linha de código a seguir verificará o vetor de ataque impresso.
if content.find(line) > 0:
print(“Possible XSS”)
A linha de código a seguir escreverá a resposta no arquivo de saída.
output = open(‘response/’ + str(attack_no) + ’.txt’, ’w’)
output.write(content)
output.close()
print attack_no
attack_no += 1
O XSS ocorre quando uma entrada do usuário é impressa na resposta sem qualquer validação. Portanto, para verificar a possibilidade de um ataque XSS, podemos verificar o texto de resposta do vetor de ataque que fornecemos. Se o vetor de ataque estiver presente na resposta sem qualquer escape ou validação, há uma grande possibilidade de ataque XSS.