最近工作了,比较忙,所以很少发布文章。近期在看BEESCMS v1.1.0又看到了一个getip注射,老掉牙的问题了。

介绍:
BEES企业网站管理系统(以下称BEES)是一个基于PHP+Mysql架构的企业网站管理系统。BEES 采用模块化方式开发,功能强大灵活易于扩展,并且完全开放源代码,多种语言分站,为企业网站建设和外贸提供解决方案。

漏洞1:

fun.php
function get_ip(){
if(!empty($_SERVER[HTTP_CLIENT_IP]))
{
   return $_SERVER[HTTP_CLIENT_IP];
}
elseif(!empty($_SERVER[HTTP_X_FORWARDED_FOR])) //这里可以伪造
{
   return $_SERVER[HTTP_X_FORWARDED_FOR];
}
else
{
   return $_SERVER[REMOTE_ADDR];
}
}

reg.php
$ip=get_ip();
$sql="update ".DB_PRE."member set member_time={$addtime},member_ip={$ip} where id={$last_id}";


简单构造一下x_forwarded_for:127.0.0.1,member_qq = (select admin_password from bees_admin),member_phone = ziyi,就把管理员密码射到你QQ号上了,过会发EXP。

漏洞2:XSS

同样是在注册页面,昵称没有过滤就入库,导致可以可以XSS。在昵称一栏填写<script>alert(子仪)</script>,注册成功后,当管理员在后台打开会员管理就会触发我们的XSS代码,如图:

BEESCMS v1.1.0 getip()注射漏洞与XSS及修复

首发:子仪blog

修复:

注入漏洞和xss没什么说了,针对上述问题过滤就是了