MySQL File priv to SSRF/RCE

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

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

Prilikom istraživanja SQL Out of Band eksfiltracije podataka, često se koristi funkcija LOAD_FILE() za pokretanje mrežnih zahteva. Međutim, ova funkcija je ograničena operativnim sistemom na kojem radi i konfiguracijama pokretanja baze podataka.

Globalna promenljiva secure_file_priv, ako nije postavljena, podrazumevano je podešena na /var/lib/mysql-files/, što ograničava pristup datotekama samo u ovom direktorijumu, osim ako nije postavljena na prazan string (""). Ovo podešavanje zahteva izmene u konfiguracionom fajlu baze podataka ili parametrima pokretanja.

Ako je secure_file_priv onemogućen (""), i uz pretpostavku da su datoteka i dozvole file_priv odobrene, moguće je čitati datoteke van određenog direktorijuma. Međutim, sposobnost ovih funkcija da prave mrežne pozive zavisi od operativnog sistema. Na Windows sistemima, mrežni pozivi ka UNC putanjama su mogući zbog razumevanja operativnog sistema UNC konvencija imenovanja, što može dovesti do eksfiltracije NTLMv2 heševa.

Ova metoda SSRF je ograničena na TCP port 445 i ne dozvoljava izmenu broja porta, iako se može koristiti za pristup deljenim resursima sa punim privilegijama za čitanje i, kao što je pokazano u prethodnim istraživanjima, za krađu heševa radi daljeg iskorišćavanja.

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

MySQL baze podataka omogućavaju korišćenje User Defined Functions (UDF) iz eksternih biblioteka. Ako su ove biblioteke dostupne unutar određenih direktorijuma ili u $PATH sistemu, mogu se pozvati iz MySQL-a.

Ova tehnika omogućava izvršavanje mrežnih/HTTP zahteva putem UDF-a, pod uslovom da su ispunjeni određeni uslovi, uključujući pristup za pisanje u @@plugin_dir, postavljanje file_priv na Y i onemogućavanje secure_file_priv.

Na primer, biblioteka lib_mysqludf_sys ili druge UDF biblioteke koje omogućavaju HTTP zahteve mogu se učitati radi izvođenja SSRF-a. Biblioteke se moraju preneti na server, što se može postići kodiranjem sadržaja biblioteke u heks ili base64 formatu, a zatim pisanjem u odgovarajući direktorijum.

Postupak se razlikuje ako @@plugin_dir nije moguće pisati, posebno za MySQL verzije iznad v5.0.67. U takvim slučajevima, moraju se koristiti alternativne putanje koje se mogu pisati.

Automatizacija ovih procesa može se olakšati alatima poput SQLMap-a, koji podržava UDF ubrizgavanje, a za slepe SQL ubrizgavanje, mogu se koristiti tehnike preusmeravanja izlaza ili DNS zahteva za krijumčarenje.

Last updated