PostgreSQL injection
Last updated
Last updated
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Якщо ви зацікавлені в кар'єрі в хакерстві та хочете зламати незламне - ми наймаємо! (вимагається вільне володіння польською мовою в письмовій та усній формі).
Ця сторінка має на меті пояснити різні трюки, які можуть допомогти вам експлуатувати SQL-ін'єкцію, виявлену в базі даних postgresql, та доповнити трюки, які ви можете знайти на https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md
Модуль PostgreSQL dblink
пропонує можливості для підключення до інших екземплярів PostgreSQL та виконання TCP-з'єднань. Ці функції, в поєднанні з функціональністю COPY FROM
, дозволяють виконувати дії, такі як ескалація привілеїв, сканування портів та захоплення NTLM challenge response. Для детальних методів виконання цих атак перевірте, як виконати ці атаки.
Ви можете прочитати цей приклад, щоб побачити приклад CTF як завантажити дані всередину великих об'єктів, а потім ексфільтрувати вміст великих об'єктів всередині імені користувача функції dblink_connect
.
Перевірте, як скомпрометувати хост та ескалувати привілеї з PostgreSQL у:
5432,5433 - Pentesting PostgresqlМаніпулювання рядками може допомогти вам обійти WAF або інші обмеження. На цій сторінціви можете знайти кілька корисних функцій рядків.
Пам'ятайте, що PostgreSQL підтримує складені запити, але кілька додатків видадуть помилку, якщо буде повернуто 2 відповіді, коли очікується лише 1. Але ви все ще можете зловживати складеними запитами через Time injection:
query_to_xml
Ця функція поверне всі дані у форматі XML в одному файлі. Це ідеально, якщо ви хочете вивантажити багато даних в один рядок:
database_to_xml
Ця функція вивантажить всю базу даних у форматі XML в лише 1 рядок (обережно, якщо база даних дуже велика, оскільки ви можете викликати DoS або навіть вашого власного клієнта):
Якщо ви можете виконувати запити, передаючи їх всередині рядка (наприклад, використовуючи функцію query_to_xml
). Ви можете використовувати convert_from, щоб передати рядок у вигляді шістнадцяткового коду і таким чином обійти фільтри:
Якщо ви не можете використовувати лапки для вашого payload, ви можете обійти це за допомогою CHR
для базових клауз (конкатенація символів працює лише для базових запитів, таких як SELECT, INSERT, DELETE тощо. Це не працює для всіх SQL операторів):
Або з $
. Ці запити повертають однакові результати:
Якщо вас цікавить кар'єра в хакерстві і ви хочете зламати незламне - ми наймаємо! (вимагається вільне володіння польською мовою в письмовій та усній формі).
Вчіться та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Вчіться та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)