In diesem Artikel werden hauptsächlich das Prinzip und die Lösung der chr(0)-Sicherheitsanfälligkeit vorgestellt, die beim Hochladen von Dateien eine sehr schädliche Sicherheitslücke darstellen kann
Wenn wir ASP zum Entwickeln der Datei-Upload-Funktion verwenden, schränken wir häufig das Hochladen einiger Dateien ein. Eine gängige Methode besteht darin, festzustellen, ob die Erweiterung der hochgeladenen Datei den Vorschriften entspricht Die richtige Zeichenfolgenfunktion zum Abrufen der hochgeladenen Datei kann leicht ermittelt werden, es gibt jedoch eine Sicherheitslücke, die sehr gefährlich ist, und zwar die Sicherheitslücke chr(0). Details.
1. Erklären Sie zunächst, was chr(0) ist.
In ASP können Sie die Funktion chr() verwenden, um den ASCII-Code aufzurufen, wobei chr(0) bedeutet, dass der Aufruf ein Endzeichen ist. Einfach ausgedrückt: Wenn eine Zeichenfolge das Zeichen chr(0) enthält, ist nur der Anfang von chr (0) können ausgegeben werden, die Zeichen nach chr(0) werden nicht ausgegeben. Geben Sie zur Veranschaulichung ein Beispiel:
Kopieren Sie den Codecode wie folgt:
<%response.write "HTMer.com"&chr(0)&"Welcome"%>
Wenn Sie den obigen Code unter IIS ausführen, wird dann nur „HTMer.com“ ausgegeben? Das folgende „Willkommen“ entfällt, da beim Lesen von chr(0) die Anweisung als beendet gilt.
2. Prinzip des Hochladens von Chr(0)-Schwachstellen:
Angenommen, ich habe das ASP-Programm so eingerichtet, dass es nur JPG-Dateien hochlädt. So nutze ich die Schwachstelle chr(0), um den ASP-Trojaner hochzuladen:
Angenommen, es gibt eine ASP-Trojanerdatei namens htmer.asp. Ich habe sie in htmer.asp.jpg umbenannt. Haben Sie ein Leerzeichen in der Mitte gesehen? Wenn wir den Dateinamen erhalten, wird dieser Bereich als chr(0) betrachtet. Wenn wir ihn mit right("htmer.asp .jpg",4) anzeigen, handelt es sich tatsächlich um .jpg, aber wenn wir tatsächlich htmer.asp lesen. jpg, und beim Generieren der Datei geht das System davon aus, dass sie beendet ist, wenn es chr(0) liest, sodass die nachfolgende .jpg-Datei nicht automatisch als htmer.asp generiert werden kann. Ich denke, du solltest es wissen.
3. Methoden zur Behebung der chr(0)-Schwachstelle
Die Lösung besteht darin, zu prüfen, ob der hochgeladene Dateiname chr(0) enthält, und das Zeichen chr(0) direkt durch die Ersetzungsfunktion in ASP zu ersetzen.