PostgreSQL高权限命令执行(CVE-2019-9193)漏洞复现&实战

一、漏洞利用

这个漏洞是一个版本漏洞

从9.3版本开始,Postgres新增了一个COPYTO/FROMPROGRAM功能,允许数据库的超级用户以及pg_read_server_files组中的任何用户执行操作

系统命令,利用的前提

1、需要登录2、需要高权限

所以要先弱口令爆破之后,然后查看是否是高权限。

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

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

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

DROPTABLEIFEXISTScmd_exec;

创建保存系统命令输出的表

CREATETABLEcmd_exec(cmd_outputtext);

执行系统命令利用特定函数 copyxxxxfromprogram

查看执行结果

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

二、实战引申

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

这里的条件1、sql注入没有回显2、后台是mssql可以执行xp_cmdshell3、后台有功能可以select查看对应的表

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

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

通过对应接口审计源码

上述接口中获取到的关键词为

PH_SystemModule

DatabaseTable

GetList

应该是目录结构先记下来

然后看到项目的路径

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

再结合之前的路径名

everything全局搜索对应的关键词

 成功定位到对应的代码文件

 

打开代码进行审计

这个strSql是直接从前台传入的,用?strSql=传入即可

跟进FindTable方法看看有没有waf

 

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

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

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

三、反弹shell

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

直接报错了

vps也没有得到shell

这里可以用编码来解决

执行命令,直接上线

 

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

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

季海晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值