### 简要描述: 登录用户可以冒充任意其他注册用户对任意商品发表评论,合理利用可操纵网店舆论 ### 详细说明: 漏洞代码在comment.php的287行处: [<img src="https://images.seebug.org/upload/201306/121728183ed8894ad4a97304f7c3f6bc93339ad8.jpg" alt="code.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201306/121728183ed8894ad4a97304f7c3f6bc93339ad8.jpg) $user_name = empty($cmt->username) ? $_SESSION['user_name'] : trim($cmt->username); $cmt是一个json数据结构,在comment.php的37行处赋值: [<img src="https://images.seebug.org/upload/201306/12172838587ba730ae3c97117c6130f6e7f4053d.jpg" alt="code2.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201306/12172838587ba730ae3c97117c6130f6e7f4053d.jpg) $cmt = $json->decode($_REQUEST['cmt']); 由此可见,这里只要用户提交了"username":"any user account"的json code,就能冒充任意用户发表对指定商品的评论! ### 漏洞证明: 为验证此攻击,我自己搭建了ECShop的网店,注册了两个账户,test以及test3,如下图: [<img src="https://images.seebug.org/upload/201306/12172916068f982977a990370a6999042549e873.jpg" alt="users.jpg" width="600"...
### 简要描述: 登录用户可以冒充任意其他注册用户对任意商品发表评论,合理利用可操纵网店舆论 ### 详细说明: 漏洞代码在comment.php的287行处: [<img src="https://images.seebug.org/upload/201306/121728183ed8894ad4a97304f7c3f6bc93339ad8.jpg" alt="code.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201306/121728183ed8894ad4a97304f7c3f6bc93339ad8.jpg) $user_name = empty($cmt->username) ? $_SESSION['user_name'] : trim($cmt->username); $cmt是一个json数据结构,在comment.php的37行处赋值: [<img src="https://images.seebug.org/upload/201306/12172838587ba730ae3c97117c6130f6e7f4053d.jpg" alt="code2.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201306/12172838587ba730ae3c97117c6130f6e7f4053d.jpg) $cmt = $json->decode($_REQUEST['cmt']); 由此可见,这里只要用户提交了"username":"any user account"的json code,就能冒充任意用户发表对指定商品的评论! ### 漏洞证明: 为验证此攻击,我自己搭建了ECShop的网店,注册了两个账户,test以及test3,如下图: [<img src="https://images.seebug.org/upload/201306/12172916068f982977a990370a6999042549e873.jpg" alt="users.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201306/12172916068f982977a990370a6999042549e873.jpg) 然后以test登录,进入某个商品的界面,如下图: [<img src="https://images.seebug.org/upload/201306/121729357f1f252d23f89daf60bc89da52ed44b7.jpg" alt="comment.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201306/121729357f1f252d23f89daf60bc89da52ed44b7.jpg) 发表评论"test comment",此时用fiddle截获post,并强行添加"username":"test3"到提交的json结构中,如下图: [<img src="https://images.seebug.org/upload/201306/121729509f1ecf9176e4e297d765c53874437594.jpg" alt="fiddle.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201306/121729509f1ecf9176e4e297d765c53874437594.jpg) 评论发表后的结果如下图: [<img src="https://images.seebug.org/upload/201306/121730053e1414bc03058ba59410213097b73a59.jpg" alt="result.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201306/121730053e1414bc03058ba59410213097b73a59.jpg) 这里注意ECShop可以设置用户评论的发表是否需要管理员审核,当设置成不需要审核时,评论自动发表。即使设置成需要审核时,管理员也很难看出哪个评论是冒名提交的,哪个不是,如下图: [<img src="https://images.seebug.org/upload/201306/12173027ea35a1017c7469a30c073af53971bdc3.jpg" alt="manage.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201306/12173027ea35a1017c7469a30c073af53971bdc3.jpg) 看,管理员看见的,也是被冒名的test3提交的评论! 当然,对于大量提交,在需要管理员审核的时候,ip地址是个问题,不过,攻击者可以用不同的代理服务器来提交不同的冒名评论,这样,ip地址也很难成为侦测这个攻击的线索了:-)