PostgreSQL
Enumeración
Versión
# Versión
SELECT version()Usuarios
# Usuario actual
SELECT current_userPrivilegios
# Privilegio de superusuario
SELECT current_setting('is_superuser')Bases de datos
# Listado de base de datos
SELECT datname FROM pg_databaseTablas
Columnas
Datos
Error-based SQLi
Union-based SQLi
Obtener información dentro de una sola columna
Time-based SQLi
Stacked Queries SQLi
Lectura y escritura de archivos
Para realizar operaciones de lectura y escritura de archivos mediante el comando COPY, el usuario debe contar con privilegios de superusuario o, alternativamente, poseer los roles pg_read_server_files y pg_write_server_files, respectivamente.
Lectura
Un inconveniente al usar el comando COPY para leer archivos es que espera que los datos estén separados por columnas, usando por defecto el carácter de tabulación \t como delimitador. Sin embargo, se puede cambiar este delimitador por otro carácter poco común, como \x07, para evitar errores durante la lectura.
Lectura con Large Objects
Escritura
Webshell
Escritura con Large Objects
Remote Code Execution (RCE)
Para usar COPY con ejecución de comandos, el usuario debe contar con privilegios de superusuario o tener el rol pg_execute_server_program.
Reverse shell
Ejecución de Netcat en máquina atacante en modo escucha.
Ejecución de reverse shell.
Evasión de filtros
Bypass de filtro de espacio
Usar /**/ en lugar de espacio.
Bypass de filtro de comillas simples (single quotes)
En PostgreSQL los dos signos de dólar $$ se utilizan para delimitar cadenas de texto.
Última actualización
¿Te fue útil?