Python2-Oracle爆破
做渗透的时候遇到Oracle端口对外开放,用python编写脚本去自动爆破,爆破成功就是拿下数据库。
环境搭建
Oracle安装
去Oracle官网下载Oracle Database 11g,下载地址。我这边下载Windows版本进行安装,两个文件都要下载,下载完成之后全部选中解压。
解压之后,运行setup.exe。取消【我希望通过My Oracle Support接受安全更新】勾选,点下一步。
会跳出一个提示,直接点击【是】即可。
选择【创建和配置数据库】。
由于我们用来做测试,所以选择【桌面类】即可。
接下来对数据库进行配置,我这边将全局数据库名设置为Brute,管理口令设置成BruteTest,别的保持默认即可。
如果管理口令不符合Oracle建议的标准,会有一个提示,直接点击【是】即可。
接下来程序就会进行检查,待检查完成会出现一个概要。
点击完成,开始安装。
安装完成之后,点击【口令管理】对用户口令进行修改。
对sys、system两个用户设置新口令。
如果口令不满足复杂性策略,会有一个提示,直接点击【是】即可。
最后Oracle数据库安装成功。
Oracle配置
安装完成之后,在所有程序菜单中找到Oracle,打开【Database Control - Brute】。
使用sys用户、SYSDBA身份登录。
表空间
点击【服务器】→【表空间】。
点击【创建】。
输入名称,点击【添加】。
输入文件名,点击【继续】。
点击【确定】,建立表空间。
用户
点击【服务器】→【用户】。
点击【创建】。
输入名称、口令,点击【确定】。由于只是用于爆破,所以这里就不设置【角色】、【权限】等。
端口对外开放
对listener.ora、tnsnames.ora文件进行修改,文件路径类似:\app\Administrator\product\11.2.0\dbhome_2\NETWORK\ADMIN\,根据安装时所选的目录自行寻找。将两个文件里的localhost修改成计算机名。
重启【OracleDBConsoleBrute】、【OracleOraDb11g_home1TNSListener】服务。
可以使用其他电脑成功连接。
脚本编写
Python27有一个库支持对Oracle进行操作,cx_Oracle,使用pip安装即可。
1 | pip install cx_Oracle |
安装好之后,需要安装Oracle的client,不同系统安装的方式也不同,具体可以参考官方文档。client安装完成之后,使用cx_Oracle尝试连接。
信息错误情况的各种错误信息。
终端输出
爆破时,信息有很多。如果不对样式进行设置,导致不能快速找到有效信息。因此,需要对终端输出设置样式。有一个外部库colorama支持输出时的样式设置,通过pip安装即可.
1 | pip install colorama |
安装完成之后,需要先调用init进行初始化。
1 | # --coding=utf-8-- |
异步设置
使用gevent进行爆破,当爆破量很大的时候,会导致内存飙高。因此,设置了阀值。
1 | while True: |
总结
在编写Oracle爆破脚本的时候,大部分的问题由环境搭建、配置引起。
- Oracle安装完成之后,数据库是不对外开放需要修改配置文件,配置文件localhost修改成计算机名,当服务器IP修改时,其他计算机还是可以连接。修改成ip时,服务器IP修改时,需要修改配置文件中的ip;
- Oracle端口不对外开放,确认配置文件修改正确的情况下,【OracleDBConsoleBrute】、【OracleOraDb11g_home1TNSListener】服务需要重启,网上说只需要重启TNS服务即可,但是测试时,发现两个服务都需要重启;
- Python终端彩字输出可以使用\033[显示方式;前景色;背景色m + 结尾部分:\033[0m,但Windows下失败,Linux下没去尝试;
- 使用colorama需要先初始化init(autoreset=True)。
完整代码
完整代码已经上传到我的GiHub。如果有兴趣,不妨移步到Github上一观!**Code**。