目录
0x01 介绍
0x02 提取密码
0x03 离线破解
注:文中使用的是Navicat Premium 12.x,Navicat 11.x与12.x的加密方式有一些不同,实际上按照11.x的方式解密就可以了
0x01 介绍
Navicat是一套快速、可靠并价格相当便宜的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设。它的设计符合数据库管理员、开发人员及中小企业的需要。Navicat 是以直觉化的图形用户界面而建的,让你可以以安全并且简单的方式创建、组织、访问并共用信息。
balabala,反正是挺常用的一个数据库连接工具了,如果在实际环境中碰到了,那将是一大幸事,里面肯定会保存着很多服务器数据库的连接密码,这个时候如何将其提取出来就是一个至关重要的事情了
0x02 提取密码
首先需要明确一下,Navicat针对不同的数据库,它所存放的地点是不一样的
MySQL HKEY_CURRENT_USERSoftwarePremiumSoftNavicatServers
MariaDB HKEY_CURRENT_USERSoftwarePremiumSoftNavicatMARIADBServers
MicrosoftSQL HKEY_CURRENT_USERSoftwarePremiumSoftNavicatMSSQLServers
Oracle HKEY_CURRENT_USERSoftwarePremiumSoftNavicatOraServers
PostgreSQL HKEY_CURRENT_USERSoftwarePremiumSoftNavicatPGServers
SQLite HKEY_CURRENT_USERSoftwarePremiumSoftNavicatSQLiteServers
这里还是拿MySQL进行举例吧
我们先在注册表中访问一下
既然是在注册表中,我们直接导出其内容就可以了
IP reg query HKEY_CURRENT_USERSOFTWAREPremiumSoftNavicatServers /s /v host
用户名 reg query HKEY_CURRENT_USERSOFTWAREPremiumSoftNavicatServers /s /v UserName
密码 reg query HKEY_CURRENT_USERSOFTWAREPremiumSoftNavicatServers /s /v pwd
同理也可以提取其他数据库的IP、账号和密码hash
当拿到这些内容的时候,我们接下来就是进行离线破解
0x03 离线破解
至于如何逆向navicat保存密码的加密算法,作者已经写的很清楚了,有兴趣的可以自己去看看
https://github.com/DoubleLabyrinth/how-does-navicat-encrypt-password
我们直接拿来使用就行了,我们使用其中的python3脚本
首先先安装依赖pycryptodome
用法作者也已经给出了
可以看到已经成功解密出数据库的密码了,至于之后的提权等内容之后再慢慢说。
文章首发公众号:无心的梦呓(wuxinmengyi)
这是一个记录红队学习、信安笔记,个人成长的公众号
扫码关注即可