本文主要介绍了如何利用数据库服务进行提权操作,重点讨论了利用mysql和mssql进行提权的具体方法。
在利用mysql进行提权之前,首先需要回顾mysql的常用命令。获取mysql数据库最高权限root的账号密码是关键步骤。获取root密码的方法包括:
- 翻配置文件,关键字包括:config、conn、data、sql、inc、database等。
- 下载数据文件并破解密文。root密码密文存放在mysql数据库存储目录/mysq/user.myd中,低权限下可以使用命令读取,或者直接使用暗月的“MYSQL低权限读取ROOT密码工具”,然后使用cmd5解密。
- 暴力破解,使用类似于【凤凰扫描器】(https://www.php.cn/link/1a7f33274089feff1baef7286b95fe0e。
利用udf提权需要知道root账户的密码,并且目标系统必须是Windows。可以使用现成的udf提权工具,也可以手工测试。手工测试步骤包括:
- 查看mysql版本。
- 上传DLL文件。dll文件可以通过webshell上传或mysql导出。64位和32位版本对应不同的dll文件,需注意版本匹配。
- 创建函数。
- 调用函数。
- 删除函数。
利用mof提权是利用Windows管理规范(WMI)的问题,而不是mysql的漏洞。mof提权适用于操作系统版本低于Windows Server 2008且mysql版本低于5.7的情况。手工测试步骤包括:
- 查看mysql版本。
- 编写mof文件。
- 导出mof文件。
- 清理痕迹。
利用mysql向启动项和开关机组策略目录导出脚本,可以在用户登录、开机、关机时自动运行任意命令,但mysql5.7开始默认使用secure-file-priv选项,限制了导出路径。
利用mssql进行提权也是常见的方法。获取数据库密码的方法包括翻配置文件和暴力破解。获取SA权限后,可以使用“xp_cmdshell”扩展存储直接执行命令。其他通过SQL Server执行系统命令的方法包括:
- sp_oacreate:在xp_cmdshell被删除或出错时使用。
- SQL Server CLR:利用Microsoft SQL Server与Microsoft Windows .NET Framework的公共语言运行时(CLR)组件集成,编写存储过程、触发器等。
- Agent Job:适用于服务器开启了MSSQL Agent Job服务且当前用户有足够权限的情况。
- 其他方式:如通过差异备份写脚本到自启动目录下,或通过注册表实现开机运行命令。
PowerUpSQL是一个针对mssql的强大工具,提供了多种攻击和利用方式,包括SP_Addextendedproc创建DLL和恢复Windows自动登录凭据。
本文详细介绍了利用Windows下的常用数据库进行提权的各种方法,欢迎大家留言交流意见和建议。
























