Python-Penetrationstest - XSS-Webangriff

Cross-Site-Scripting-Angriffe sind eine Art der Injektion, die sich auch auf clientseitige Code-Injektionsangriffe bezieht. Hier werden bösartige Codes in eine legitime Website eingefügt. Das Konzept der Same Origin Policy (SOP) ist sehr nützlich, um das Konzept der Cross-Site-Skripterstellung zu verstehen. SOP ist das wichtigste Sicherheitsprinzip in jedem Webbrowser. Es verbietet Websites, Inhalte von Seiten mit einem anderen Ursprung abzurufen. Beispielsweise kann die Webseite www.tutorialspoint.com/index.html über auf die Inhalte zugreifenwww.tutorialspoint.com/contact.htmlaber www.virus.com/index.html nicht zugreifen können Inhalte auswww.tutorialspoint.com/contact.html. Auf diese Weise können wir sagen, dass Cross-Site-Scripting eine Möglichkeit ist, die SOP-Sicherheitsrichtlinie zu umgehen.

Arten von XSS-Angriffen

In diesem Abschnitt lernen wir die verschiedenen Arten von XSS-Angriffen kennen. Der Angriff kann in die folgenden Hauptkategorien eingeteilt werden:

  • Permanentes oder gespeichertes XSS
  • Nicht persistentes oder reflektiertes XSS

Permanentes oder gespeichertes XSS

Bei dieser Art von XSS-Angriff fügt ein Angreifer ein Skript ein, das als Nutzlast bezeichnet wird und permanent in der Zielwebanwendung gespeichert ist, beispielsweise in einer Datenbank. Dies ist der Grund, warum es als persistenter XSS-Angriff bezeichnet wird. Es ist tatsächlich die schädlichste Art von XSS-Angriff. Beispielsweise wird ein bösartiger Code von einem Angreifer in das Kommentarfeld eines Blogs oder in den Forumsbeitrag eingefügt.

Nicht persistentes oder reflektiertes XSS

Dies ist die häufigste Art von XSS-Angriffen, bei denen die Nutzdaten des Angreifers Teil der Anforderung sein müssen, die an den Webserver gesendet und so wiedergegeben wird, dass die HTTP-Antwort die Nutzdaten aus der HTTP-Anforderung enthält. Es handelt sich um einen nicht dauerhaften Angriff, da der Angreifer jedem Opfer die Nutzlast liefern muss. Das häufigste Beispiel für solche Arten von XSS-Angriffen sind Phishing-E-Mails, mit deren Hilfe der Angreifer das Opfer anzieht, eine Anfrage an den Server zu richten, der die XSS-Nutzdaten enthält, und am Ende das Skript ausführt, das im Browser reflektiert und ausgeführt wird .

Beispiel

Wie bei SQLi können XSS-Webangriffe implementiert werden, indem Eingabedaten für die Anwendung bearbeitet werden. In den folgenden Beispielen ändern wir die im vorherigen Abschnitt durchgeführten SQLi-Angriffsvektoren, um den XSS-Webangriff zu testen. Das unten angegebene Python-Skript hilft bei der Analyse von XSS-Angriffen mitmechanize - -

Lassen Sie uns zunächst die importieren mechanize Modul.

import mechanize

Geben Sie nun den Namen der URL an, um die Antwort nach dem Absenden des Formulars zu erhalten.

url = input("Enter the full url")
   attack_no = 1

Wir müssen die Angriffsvektoren aus der Datei lesen.

With open (‘vectors_XSS.txt’) as x:

Jetzt senden wir eine Anfrage mit jedem Arrack-Vektor -

For line in x:
   browser.open(url)
browser.select_form(nr = 0)
   browser[“id”] = line
   res = browser.submit()
content = res.read()

Die folgende Codezeile überprüft den gedruckten Angriffsvektor.

if content.find(line) > 0:
print(“Possible XSS”)

Die folgende Codezeile schreibt die Antwort auf die Ausgabedatei.

output = open(‘response/’ + str(attack_no) + ’.txt’, ’w’)
output.write(content)
output.close()
print attack_no
attack_no += 1

XSS tritt auf, wenn eine Benutzereingabe ohne Validierung in die Antwort gedruckt wird. Um die Möglichkeit eines XSS-Angriffs zu überprüfen, können wir daher den Antworttext für den von uns bereitgestellten Angriffsvektor überprüfen. Wenn der Angriffsvektor in der Antwort ohne Flucht oder Validierung vorhanden ist, besteht eine hohe Wahrscheinlichkeit eines XSS-Angriffs.