[CSRF, SSRF, XXE, PHP-Deserialisierung, Burpsuite]


Thema


1. CSRF-Schwachstellenprinzipien, Gefahren und Schutz

Prinzip:
CSRF (Cross-site Request Forgery) ist eine böswillige Nutzung von Websites.
CSRF-Angriffe können den angemeldeten oder autorisierten Status des Benutzers nutzen, um legitime Benutzer dazu zu verleiten, Anfragen an vertrauenswürdige Stellen zu stellen und so einige privilegierte Vorgänge ohne Autorisierung durchzuführen.

CSRF und XSS klingen ähnlich, die Angriffsmethoden sind jedoch völlig unterschiedlich.
XSS-Angriffe nutzen vertrauenswürdige Websites, um Client-Benutzer anzugreifen und Benutzercookies zu stehlen.
CSRF-Angriffe nutzen vertrauenswürdige Benutzer, um vertrauenswürdige Websites anzugreifen und Benutzercookies zu verwenden.

Schäden:
1. Manipulation von Benutzerdaten auf der Zielwebsite;
2. Diebstahl privater Benutzerdaten;
3. Dienen als zusätzliche Angriffsmethode für andere Angriffsvektoren;
4. Verbreitung von CSRF-Würmern.
Der spezifische Schaden hängt mit dem spezifischen Geschäftssystem zusammen, in dem die Schwachstelle besteht.

Schutz:
Es gibt viele Möglichkeiten, sich gegen CSRF-Angriffe zu verteidigen, aber die Grundidee ist dieselbe, nämlich das Hinzufügen von Pseudozufallszahlen zur Clientseite.
1. Bestätigungscode
2. Überprüfen Sie das HTTP-Referer-Feld
3. Fügen Sie der Anforderungsadresse ein Token hinzu und überprüfen Sie es
. Dies ist derzeit die branchenweit am häufigsten verwendete Methode zur Verhinderung von CSRF-Angriffen, da die Hauptursache von CSRF darin besteht, dass jede Anforderung gesendet wird Genau das Gleiche gilt für den Benutzer bei der Durchführung sensibler Vorgänge. Sobald die Cookie-Informationen ausgenutzt werden können, entsteht eine Sicherheitslücke. Der Token-Parameter ist nicht im Cookie enthalten und wird zufällig generiert, wodurch CSRF-Angriffe verhindert werden können.
4. Versuchen Sie, die Post-Methode zu verwenden und die Get-Methode zu reduzieren.
5. Fügen Sie dem http-Header benutzerdefinierte Attribute hinzu und überprüfen Sie diese.


2. SSRF-Schwachstellenprinzipien, Gefahren, gefährliche Funktionen, Schutz und Unterschiede zu CSRF

Prinzip:
SSRF (Server Side Request Forgery)
Der Grund für die Bildung von SSRF liegt hauptsächlich darin, dass der Server die Funktion zum Abrufen von Daten von anderen Serveranwendungen bereitstellt und nicht über ausreichende Filter und Einschränkungen für die Zieladresse und Anforderungsdatei verfügt, sodass die Ein Angreifer kann sie manipulieren. Die Zieladresse dieser Anfrage wird verwendet, um die gefälschte Anfrage zu stellen.

Gefahren:
1. Intranet-Erkennung: Port-Scanning, Asset-Scanning und Schwachstellen-Scanning von Intranet-Server-Büromaschinen
2. Diebstahl sensibler lokaler und Intranet-Daten (Zugriff auf und Herunterladen sensibler Daten im Intranet unter Verwendung des Dateiprotokolls
3. Angriff auf den lokalen Server Or Intranetanwendung: Mithilfe der entdeckten Schwachstellen können Sie weitere Angriffe und Exploits wie DOS-Angriffe, Überlaufangriffe usw. starten. 4.
Sprungbrettangriff: Verwenden Sie SSRF-Schwachstellen, um interne oder externe Angriffe zu starten, um Ihre echte IP zu verbergen (Broiler)
5. Umgehen Sie Sicherheitsmaßnahmen wie Firewall-CDN

Gefährliche Funktionen:
Wenn gefährliche Funktionen (PHP) auf Angreiferebene kontrollierbar sind, können SSRF-Schwachstellen bestehen.
1.file_get_contents():
Zeigt dem Benutzer die gesamte Datei oder die Datei, auf die eine URL verweist, als Zeichenfolge an.
2.fsockopen():
Wird zum Öffnen einer Netzwerkverbindung verwendet. Diese Funktion verwendet den Socket, um eine TCP-Verbindung mit dem herzustellen Server zur Übertragung. Originaldaten
3. curl_exec():
Initiieren Sie eine Anfrage zum Zugriff auf die Remote-URL und geben Sie das Anfrageergebnis an die Front-End-Seite zurück

Schutz:
1. Legen Sie eine Whitelist oder Blacklist von Protokollheadern fest, filtern Sie alle Protokollheader außer HTTP und HTTPS.
2. Legen Sie eine Whitelist oder Blacklist von URLs fest (z. B. Baidu Translate: Zugriff auf DNSlog und BBC nicht zulassen).
3. Legen Sie eine Whitelist oder eine Blacklist fest Blacklist der aufgerufenen IPs, Filter der aufgerufenen IPs (je nach Anforderungen)
4. Zurückgegebene Informationen filtern und Fehlerinformationen vereinheitlichen

Der Unterschied zu CSRF:
1.SSRF ist eine serverseitige Anforderungsfälschung, SSRF soll den Serverzugriff veranlassen und der Server wird getäuscht.
2.CSRF ist eine standortübergreifende Anforderungsfälschung und CSRF soll Benutzer zum Klicken verleiten. und es ist der Client, der getäuscht wird (Browser)


3.XXE Schwachstellenprinzipien, Gefahren und Schutz

Prinzip:
Die XXE-Sicherheitsanfälligkeit ist die Injektion externer XML-Entitäten. Dabei handelt es sich um eine Sicherheitsanfälligkeit, die auftritt, wenn XML auf externe Entitäten verweist und diese analysiert. Der XML-Parser ruft die externen Ressourcen ab und speichert sie in internen Entitäten. Angreifer können auf externe Entitäten verweisen, um Dateien zu lesen, Befehle auszuführen, DDOS, Intranet-Erkennung usw. auf dem Ziel.

Gefahren:
1. Lesen beliebiger Dateien
2. Ausführen von Systembefehlen
3. Erkennung von Intranet-Ports
4. Angriff auf Intranet-Websites
5. Phishing

Schutz:
1. Konfigurieren Sie den XML-Prozessor so, dass er die deaktivierte DTD (Dokumenttypdefinition) verwendet und das Parsen externer Entitäten verhindert.
2. Filtern Sie von Benutzern übermittelte XML-Daten über Blacklists.
Filterschlüsselwörter <!DOTYPE>, <!ENTITY SYSTEM, PUBLIC>
3. Verwenden Sie die von der Entwicklungssprache bereitgestellte Methode, um externe Entitäten
PHP zu deaktivieren:
libxml_disable_entity_loade(true)
Python, Java usw.


4.Schwachstellen bei PHP-Serialisierung und -Deserialisierung, Nutzungsbedingungen, gängige magische Methoden und Schutzvorschläge

Serialisierung und Deserialisierung: Serialisierung
:
Funktion: serialize()
komprimiert komplexe Datentypen in eine Zeichenfolge. Der Datentyp kann ein Array, eine Zeichenfolge, ein Objekt usw. sein. Durch die
Serialisierung eines Objekts werden alle Variablen des Objekts gespeichert, außer denen des Objekts Methoden werden nicht gespeichert, nur der Klassenname.
Zum Beispiel:
O:4:"User":1:{s:6:"benben";s:19:"system("ipconfig");";} Deserialisierung: Funktion: unserialize() stellt die ursprünglichen
Serialisierungsvariablen
wieder
her

Ausnutzungsbedingungen:
① Die Parameter in der Funktion unserialize() sind steuerbar.
② Es gibt eine ausnutzbare Klasse und eine magische Methode in der Klasse.
Die Deserialisierungsanfälligkeit basiert auf den Operationen der Serialisierung und Deserialisierung. Beim Deserialisieren - unserialize() Dort sind vom Benutzer steuerbare Parameter, und die Deserialisierung ruft automatisch einige magische Methoden auf. Wenn die magische Methode einige sensible Vorgänge und Funktionen enthält, z. B. die Funktionen eval () und system (), und die Parameter durch Deserialisierung generiert werden, dann der Benutzer Sie können sensible Vorgänge ausführen, indem Sie Parameter ändern, was eine Schwachstelle bei der Deserialisierung darstellt.

Magische Methoden:
__construct wird aufgerufen, wenn ein Objekt erstellt wird,
__destruct wird aufgerufen, wenn ein Objekt zerstört wird,
__toString wird aufgerufen, wenn ein Objekt als String behandelt wird.
__wakeup() Wird ausgelöst, wenn unserialize verwendet wird
__sleep() Wird ausgelöst, wenn serialize verwendet wird
__call() Wird ausgelöst, wenn eine unzugängliche Methode in einem Objektkontext aufgerufen wird __callStatic() Wird ausgelöst
, wenn eine unzugängliche Methode in einem statischen Kontext aufgerufen wird __set() ist Wird verwendet, um Daten in eine unzugängliche Eigenschaft zu schreiben. __isset() Löst __unset() aus, wenn isset() oder empty() für eine unzugängliche Eigenschaft aufgerufen wird. Bei Verwendung von unset() für eine unzugängliche Eigenschaft. Löst __toString() aus. Wird ausgelöst, wenn die Klasse als String verwendet wird , der Rückgabewert muss eine Zeichenfolge sein __invoke() Wird ausgelöst, wenn das Skript versucht, das Objekt als Funktion aufzurufen





Prinzip der Sicherheitsanfälligkeit:
Die Hauptursache der Sicherheitsanfälligkeit besteht darin, dass das Programm die vom Benutzer eingegebene serialisierte Zeichenfolge nicht vollständig erkennt, wodurch der Angreifer einige magische Funktionen umgehen oder Befehle ändern kann, was dazu führt, dass der Deserialisierungsprozess böswillig gesteuert wird, was dazu führt Code Eine Reihe unkontrollierbarer Konsequenzen wie Ausführung und Getshell.

Schutzvorschläge:
1. Führen Sie eine strenge Filterung und Prüfung eingehender Objekte durch.
2. Erkennen Sie, ob beim Deserialisierungsprozess benutzersteuerbare Parameter in den Dateilese- und -schreib-, Befehls- oder Codeausführungsfunktionen vorhanden sind. Wie die meisten Schwachstellen werden Deserialisierungsprobleme auch durch Kontrollprobleme von Benutzerparametern verursacht. Eine gute vorbeugende Maßnahme besteht daher darin, Benutzereingaben oder vom Benutzer steuerbare Parameter nicht direkt in den Deserialisierungsvorgang einzubeziehen.


5. Gemeinsame Module und Arbeitsprinzipien von Burpsuite

Häufig verwendete Module:
1. Proxy (Proxy):
Hierbei handelt es sich um einen Proxyserver, der HTTP/S abfängt. Als Vermittler zwischen dem Browser und der Zielanwendung können Sie den ursprünglichen Datenfluss in beide Richtungen abfangen, anzeigen und ändern . .
2. Spider:
Die Spider-Crawling-Funktion von Spider kann uns helfen, die Struktur des Systems zu verstehen. Der von Spider gecrawlte Inhalt wird in Target angezeigt. 3.
Intruder (Intrusion):
ein konfigurierbares Tool zum Testen von Webanwendungen. Automatisierte Angriffe. Diese Funktion kann vielfältig eingesetzt werden, z. B. zur Ausnutzung von Schwachstellen, zum Testen von Webanwendungen, zur Durchführung von Brute-Force-Angriffen usw.
4.Repeater:
Ein Tool zur manuellen Bedienung, um einzelne HTTP-Anfragen auszulösen und auf die Anwendung zu antworten. Diese Funktion wird verwendet, um dieselbe Anfrage je nach Situation zu ändern, zu senden und zu analysieren. Durch Anpassen der Parameter der Anfrage können Sie es weiter versuchen und den Status anhand der Antwort überprüfen. Das spart Zeit beim Arbeiten im Browser.
5.Decoder:
Ein Decoder ist ein Werkzeug zur manuellen Ausführung oder intelligenten Dekodierung von Anwendungsdaten. Diese Funktion kann verwendet werden, um Daten zu dekodieren, um die ursprüngliche Datenform abzurufen, oder um eine Kodierung und Datenverschlüsselung durchzuführen.
6. Vergleicher:
Normalerweise wird ein visueller „Unterschied“ zweier Datenelemente durch einige verwandte Anforderungen und Antworten erhalten. Diese Funktion wird hauptsächlich verwendet, um einen Vergleich zwischen zwei beliebigen Anfragen, Antworten oder anderen Datenformen durchzuführen.
7. Extender (Erweiterung):
Ermöglicht das Laden von Burp Suit-Erweiterungen und das Erweitern von Burp Suit mithilfe Ihres eigenen Codes oder Codes von Drittanbietern. Funktion:
Für Sie können beispielsweise einige XSS-Plug-Ins laden, um XSS-Schwachstellen zu erkennen, und das SQLMap-Plug-In herunterladen, um automatisch Daten einzufügen, die möglicherweise über SQL-Injection verfügen.

Funktionsprinzip:
Das BurpSuite-Proxy-Tool fängt den gesamten Netzwerkverkehr ab, der über den Proxy läuft, z. B. Client-Anfragedaten, Server-Rückgabeinformationen usw. BurpSuite fängt hauptsächlich den HTTP- und HTTPS-Protokollverkehr ab. Durch das Abfangen verwendet BurpSuite einen Mittelsmann, um die Anforderungsdaten des Clients und die Rückgabeinformationen des Servers zu verarbeiten, um den Zweck der Sicherheitsprüfung zu erreichen.


Zusammenfassen

Dieses Problem betrifft hauptsächlich CSRF, SSRF, XXE, PHP-Deserialisierung und andere Schwachstellen sowie allgemeine BP-Module

Guess you like

Origin blog.csdn.net/qq_61872115/article/details/126086482