免责声明
请勿利用文章内的相关技术从事非法测试。由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任,请务必遵守网络安全法律法规。本文仅用于测试,请完成测试后24小时删除,请勿用于商业用途。。
0x01 简介
参加xx攻防演练的时候,顺利拿下了一台应用服务器,发现桌面存在Navicat并且存在连接信息,但是结果是密文的,无法进一步获取数据库权限(使用CS可以顺利获取,这里场景没使用CS)。
另外一个使用场景就是:Navicat存在多个连接,忘记具体密码信息,也可以使用这个工具解
查阅资料后发现
Navicat11版本:解密过程首先将输入的十六进制字符串转换为二进制数据,然后使用 Blowfish 算法和初始向量对每个加密块进行解密并异或运算,最终得到解密后的结果
Navicat12及以上版本:
获取方式:解密过程用于解密版本 12 的加密密码。它会先将输入的十六进制字符串转换为二进制数据,然后使用 AES 算法和初始向量进行解密,并使用填充函数进行去填充操作,最终得到解密后的结果。
关注Z0安全公众号回复【Navicat】获取工具下载链接!
关注Z0安全公众号回复【Navicat】获取工具下载链接!
关注Z0安全公众号回复【Navicat】获取工具下载链接!
0x02 实战解密过程
1、首先我们需要再Nacivat中选择导出我们的连接:
2、选择你需要导出的连接并一定记得勾选密码(重要)
3、使用文本编辑器打开导出的文件,一般是以ncx后缀进行结尾
4、然后找到右边 password 的一段内容
这里看到密文是699FF7AFA9EC7B60D20E3E5A384AEC62
5、然后下载这个脚本
简单说一下脚本内容
通过使用 PyCrypto 库中的 AES 和 Blowfish 加密算法来执行解密操作。在 NavicatPassword
类中,有两个方法用于解密:
decrypt_eleven(self, string)
: 该方法用于解密版本 11 的加密密码。它首先将输入的十六进制字符串转换为二进制数据,然后使用 Blowfish 算法和初始向量对每个加密块进行解密并异或运算,最终得到解密后的结果。decrypt_twelve(self, string)
: 这个方法用于解密版本 12以及以上的版本 的加密密码。它会先将输入的十六进制字符串转换为二进制数据,然后使用 AES 算法和初始向量进行解密,并使用填充函数进行去填充操作,最终得到解密后的结果。
通过调用这两个方法,可以根据所选的版本对相应的加密密码进行解密操作。在之前提供的示例代码中,通过创建 NavicatPassword
实
7、使用过程
首先安装依赖 pip install pycryptodome
然后直接运行NavicatDecode.py脚本
顺利解密成功,经过测试Navicat各版本都可以,具体还请自测~
关注Z0安全公众号回复【Navicat】获取工具下载链接!
关注Z0安全公众号回复【Navicat】获取工具下载链接!
关注Z0安全公众号回复【Navicat】获取工具下载链接!
获取工具下载链接!