MySQL File priv to SSRF/RCE
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ovo je sažetak MySQL/MariaDB/Percona tehnika sa https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/.
U istraživanju SQL Out of Band eksfiltracije podataka, LOAD_FILE()
funkcija se obično koristi za iniciranje mrežnih zahteva. Ova funkcija, međutim, je ograničena operativnim sistemom na kojem radi i konfiguracijama pokretanja baze podataka.
Globalna promenljiva secure_file_priv
, ako nije postavljena, podrazumevano je /var/lib/mysql-files/
, ograničavajući pristup datotekama na ovaj direktorijum osim ako nije postavljena na praznu string (""
). Ova prilagodba zahteva izmene u konfiguracionom fajlu baze podataka ili parametrima pokretanja.
S obzirom da je secure_file_priv
onemogućen (""
), i pod pretpostavkom da su potrebne datoteke i file_priv
dozvole dodeljene, datoteke van određenog direktorijuma mogu se čitati. Ipak, sposobnost ovih funkcija da izvrše mrežne pozive u velikoj meri zavisi od operativnog sistema. Na Windows sistemima, mrežni pozivi na UNC putanje su mogući zbog razumevanja konvencija imenovanja UNC od strane operativnog sistema, što može dovesti do eksfiltracije NTLMv2 hešova.
Ova SSRF metoda je ograničena na TCP port 445 i ne dozvoljava modifikaciju broja porta, iako se može koristiti za pristup deljenjima sa punim privilegijama za čitanje i, kao što je prikazano u prethodnim istraživanjima, za krađu hešova za dalju eksploataciju.
MySQL baze podataka omogućavaju korišćenje User Defined Functions (UDF) iz spoljašnjih bibliotečkih fajlova. Ako su ove biblioteke dostupne unutar određenih direktorijuma ili sistemskog $PATH
, mogu se pozvati iz MySQL-a.
Ova tehnika omogućava izvršavanje mrežnih/HTTP zahteva putem UDF, pod uslovom da su ispunjeni određeni uslovi, uključujući pristup za pisanje na @@plugin_dir
, file_priv
postavljen na Y
, i secure_file_priv
onemogućen.
Na primer, biblioteka lib_mysqludf_sys
ili druge UDF biblioteke koje omogućavaju HTTP zahteve mogu se učitati za izvršavanje SSRF. Biblioteke moraju biti prenete na server, što se može postići heksadecimalnim ili base64 kodiranjem sadržaja biblioteke i zatim pisanjem u odgovarajući direktorijum.
Proces se razlikuje ako @@plugin_dir
nije moguće pisati, posebno za MySQL verzije iznad v5.0.67
. U takvim slučajevima, moraju se koristiti alternativni putevi koji su dostupni za pisanje.
Automatizacija ovih procesa može se olakšati alatima kao što je SQLMap, koji podržava UDF injekciju, a za slepe SQL injekcije mogu se koristiti tehnike preusmeravanja izlaza ili DNS zahteva.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)