Instruktor: W
tym wykładzie chciałbym pokazać, w jaki sposób możemy wykorzystać
zastrzyki SQL do odczytania dowolnego pliku
na serwerze, więc nawet jeśli plik istnieje poza katalogiem
głównym www, będziemy mogli odczytać
go dokładnie tak, jak ujawnienie pliku podatność,
a także zobaczymy, jak możemy
wykorzystać ją do zapisywania plików i przesyłania ich
do systemu, podobnie jak podatność na przesyłanie plików.
Pierwszą rzeczą, na którą się przyjrzymy,
jest odczytanie pliku.
I ustawię tutaj wszystko na zero.
Więc mam tutaj moje oświadczenie
i ustawię jeden, i zostawię
numer dwa,
bo zamierzam coś z tym zrobić.
I zrobimy tutaj kolejne trzy zero.
Więc
zero, zero, zero.
Więc wybraliśmy null coś null, null, null.
Pięć, ponieważ mamy pięć rekordów,
kiedy wykonaliśmy zamówienie.
I zamiast wybierać coś, pamiętajmy, że
w trzecim filmie
wybraliśmy na przykład bazę danych i pokazuje nam
ona bieżącą bazę danych.
Chcę
teraz zrobić inną funkcję,
która nazywa się load_file.
A tutaj ustawię plik, który chcę
załadować, i użyję tego samego pliku, na
którym
patrzyliśmy w luce włączenia plików
i był to plik etc / passwd.
Próbujemy więc odczytać ten
plik, a nasze oświadczenie jest takie: wybierz ten plik i to wszystko.
Więc skopiuję to.
I wstrzyknę
to tutaj i dodam mój%
23, który jest moim poleceniem.
I jak
widać, udało nam się odczytać wszystkie
informacje, całą zawartość etc / passwd, nawet jeśli nie
ma go w katalogu głównym.
Więc jest przechowywany w etc / passwd.
Abyśmy mogli odczytać wszystko na serwerze z
innych stron internetowych,
z innych plików w dowolnym miejscu
na serwerze,
możemy to odczytać, podając pełną ścieżkę tego pliku.
Następną rzeczą, którą
chcę pokazać, jest pisanie na serwer.
Tak więc zamierzamy pisać rzeczy
na serwerze, a
to jest bardzo przydatne, ponieważ możesz napisać dowolny kod,
więc na przykład możesz napisać kod dla skryptu
PHP, możesz napisać kod powłoka, wirus lub kod PHP,
aby uzyskać inne połączenia z tobą.
Będzie to po prostu
zachowywać się jak luka w zabezpieczeniach przesyłania plików.
Aby
to zrobić, napiszę kod,
który chcę tutaj zrobić
i wywołam na przykład przykładowy przykład.
I użyjemy funkcji o nazwie outfile, więc zrobimy to
do outfile, a następnie
określimy, gdzie
chcemy przechowywać ten plik.
Teraz, w najlepszych przypadkach, będziesz
mógł pisać do swojego katalogu głównego, a to
oznacza, że możesz uzyskać dostęp do pliku
przez przeglądarkę i wykonać go, dzięki
czemu możesz przesłać plik Weevely, a następnie połączyć się
z nim
i robić różne rzeczy tak.
Spróbujmy to zrobić najpierw.
Więc zrobimy to w var / www i to jest nasz katalog
główny, abyśmy mogli uzyskać dostęp do różnych
rzeczy przez
niego, lub możesz umieścić go nawet var / www, a
następnie umieścić mutillidae po nim,
aby go tam przechowywać.
Więc polecenie jest bardzo proste.
Ponownie wybierz związek.
Upewnij się, że ustawiłeś wszystko
na null, aby nic nie było zapisywane do
pliku oprócz tego,
co tu umieściłeś, a ja podam
przykładowy przykład i zostanie on zapisany w
naszym pliku w var / www /
mutillidae i przywołam ten przykład. tekst.
Spróbujmy to uruchomić i sprawdzić, czy to działa.
To nie zadziałało.
A jeśli
zejdziesz tutaj, zobaczysz, że SQL lub MySQL nie
mogą tworzyć ani zapisywać w tym katalogu.
Problem w tym, że nie
jesteśmy. Uprawnienia, które
mamy, nie pozwalają nam pisać do tej konkretnej lokalizacji.
Więc, aby przetestować ten
exploit, zmienię tę lokalizację na tmp, która jest tempem,
a
zobaczysz, że możesz pisać do temp, więc w
prawdziwym życiu w scenariuszach, to
zależy, możesz spróbować i sprawdzić, czy jesteś
w stanie pisać lub nie.
W tym, próbujemy teraz pisać
do temp
i jeśli czytamy
w temp, jeśli wyczyścimy to, a następnie ls i
/ tmp zobaczysz, że mamy
coś o nazwie przykład,
a jeśli spróbujesz to przeczytać, będziesz
zobacz,
że zawiera, oczywiście zawiera treść tego,
co zrobiliśmy wcześniej, co było normalnym wyborem, który zobaczysz.
To, co widzisz po umieszczeniu rzeczy dla administratora, a następnie
pokazało nam, co tam jest,
co jest przykładem,
co chcieliśmy zapisać do pliku.
Teraz możesz oczywiście pozbyć
się administratora
i administrować, po prostu
wpisując niewłaściwą nazwę użytkownika i
nic tu nie będzie wyświetlane, więc
jedyne, co zobaczysz, to wynik, który jest przykładem.
Ale znowu, jest to przydatne tylko
wtedy, gdy jesteś w stanie napisać na swój serwer
WWW, więc możesz uzyskać
do niego dostęp,
a następnie użyć powłoki lub użyć ładunku i dalej wykorzystywać system.