【中危】Oracle TNS Listener SID 可以被猜测

一、漏洞详情

Oracle 打补丁后,复测出一处中危漏洞:Oracle TNS Listener SID 可以被猜测。

可以通过暴力猜测的方法探测出Oracle TNS Listener SID,探测出的SID可以用于进一步探测Oracle 数据库的口令。

建议解决办法:

  1. 不应该使用安装Oracle时默认的SID(ORCL),应该设置复杂度较高的SID。

  2. 对于短时间内难以通过第1种方式修补漏洞的情况,应考虑加强主机和网络层面的访问控制策略。例如采用白名单的方式,仅允许授权主机IP访问该端口,避免漏洞被攻击者恶意利用。

二、方案分析

以上方案都可,但是一般不建议改SID,因为涉及改动可能会比较多。因此,本次采用第二种办法,即白名单方式。

白名单方式有两种:1)服务器层面-白名单,开启防火墙,指定IP才能访问服务器。

2)数据库层面-白名单,指定IP才能连接数据库。

第一种方式,简单粗暴又有效,直接限制IP即可。√ 直接采用即可

第二种方式,某些IP可访问服务器,但是无法访问该数据库,以下第三章节为实验尝试。

三、实验尝试(数据库层面)

3.1实验前

14服务器作为测试服务器,文件及查看如下:

1)文件:$ORACLE_HOME/network/admin/sqlnet.ora

2)连库:

sqlplus nh_dw_aml/aml1102@192.168.3.14/orclpdb1

3.2修改

1)修改 sqlnet.ora :

vim $ORACLE_HOME/network/admin/sqlnet.ora

增加内容:

sql 复制代码
#需要设置成yes,方可激活生效
tcp.validnode_checking = yes
  
#允许访问的IP                                   
tcp.invited_nodes=(192.168.3.14,192.168.3.16,192.168.4.159)

#不允许访问的IP
#tcp.excluded_nodes=(10.240.1.8,10.240.1.7) 

结果:cat sqlnet.ora

2)重启监听:

当监听的实例还未注册好时,会提示:

ERROR:

ORA-12514: TNS:listener does not currently know of service requested in connect

descriptor

Enter user-name:

ERROR:

ORA-01017: invalid username/password; logon denied

过一会,监听再次查看。实例注册后,即可正常连库。

3)查看结果:

A.本地客户端连接:
B.14服务器本地查看(名单内):OK
C.16服务器本地查看(名单内):OK
D.13服务器查看(非名单内):NO ORA-12547连接丢失

3.3实验总结

名单内,正常访问

非名单内,提示ORA-12547: TNS:lost contact(连接丢失)

Enter user-name:
命令清单:

su - oracle

vim $ORACLE_HOME/network/admin/sqlnet.ora

tcp.validnode_checking = yes #需要设置成yes,方可激活生效

tcp.invited_nodes=(192.168.3.14,192.168.3.16,192.168.4.159) #允许访问的IP

#tcp.excluded_nodes=(10.240.1.8,10.240.1.7) #不允许访问的IP

lsnrctl stop

lsnrctl start

lsnrctl status

连接测试:sqlplus 用户名/密码@ip/pdb实例名

四、最终结果

开启服务器防火墙,将可访问IP配入白名单。

复测,漏洞消失。ok

相关推荐
tongluowan0071 分钟前
怎么保证缓存和数据库的一致性
java·数据库·缓存·一致性
恣艺9 分钟前
用Go从零实现一个高性能KV存储引擎:B+Tree索引、WAL持久化、LRU缓存的工程实践
开发语言·数据库·redis·缓存·golang
TDengine (老段)9 分钟前
TDengine 支持数据类型深度解析 — 类型体系、存储编码与选型指南
java·大数据·数据库·系统架构·时序数据库·tdengine·涛思数据
weelinking9 小时前
【产品】00_产品经理用Claude实现产品系列介绍
数据库·人工智能·sql·数据挖掘·github·产品经理
2301_803934619 小时前
Go语言如何做网络爬虫_Go语言爬虫开发教程【指南】
jvm·数据库·python
秋910 小时前
windows中安装redis
数据库·redis·缓存
Cosolar10 小时前
万字详解:RAG 向量索引算法与向量数据库架构及实战
数据库·人工智能·算法·数据库架构·milvus
想唱rap11 小时前
IO多路转接之poll
服务器·开发语言·数据库·c++
SeaTunnel11 小时前
AI 让 SeaTunnel 读源码和调试过时了吗?
大数据·数据库·人工智能·apache·seatunnel·数据同步
凯瑟琳.奥古斯特11 小时前
数据冗余与规范化的本质[数据库原理]
开发语言·数据库·职场和发展