Prueba de penetración de Python: ataque web XSS
Los ataques de secuencias de comandos entre sitios son un tipo de inyección que también se refiere al ataque de inyección de código del lado del cliente. Aquí, los códigos maliciosos se inyectan en un sitio web legítimo. El concepto de Política del mismo origen (SOP) es muy útil para comprender el concepto de secuencias de comandos entre sitios. SOP es el principio de seguridad más importante en todos los navegadores web. Prohíbe a los sitios web recuperar contenido de páginas con otro origen. Por ejemplo, la página web puede acceder a los contenidos desdewww.tutorialspoint.com/contact.htmlpero www.virus.com/index.html no puede acceder al contenido dewww.tutorialspoint.com/contact.html. De esta forma, podemos decir que la secuencia de comandos entre sitios es una forma de eludir la política de seguridad de SOP.
Tipos de ataque XSS
En esta sección, aprendamos sobre los diferentes tipos de ataque XSS. El ataque se puede clasificar en las siguientes categorías principales:
- XSS persistente o almacenado
- XSS no persistente o reflejado
XSS persistente o almacenado
En este tipo de ataque XSS, un atacante inyecta un script, denominado carga útil, que se almacena permanentemente en la aplicación web de destino, por ejemplo, dentro de una base de datos. Esta es la razón por la que se llama ataque XSS persistente. En realidad, es el tipo de ataque XSS más dañino. Por ejemplo, un atacante inserta un código malicioso en el campo de comentarios de un blog o en la publicación del foro.
XSS no persistente o reflejado
Es el tipo más común de ataque XSS en el que la carga útil del atacante tiene que ser parte de la solicitud, que se envía al servidor web y se refleja, de tal manera que la respuesta HTTP incluye la carga útil de la solicitud HTTP. Es un ataque no persistente porque el atacante necesita entregar la carga útil a cada víctima. El ejemplo más común de este tipo de ataques XSS son los correos electrónicos de phishing con la ayuda de los cuales el atacante atrae a la víctima para realizar una solicitud al servidor que contiene las cargas útiles XSS y termina ejecutando el script que se refleja y ejecuta dentro del navegador. .
Ejemplo
Al igual que SQLi, los ataques web XSS se pueden implementar manipulando los datos de entrada a la aplicación. En los siguientes ejemplos, estamos modificando los vectores de ataque SQLi, hecho en la sección anterior, para probar el ataque web XSS. La secuencia de comandos de Python que se proporciona a continuación ayuda a analizar el ataque XSS utilizandomechanize -
Para empezar, importemos el mechanize módulo.
import mechanize
Ahora, proporcione el nombre de la URL para obtener la respuesta después de enviar el formulario.
url = input("Enter the full url")
attack_no = 1
Necesitamos leer los vectores de ataque del archivo.
With open (‘vectors_XSS.txt’) as x:
Ahora enviaremos una solicitud con cada vector de arrack:
For line in x:
browser.open(url)
browser.select_form(nr = 0)
browser[“id”] = line
res = browser.submit()
content = res.read()
La siguiente línea de código verificará el vector de ataque impreso.
if content.find(line) > 0:
print(“Possible XSS”)
La siguiente línea de código escribirá la respuesta en el archivo de salida.
output = open(‘response/’ + str(attack_no) + ’.txt’, ’w’)
output.write(content)
output.close()
print attack_no
attack_no += 1
XSS ocurre cuando la entrada de un usuario se imprime en la respuesta sin ninguna validación. Por lo tanto, para verificar la posibilidad de un ataque XSS, podemos verificar el texto de respuesta para el vector de ataque que proporcionamos. Si el vector de ataque está presente en la respuesta sin ningún escape o validación, existe una alta posibilidad de ataque XSS.