
PostgreSQL堆叠注入场景中通过
CREATE FUNCTION关键字来实现命令执行的思路。简要信息如下:
CVE:N/A
CVSS:4.1 (AV:N/AC:H/PR:H/UI:N/S:U/C:L/I:L/A:L)
适用环境:Windows、Linux、Unix
PostgreSQL中:
- 12.3
- 11.8
- 10.13
- 9.6.18
- 9.5.22
.dll或
.so动态库文件,举例如下:
- Windows:C:\Program Files\PostgreSQL\11\lib
- Unix/Linux:/var/lib/postgresql/11/lib
NETWORK_SERVICE与
postgres这两个系统用户对该目录均无写入权限。但是经过鉴权的数据库超管用户可以通过调用
lo_import函数将文件写入
pg_largeobject系统表,再更新对应的数据内容将原本的内容替换为我们的恶意代码(通常是反弹个shell),随后通过
lo_export函数转储数据至动态库目录,最终生成我们的恶意动态库文件。
CREATE FUNCTION的另一个骚操作就是可以接收指定目录来遍历其动态库中的相关函数。因此只要已鉴权用户可以将动态库文件写入对应的存储目录,然后通过
CREATE FUNCTION的目录遍历特性来加载动态库文件就可以实现命令执行。
利用流程
1. 通过lo_import获得一个OID
pg_largeobject系统表保存了那些标记为
large object(大对象)的数据。每个
大对象
1473



被折叠的 条评论
为什么被折叠?



