加载中…
正文 字体大小:

无webshell的UDF提权+serv-u+人品。

(2012-03-11 12:38:18)
标签:

无webshell

udf提权

渗透测试

杂谈

分类: 渗透测试

==================================================

前提:有mysqlroot弱口令

目标:获取系统权限

=========

1.       导入udf提权。

因为已经是mysqlroot了,所以肯定考虑用udf直接提权。现在本地虚拟机测试成功了再跑去测试目标机器,这样子安全点。首先在虚拟机搭建wamp环境,用手里的一个可以执行成功的udf提权的网马,将dll文件导入到windows目录下面,把dll文件复制出来。当然经确认这个dll文件可以正常运行的。

用本地客户端navicat连接虚拟机,进入命令行模式

Select hex(load_file(0x433A5C6D7973716C444C4C2E646C6C)) into dumpfile ‘c:\\udf.txt’;

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

无webshell的UDF提权+serv-u+人品。

无webshell的UDF提权+serv-u+人品。

再然后,把它导入到windows目录下面

Select Unhex(‘xxxx’) into dumpfile ‘c:\\windows\\udf.dll’;

其中xxxxudf.dll中的那一坨。



无webshell的UDF提权+serv-u+人品。

再之后,创建函数啦、



无webshell的UDF提权+serv-u+人品。

出错了。1124 - No paths allowed for shared library

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


无webshell的UDF提权+serv-u+人品。

又悲剧了,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%';获取安装目录。



无webshell的UDF提权+serv-u+人品。

然后:

无webshell的UDF提权+serv-u+人品。

OK,下面开始创建函数,



无webshell的UDF提权+serv-u+人品。

发现,尼玛成功了

再然后就是想干嘛就干嘛了


无webshell的UDF提权+serv-u+人品。

System权限,哦也、

不过这都是在本地YY的。虽然目标服务器跟本地很相似,但是尼玛还是不一样。毕竟有没有lib\plugin目录还不好说。

当我照着上面的步骤搞目标机器时候,还好发现有那个目录,可是在执行新建函数的时候悲剧了。。

Can't initialize function 'cmdshell'; UDFs are unavailable with the --skip-grant-tables option

这个错误,以我四六级低空飘过的英语水平发现意思大致就是没办法初始化函数,自定义函数根本不支持。So,悲剧了。

1.       shell

既然不能直接提权,那就导个webshell进去,然后常规提权。对了,目标是win2003 IIS6.0,用的是IISphp扩展来支持的Php.

首先就是根目录的问题,我先是用into outfile将一句话小马导入到C:\inetpub\wwwroot\目录,然后直接IP+小马访问,404.悲剧,看来不是那么好猜的,

然后就是读取IIS的配置文件,看看能不能找到目录。用loadfile执行读取c:\windows\system32\inetsrv\MetaBase.xml,但是八成由于这个文件太长了,一直卡在那正在执行,结果什么也没执行了。什么也没出来。放弃。

再就是猜,尝试导入D:\www\shell.php这种,发现又成功了,把我激动了一下,但是尼玛还是无法访问,看来这个也不是主目录。然后导入到D:\wwwroot\shell.php,尼玛又成功了。我就果断迷茫了,无奈还是访问不了!

2.       没办法,搞不到目录了,从其他思路上。想到服务器上有个serv-u 6.4,那就读配置文件撒,默认的配置文件是c:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini,发现load_file失败,返回为空,也就是没有这个文件。然后就换一个:c:\Program Files\Serv-U\ServUDaemon.ini换成这个后成功了。读到了serv-u的账号密码。

至于serv-u的加密算法都懂的,拿去md5破解,人品爆发了一下,破解成功。在load_file里发现ftp管理的就是网站的目录。直接传个小马进去,用菜刀连接,直接403禁止访问错误。在浏览器里访问也没403啊、不晓得怎么回事,怀疑被防火墙干掉了。因为服务器上有个什么狗,一个web防火墙。

然后传个大马上去,ok了,可以访问,无法执行命令,自定义cmd路径也不行。

3.       提权:现在已经获取webshell了,首先想到的肯定是serv-u的本地提权,这个操作简单,效果很好。一键点下去后,看发包,提示提权成功了,返回值也都正确。然后上3389,发现连不上,说没这个用户名,看来还是傻逼了,没成功。换个shell上,依旧不行。

此路不通。然后我用大马上传一句话,还是禁止访问之类的。又不能执行命令,哎,悲剧啊,本地溢出的那些提权也用不上了。最后还是回到serv-u上吧,忽然想到会不会我们破解的那个账户权限很高呢?会不会可以直接用那个账号加用户呢?,然后就开了cmd,直接ftp xxx.xxx.xxx.xxx,输入账号密码登陆成功之后,quote site exec net user admintest admin /add,尼玛返回执行成功,顿时心花怒放,有戏。继续加管理。然后3389,成功了。

OK了,就这些

0

阅读 评论 收藏 转载 喜欢 打印举报
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有