Sicherheitslücken beim Datei-Upload treten in Anwendungen mit Upload-Funktionen auf. Wenn die Anwendung keine Kontrolle über die hochgeladenen Dateien des Benutzers hat oder Fehler aufweist, können Angreifer die Fehler in der Anwendungs-Upload-Funktion ausnutzen, um Trojaner, Viren und andere schädliche Dateien hochzuladen an den Server senden und den Server steuern.
Der Hauptgrund für die Sicherheitslücke beim Hochladen von Dateien besteht darin, dass die Anwendung über eine Upload-Funktion verfügt, die hochgeladenen Dateien jedoch keine strenge Legalitätsprüfung bestanden haben oder die Prüffunktion fehlerhaft ist, wodurch Trojaner-Dateien zugelassen werden auf den Server hochgeladen werden. Sicherheitslücken beim Hochladen von Dateien sind äußerst schädlich, da bösartiger Code direkt auf den Server hochgeladen werden kann, was schwerwiegende Folgen haben kann, z. B. Manipulation der Webseite des Servers, Hängenbleiben der Website, Fernsteuerung des Servers und Installation von Hintertüren.
Hier besprechen wir verschiedene Verifizierungs- und Umgehungsmethoden für das Hochladen von Dateien:
Die Schwachstelle bei der Umgehung des Front-End-JS-Filters liegt darin, dass die Anwendung durch JS-Code im Front-End verifiziert wird , und Die Überprüfung wird nicht im Backend des Programms durchgeführt, sodass Sie die Upload-Filterung umgehen und Trojaner hochladen können, indem Sie den Front-End-JS-Code ändern.
Wie kann man also beurteilen, ob es sich um eine Front-End-Verifizierung handelt? Ich persönlich denke, wir können beim Hochladen und Erfassen des Pakets überprüfen, ob wir das Datenpaket erhalten können, ob Daten durchfließen, oder wir können überprüfen, ob auf der hochgeladenen Bildseite die hochgeladene Bildadresse usw. angezeigt wird.
Bypass: Entfernen Sie den Filtercode, ändern oder deaktivieren Sie Javascript.
Gemeinsame Überprüfungen für den Datei-Upload: Suffixname (direkte Überprüfung), Datei, Dateikopf (indirekte Überprüfung). 2.1 Suffixname Es gibt keine vollständige Filterung, sodass Angreifer Dateien hochladen können, die nicht auf der schwarzen Liste stehen.
Umgehung: Verwenden Sie andere Formate (php5, Phtml, php3) oder Dateiformate, und Sie können auch einige Interferenzsymbole hinzufügen, um eine Umgehung zu erreichen.
2.1.2 .htaccess (pseudostatisches Protokoll) – Analyse neu schreiben (nur in Apache verfügbar und Aktivierung des pseudostatischen Moduls).htaccess-Datei-Upload ist eine Funktion, die auf dem Webserver mit konfiguriert werden kann. htaccess-Dateien zum Erreichen von JPG-, PNG- und anderen Suffixen werden als PHP-Dateianalyseprozess verwendet.
.htaccess-Dateien (verteilte Konfigurationsdateien) bieten eine Möglichkeit, Konfigurationsänderungen pro Verzeichnis vorzunehmen. Eine Datei, die eine oder mehrere Konfigurationsanweisungen enthält, wird in einem bestimmten Dokumentverzeichnis abgelegt, und die Anweisungen in der Datei gelten für dieses Verzeichnis und alle seine Unterverzeichnisse. .htaccess ist eine Konfigurationsdatei des Webservers. Mit der .htaccess-Datei können Sie Konfigurationen wie die Parsing-Methode und die Umleitung von Definitionsdateien im Webserver implementieren.
Bypass-Methode: Laden Sie zunächst die 1.htaccess-Datei hoch. 2. Laden Sie das Bild erneut hoch.
2.1.3 LeerzeichenumgehungBypass-Methode: Fügen Sie nach dem Dateisuffixnamen im Datenpaket ein Leerzeichen hinzu, um eine Umgehung zu erreichen.
2.1.4. BypassBypass-Methode: Fügen Sie ähnlich wie bei der Space-Bypass-Methode ein . nach dem Dateisuffixnamen im Datenpaket hinzu, um eine Umgehung zu erreichen.
2.1.5::$DatenumgehungDies ist ein für Windows einzigartiges Protokoll. Wenn in Windows der Dateiname + „::$DATA“ verwendet wird, werden die Daten nach ::$DATA behandelt Bei der Verarbeitung eines Dateistreams wird der Suffixname nicht erkannt und der Dateiname vor ::$DATA wird beibehalten. Der Zweck besteht nicht darin, den Suffixnamen zu überprüfen.
2.1.6 SchleifenfilterungBypass: Der Code ersetzt PHP in der Zeichenfolge durch nichts.
Zum Beispiel: a.pphphp wird zu ->a.
2.1.7 Whitelist: Löschen Sie das Formatsuffix, das hochgeladen werden kann (sicherer)
%00-Trunkierung, 0x00-Trunkierung (basierend auf dem Prinzip der Adresse, Daten hinter der Datei abschneiden) 00 Kürzungsumgehung kann nur die Front-End-Überprüfung umgehen.
Der Hauptgrund für die Kürzung ist die Existenz des Zeichens %00, wenn PHP
Bypass-Methode (Pfad%00-Kürzung):
Ändern Sie test in test.php%00aaa, 1.php in 1.jpg, damit die Überprüfungsfunktion übergeben werden kann.Verschiedene Dateien haben spezifische Datei-Header-Formate, Entwicklung Der Autor Erkennt den Dateityp durch Überprüfen des Dateiheaders der hochgeladenen Datei. Diese Erkennungsmethode kann jedoch auch umgangen werden. Solange der entsprechende Dateiheader zum Header der Trojaner-Datei hinzugefügt wird, kann die Erkennung umgangen werden, ohne den normalen Betrieb zu beeinträchtigen der Trojaner-Datei.
Gemeinsame Dateiheader sind wie folgt:
JPEG 0xFFD8FF
PNG0 x89504E470D0A1A0A
GIF. 4 7 49 4638 39 61 ( GIF89a )
Bypass-Methode:
GIF89a
?>
#🎜🎜 #5. Andere Schwachstellen
CVE-2017-12615
CVE- 2015-5254# 🎜🎜#
CVE-2019-2618......Es gibt Online-Tutorials zum Ausnutzen dieser Schwachstellen Meister können sich das Material ansehen. 6. Schwachstelle beim Parsen von Middleware 6.1 Schwachstelle beim Parsen von IIS 6.0+ Beurteilen Sie schnell die Schwachstelle beim Parsen, /.php, um zu sehen, ob sie verstümmelt ist Code, wenn er vorhanden ist, existiert er nicht, wenn er nicht existiert. 6.1.1 Als Ordner ausführen Normaler Dateiname: image/aa.jpg. Bypass: image.asp/aa.jpg aa.jpg wird als asp analysiert. 6.1.2 Als Datei ausführen Normaler Dateiname: image.jpg. Bypass: image.asp;.jpg oder xxx.asp;xxx.jpg Diese Datei wird als ASP ausgeführt. asp kann in PHP geändert werden. Wenn Sie PHP ändern, kann es als PHP ausgeführt werden. 7.WAF-BypassUm WAF zu umgehen, müssen wir wissen, welche Parameter geändert werden können, wie zum Beispiel:Inhalt -Disposition: grundsätzlich veränderbar.
Zum Beispiel x.jpg;.php Das Semikolon stellt das Ende eines Datenelements dar.
Fügen Sie nach dem Dateisuffixnamen x.php%00.jpg eine %00-Kürzung (Leerzeichen) hinzu.
Zeilenumbruch (ähnlich n im Programm) ähnelt der Datenblockübertragung, wie zum Beispiel:
Das obige ist der detaillierte Inhalt vonEine kurze Diskussion über Methoden zum Hochladen von Dateien zum Erhalten von Berechtigungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!