当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2014-048791

漏洞标题:PinPHP SQL注入漏洞2

相关厂商:PinPHP

漏洞作者: xfkxfk

提交时间:2014-01-14 11:40

修复时间:2014-04-14 11:41

公开时间:2014-04-14 11:41

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:15

漏洞状态:未联系到厂商或者厂商积极忽略

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-01-14: 积极联系厂商并且等待厂商认领中,细节不对外公开
2014-04-14: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

PinPHP SQL注入漏洞(盲注)

详细说明:

PinPHP在检测用户名时,没有过滤,导致SQL盲注。
111111是存在的用户名。存在返回0,不存在返回1。
在文件app/lib/action/home/useraction.class.php:

/**
* 检测用户
*/
public function ajax_check() {
$type = $this->_get('type', 'trim', 'email');
$user_mod = D('user');
switch ($type) {
case 'email':
$email = $this->_get('J_email', 'trim');//未过滤
$user_mod->email_exists($email) ? $this->ajaxReturn(0) : $this->ajaxReturn(1);
break;

case 'username':
$username = $this->_get('J_username', 'trim');//未过滤
$user_mod->name_exists($username) ? $this->ajaxReturn(0) : $this->ajaxReturn(1);
break;
}
}


跟进函数name_exists,文件:/app/Lib/Model/userModel.class.php:

public function name_exists($name, $id = 0) {
$where = "username='" . $name . "' AND id<>'" . $id . "'";
$result = $this->where($where)->count('id');//进入查询
if ($result) {
return true;
} else {
return false;
}
}


从上述代码看出,在检查用户名时,没有对name和email做过滤。
当查询的name或者email存在时,返回0,不存在时返回1。

漏洞证明:

这里我们查询一个存在的用户名111111.输入:111111' and 'a'='a

1.png


返回正常,返回结果为0。
在看看错误的返回,输入:111111' and 'a'='b

2.png


返回1,执行错误。
导致盲注。

修复方案:

过滤

版权声明:转载请注明来源 xfkxfk@乌云


漏洞回应

厂商回应:

未能联系到厂商或者厂商积极拒绝