无webshell的UDF提权

1.导入udf提权。
因为已经是mysql的root了,所以肯定考虑用udf直接提权。现在本地虚拟机测试成功了再跑去测试目标机器,这样子安全点。首先在虚拟机搭建wamp环境,用手里的一个可以执行成功的udf提权的网马,将dll文件导入到windows目录下面,把dll文件复制出来。当然经确认这个dll文件可以正常运行的。
用本地客户端navicat连接虚拟机,进入命令行模式
Select hex(load_file(0x433A5C6D7973716C444C4C2E646C6C)) into dumpfile ‘c:\\udf.txt’;

中间的16进制是我的dll路径,即C:\mysqlDLL.dll,(顺便说下dumpfile和outfile的区别,outfile 函数会在行末端写入新行,还会转义换行符,导致2进制可执行文件会被破坏,而dumpfile函数不对任何列或行进行终止,也不执行任何转义处理,所以可以得到一个完整的可执行文件),这样子就可以把dll转成十六进制,如图:



再然后,把它导入到windows目录下面,select unhex('xxxx') into dumpfile 'c:\\windows\\udf.dll';
其中xxxx为udf.dll中的那些。


然后就是创建函数了。



出错了。1124 - No paths allowed for shared library
百度加google了一阵,发现是因为在mysql5之后不能用绝对路径,提示也是说,dll不允许目录嘛,读了一下那个udf.php的网马的源码发现人家也没用绝对路径,毕竟都在windows目录下了嘛,直接就u.dll就能识别了。好,下面继续:


又悲剧了,1126 - Can't open shared library 'u.dll' (errno: 2 )
再一次跑去百度加google,终于发现,在5.1版本之后,导入到系统目录是不行的,要把dll导入到mysql安装目录下的lib/plugin目录下,只有在那个目录下才允许自定义函数的执行。可是蛋疼的是,mysql的安装目录根本就没那个lib目录,需要自己建这个目录。可是mysql里木有什么函数可以让我们去新建目录,先不管,先在本地试成功再说。于是,在mysql的安装目录下新建/lib/plugin目录。
先执行SHOW VARIABLES LIKE '%plugin%';获取安装目录。


在这个地方可能会出现一个问题,就是mysql lib下没有plugin插件目录,那该怎么办呢,知名大神kingcope提到了一种方法,利用NTFS ADS流来创建文件夹的方法


1.select @@basedir;   
//查找到mysql的目录
2.select 'It is dll' into dumpfile 'C:\\Program Files\\MySQL\\MySQL Server 5.1\\lib::$INDEX_ALLOCATION';   
//利用NTFS ADS创建lib目录
3.select 'It is dll' into dumpfile 'C:\\Program Files\\MySQL\\MySQL Server 5.1\\lib\\plugin::$INDEX_ALLOCATION';
//利用NTFS ADS创建plugin目录
 继续:


OK,开始创建函数


然后就是 system了



另外还有一种MOF的mysql提权,也是可以达到目的,图片就不贴了,直接贴上我师傅的博客吧。

http://www.waitalone.cn/mysql-tiquan-summary.html




你可能感兴趣的:(数据库知识)