56 123
发新话题
打印

[原创]将MYSQL读写权限转化为系统system权限

[原创]将MYSQL读写权限转化为系统system权限

文章作者:langouster
信息来源:邪恶八进制信息安全团队(www.eviloctal.com

先前我在八进制发布了一个用于MYSQL提权的UDF,不过好像不少朋友不是很明白它的使用,不断有人问我它的使用方法,有人干脆叫我写个此UDF的专用PHP。说实话在我写这个PHP之前就只学过点ASP,对PHP那是一窍不通,所以程序中不妥之处在所难免,高手不要见笑。PHP写的比较笨,这里就不讲它怎么写的了,直接讲它的使用。

一、功能:利用MYSQL的自定义函数功能(再次声明:利用MYSQL UDF提权绝非是溢出,而是MYSQL本身的一个功能),将MYSQL账号转化为系统system权限。

二、适用场合: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重新导出到系统目录。

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

  第五步:使用完成后你可能需要删除在第二步中导出的DLL,但在删除DLL前请先删除你在第三步中创建的函数,否则删除操作将失败,删除第三步中创建的函数的SQL语句为:drop function 创建的函数名。

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

附件

langouster udf.rar (67 KB)

2006-10-22 12:16, 下载次数: 1193

我的BLOG:http://www.langouster.com

TOP

既然都这么说了:
引用:
2.你已经拥有MYSQL的某个用户账号,此账号必须有对mysql的insert和delete权限以创建和抛弃函数(MYSQL文档原语)。
那么这个题目貌似有些许误导吧?
引用:
有MYSQL账号就有system权限
http://www.phpweblog.net/GaRY/

TOP

复制内容到剪贴板
代码:
set @a = concat('',code);

use mysql;
create table shell(data LONGBLOB);
insert into shell values("");
update shell set data = @a;
select data from shell into DUMPFILE 'c:\\shell.dll';
drop table shell;
CREATE FUNCTION Mixconnect RETURNS STRING SONAME 'c:\\shell.dll';
图3 的 CREATE FUNCTION 路径应该加双\的吧??

标题改成 Mysql for Win MYSQL账号有数据操作权限就有system权限. 要好点.
使用UDF功能, 数据库用户必须有对mysql.func 表的 insert, update 的权限.
其实也就是要有数据库的root权限.

TOP

楼主的文章名让我吓了一大跳~
我的Blog:http://www.tantao.cn

TOP

这个UDF和MIX.DLL是一个性质的,不过导出的函数要多不少。还有一个很关键的不可,MIx.dll连上后会造成MYSQL的假死,而这个程序它的每一个函数都经过仔细测试,不太可能会有这种问题。
引用:
图3 的 CREATE FUNCTION 路径应该加双\的吧??
本来是一定要用"\\"的,不过好像有不少人容易忘,所以我在PHP文件中处理了一下"\" 和"\\"都可以。

《有MYSQL账号就有system权限》这个题目有这么误导吗?我还是改一下吧。。
我的BLOG:http://www.langouster.com

TOP

个人感觉应该这么写
利用MYSQL数据库连接账号提升系统权限

TOP

总结下!我来个题目,叫 利用mysql得到系统权限新法!

PS:楼主说功能增加不少!汗!我怎么对比了N次后发现,功能没有改变!
成功的男人白天瞎JB忙,晚上JB瞎忙;失败的男人白天没啥鸟事,晚上鸟没啥事。

TOP

测试时发生下面错误!
Fatal error: Maximum execution time of 30 seconds exceeded in C:\AppServ\www\udf.php on line 91

TOP

楼上的,,路径要写双杠 \\!
成功的男人白天瞎JB忙,晚上JB瞎忙;失败的男人白天没啥鸟事,晚上鸟没啥事。

TOP

引用:
这里是引用第[6 楼]寂寞宝贝2006-10-22 14:40发表的:

PS:楼主说功能增加不少!汗!我怎么对比了N次后发现,功能没有改变!
请先看清是哪个跟哪个比。
我的BLOG:http://www.langouster.com

TOP

3389 开不了
select open3389('3389')
语法没错吧!
顺求
其他函数的使用方法!

TOP

我记得Super·Hei好象也写过一个差不多的

附件

MySQL5.rar (17 KB)

2006-10-22 16:26, 下载次数: 269

TOP

我执行了:Create Function returns string soname 'udf.dll'时

数据库查讯出错,请检查SQL语句Create Function returns string soname 'udf.dll'的语法是否正确。You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'string soname 'udf.dll'' at line 1

TOP

看了楼主的文章后,我拿了台服务器来做实验,mysql的权限是root用户连接的,mysql的版本是5.0的,那就是要说把udf.dll导出到系统目录下了,因为mysql是5.0版的,第一步要:c:\\windows\\udf.dll或者c:\\windows\\system32\\udf.ll这样哪?再或者c:\\windows、c:\\windows\\system32 ,我这样尝试的时候是都成功了,但是到了第二步,却出现搂主说的No paths allowed for shared library,再导出到系统目录里的时候已经错误了,本身已经有过了,我又尝试把udf.dll改成别的dll文件,还是不行,这里我就不明白了,
windows和system32的目录下都有udf.dll这个文件,为什么还是错误?是因为第一次导出的时候错误了?还是格式不对?或者是我人品有问题?等待楼主的解答。。。。。 [s:57]
学习编程中,在不远的以后,你们会知道我的~!

TOP

好像不行阿,导出DLL文件出错:Access denied for user: 'sq_test@%' (Using password: YES)
mysql 4.0,不知道是不是没有(insert和delete权限)!??? [s:35]

TOP

引用:
引用第13楼编程king2006-10-25 02:01发表的:
看了楼主的文章后,我拿了台服务器来做实验,mysql的权限是root用户连接的,mysql的版本是5.0的,那就是要说把udf.dll导出到系统目录下了,因为mysql是5.0版的,第一步要:c:\windows\udf.dll或者c:\windows\system32\udf.ll这样哪?再或者c:\windows、c:\windows\system32 ,我这样尝试的时候是都成功了,但是到了第二步,却出现搂主说的No paths allowed for shared library,再导出到系统目录里的时候已经错误了,本身已经有过了,我又尝试把udf.dll改成别的dll文件,还是不行,这里我就不明白了,
windows和system32的目录下都有udf.dll这个文件,为什么还是错误?是因为第一次导出的时候错误了?还是格式不对?或者是我人品有问题?等待楼主的解答。。。。。 [s:57]
哈哈,可能我写的不足够明白:“如果你在第二步中已将DLL导出到系统目录,那么你就可以省略路径而使命令正常执行”

你只要导出一次,比如你已经导到了c:\windows目录。你就可以执行Create function cmdshell returns string soname 'udf.dll';

后面的DLL就不用带路径了,导到系统目录就是会了可以让程序不带路径就能找到udf.dll。
引用:
我执行了:Create Function returns string soname 'udf.dll'时 数据库查讯出错,请检查SQL语句Create Function returns string soname 'udf.dll'的语法是否正确。You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'string soname 'udf.dll'' at line 1
兄弟忘了写函数名:你可以试试:Create Function cmdshell returns string soname 'udf.dll';
引用:
3389 开不了 select open3389('3389') 语法没错吧! 顺求 其他函数的使用方法!
程序中用到了一个通用开3389程序组件,而这个程序是我从网上下载的,再做了一下免杀处理而已,对这个开3389程序本身我也不是很清楚,不过我试了好几个版本的虚拟机,觉得成功率是我能下到的此类程序中最好的,就把它作为一个资源导入到了我的DLL中,对你这个问题我也不知道什么原因,如果朋友有更好的开3389程序,我可以改进一下。
引用:
测试时发生下面错误! Fatal error: Maximum execution time of 30 seconds exceeded in C:AppServwwwudf.php on line 91
排除服务器的性能问题外,可能是服务器上杀毒软件的原因。
我的BLOG:http://www.langouster.com

TOP

在导出dll是一定要用\\吧!

TOP

楼主
我建议你还是做个动画出来看下
详细的介绍下使用方法
你看都很多人测试不成功了.

TOP

TOP

好像不用这么麻烦吧,在WINDOWS下直接利用MYSQL以SYSTEM用户读写文件的特点,写一个自启动文件或是组策略文件就能达到目的了;
    楼主的方法实现了直接执行命令,确实方便了不少.

TOP

[s:36] 导DLL的时候提示数据库连结失败,请检查账号信息。Access denied for user: 'ODBC@localhost' (Using password: NO),铞明明登陆的了
Www.China-Mu.Co.Kr 猪毛奇迹 1.02Q 将带给你无比的震撼。

TOP

引用:
引用第20楼hack5202006-11-20 02:59发表的:
[s:36] 导DLL的时候提示数据库连结失败,请检查账号信息。Access denied for user: 'ODBC@localhost' (Using password: NO),铞明明登陆的了
权限问题撒~~  再不人品问题也行!  [s:67]

TOP

[s:35] 用J心那个mysqlrootkit.php又不会,铞B
Www.China-Mu.Co.Kr 猪毛奇迹 1.02Q 将带给你无比的震撼。

TOP

用剑心那个没事!
换成楼主的测试一下导出出现!
Can't create/write to file 'F:\freehost\rzchs\web\bbs2\udf.dll' (Errcode: 13)

TOP

呵呵,我可以告诉楼主,最近的一次渗透中,用楼主的这个脚本顺利拿到3389权限。
我之前也用剑心的那个试过,没有成功。

还有一种可能是会造成失败的。mysql服务非system权限启动

TOP

 56 123
发新话题