MySQL File priv to SSRF/RCE

Support HackTricks

Ovo je sažetak MySQL/MariaDB/Percona tehnika sa https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/.

Server-Side Request Forgery (SSRF) putem SQL funkcija

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šavaju 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.

Remote Code Execution (RCE) putem User Defined Functions (UDF)

MySQL baze podataka omogućavaju korišćenje User Defined Functions (UDF) iz spoljašnjih biblioteka. 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.

Support HackTricks

Last updated