freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

PostgreSQL 高权限命令执行 (CVE-2019-9193)漏洞复现&实战
雷石安全实验室 2022-10-13 14:46:02 423938
所属地 浙江省

漏洞简介

postgreSQL是一个功能强大对象关系数据库管理系统。由于9.3增加一个“COPY TO/FROM PROGRAM”功能。这个功能就是允许数据库的超级用户以及pg_read_server_files组中的任何用户执行操作系统命令。

漏洞利用

这个漏洞是一个版本漏洞

从9.3版本开始,Postgres新增了一个 COPY TO/FROM PROGRAM功能,允许数据库的超级用户以及 pg_read_server_files组中的任何用户执行操作系统命令,利用的前提:

1、需要登录

2、需要高权限

所以要先弱口令爆破之后,然后查看是否是高权限,这个漏洞才有得玩。

这里之所以选择复现这个漏洞,因为其中的思路比较有意思,也就是看回显的思路。

先大体讲一下这个漏洞是怎么看回显的,他是通过命令执行然后把回显写入创建的一张表里面,下面来具体操作。

先删除你想要使用但是已经存在的表 DROPTABLEIFEXISTScmd_exec;

1665641975_6347adf738d7cf3ff0334.png!small

创建保存系统命令输出的表 CREATETABLEcmd_exec(cmd_output text);

1665642010_6347ae1adadce036b51c4.png!small

执行系统命令,利用特定函数 copy xxxx from program;

1665642037_6347ae35978873db906c4.png!small

查看执行结果。

1665642068_6347ae54470da00403929.png!small

这里要强调的点就是命令执行的看回显方法,其他倒是没什么,我觉得这个写入表来看回显的方法很好玩。

实战引申

那么下面给一个实战的例子 也是sql注入没有回显 然后通过把命令执行的结果写入表中 然后用select看回显 由于项目敏感这里只给出部分截图和思路。

这里的条件:

1、sql注入没有回显

2、后台是mssql可以执行xp_cmdshell

3、后台有功能可以select查看对应的表

通过抓取后台和数据库相关的接口找到这个接口:

/PH_SystemModule/DatabaseTable/GetList?tableName=test&databaseLinkId=f2d587de-43e5-4310-b968-4544f4961a39&_=1634809489388

通过对应接口审计源码,上述接口中获取到的关键词为:

PH_SystemModule

DatabaseTable

GetList

应该是目录结构,先记下来,然后看到项目的路径。

1665642117_6347ae850b19ab44b78be.png!small

是一个比较典型的mvc架构的项目,虽然不是熟悉的语言,但是架构都是共通的,其中module代表数据库相关的代码,再结合之前的路径名。

1665642135_6347ae977175ee6170408.png!small

everything全局搜索对应的关键词;

成功定位到对应的代码文件;1665642636_6347b08c0abc84b5ff134.png!small

打开代码进行审计,这个strSql是直接从前台传入的,用?strSql=传入即可。

1665642778_6347b11aa93259fc6b495.png!small

跟进FindTable方法看看有没有waf;

1665642796_6347b12c06408779116ee.png!small

1665642814_6347b13ed377bb594c246.png!small

没有发现waf,可以直接构造参数来进行注入;

然后通过这个注入点注入进去之后,后台并没有回显,于是构造语句写入数据库的表中然后后台用select进行查看。

这里不能放图了,只能描述了,大体就是这么个思路,用来看命令执行的回显。

反弹shell

这里的漏洞其实可以使用反弹shell,但是直接执行会有问题,看例子:

1665643451_6347b3bb48cc71040a2c7.png!small

直接报错了,vps也没有得到shell。

1665643473_6347b3d11586775b6dbdf.png!small

这里可以用编码来解决:

1665643487_6347b3df508c873530a06.png!small

执行命令,直接上线。

1665643505_6347b3f169b5d79f9a69e.png!small

1665643521_6347b401df1b33b70c38b.png!small

这里的编码不仅仅限于base64 b32 等等都可以 主要是为了解决数据传输过程中的特殊字符被异常解析的问题。

# 漏洞 # 漏洞分析
本文为 雷石安全实验室 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
雷石安全实验室 LV.6
这家伙太懒了,还未填写个人描述!
  • 88 文章数
  • 132 关注者
对用友NC“任意文件读取”漏洞的分析
2024-01-29
雷石|二进制漏洞之数组越界and缓冲区进行数据同步
2023-09-01
用友NC-ActionHandlerServlet反序列化漏洞分析
2023-08-18