发布作者:风之传说
发布日期:2011-2-18 6:00:00
官方地址:www.simple-log.com
影响版本:v1.2
漏洞名称:Simple-Log 1.2 国产开源PHP博客系统延迟注射漏洞
网上搜索了下,看到貌似没人发,我就发出来了。如果有什么错误请指正。
漏洞文件:/user.php:
elseif ($act=='edit_profile') // 延迟注射提交的地址http://localhost/user.php?act=edit_profile
{
require_once(PBBLOG_ROOT.'/includes/base.function.php');
$member_id=$_SESSION['user_id'];
$user_name=$_POST['name']; //POST 提交
if (empty($user_name)) //判断是否为空
{
show_message('会员名字不能为空',$referer_url);
}
else
{
if (isset_member($user_name)) //如果查询语句最后为真,就能返回条数,然后返回true就执行下面代码,等下继续跟进。这里才是真正的延迟注射。如果正确就会返回会员名字已经存在。
{
$u_name=$db->getone('SELECT user_name FROM '.table('user')." WHERE user_id='".$user_id."'"); //这里不用看
if ($u_name!=$user_name)
{
show_message('会员名字已经存在',$referer_url);
}
}
} |
继续跟进 isset_member 函数的用法,截取部分代码。
/includes/base.function.php:
function isset_member($member) //
{
$sql='SELECT * FROM '.table('user')." WHERE user_name='".$member."'"; //上面的user_name带入此函数,那么user_name=member 已经带入查询了。
if ($GLOBALS['db']->getrow($sql)) //又一次判断。
{
return true;
}
else
{
return false;
}
} |
不做更深层的调用了,免得大家看的乱。只要在 POST 中提交 admin + 注入语句使其为真就可以了。
因为 admin 是管理员名,一般人不会去改,所以最后是为 true 的。
post 提交,大家制造一个表单就 OK。在这里我也不发 EXP 了。发了也得手工一个个的来,求工具。因为手工麻烦,我也没去测试,谁测试后回复下。
回复:
gpc=off 是否需要?
鸡肋的漏洞吧,得确很鸡肋。
按照这个道理,全部任何程序都存在注入了,其实这里完全不是漏洞。
gpc=off .你没考虑单引号了,字符型。 |
文章作者
Nuclear'Atk
上次更新
2011-02-20
许可协议
Nuclear'Atk(核攻击)网络安全实验室版权所有,转载请注明出处。