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 (3)
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)
Bezpieczeństwo serwera - disable_functions
 Oceń wpis
   

Dzisiaj znowu pobawimy się w pliku php.ini . Tym razem interesowac nas będzie opcja disable_functions. Pozwala ona na wyłączenie wybranych, zazwyczaj niebezpiecznych funkcji PHP na serwerze. Na wstępie podam jak mniej więcej powinna wyglądac ta linia w pliku konfiguracyjnym...


disable_functions =  

system, exec, passthru, shell_exec, fsockopen, proc_open, popen, set_time_limit, php_uname
                   

system, exec, passthru, shell_exec,         - wszystkie te funkcje związane są                                                                               z wykonywaniem poleceń powłoki na serwerze

fsockopen, pfsockopen  - inicjuje połączenie z hostem
                                     
proc_open, popen - otwieranie procesów   

set_time_limit - ustawianie czasu wykonywania skryptu

php_uname - informacje o systemie i kernelu


Jeśli zabrakło na tej liście jakiejś ważnej ze względów bezpieczeństwa funkcji to proszę o dopisanie jej w komentarzach...

P.S. - Wielkie podziękowanie w stronę Sayane za wskazanie błędów :)

Pozdrawiam

d00m

Komentarze (7)
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
2013-11-25 17:03
wsieci:
Bezpieczeństwo serwera - disable_functions
Bardzo ciekawe. Muszę sprawdzić, bo dopiero uruchamiam serwer.
2013-10-04 20:54
moj.blog:
Bezpieczeństwo serwera - disable_functions
super blog
2012-09-23 12:07
mojeopinie:
LOAD DATA LOCAL INFILE - niebezpieczny odczyt plików
Szkoda, że blog nie jest kontynuowany