首页 > 关于我们 > 优品资讯 > 技术分享 > PHPCMS V9 /phpcms/modules/member/index.php phpcms注入漏洞修复补丁
来源:优品致远     更新时间:2017-06-04 01:44:33     浏览量:
漏洞名称:phpcms注入漏洞
补丁编号:14033472
补丁文件:phpcms/modules/member/index.php
补丁来源:云盾自研更新时间:2017-06-03 16:35:01
漏洞描述:phpcms用户登录注入漏洞。【注意:该补丁为云盾自研代码修复方案,云盾会根据您当前代码是否符合云盾自研的修复模式进行检测,如果您自行采取了底层/框架统一修复、或者使用了其他的修复方案,可能会导致您虽然已经修复了改漏洞,云盾依然报告存在漏洞,遇到该情况可选择忽略该漏洞提示】

解决办法:

源代码大概615行:

1
2
3
4
5
6
7
8
9
10
11
12
f(empty($_SESSION['connectid'])) {
//判断验证码
$code = isset($_POST['code']) && trim($_POST['code']) ? trim($_POST['code']) : showmessage(L('input_code'), HTTP_REFERER);
if ($_SESSION['code'] != strtolower($code)) {
    $_SESSION['code'] = '';
    showmessage(L('code_error'), HTTP_REFERER);
}
$_SESSION['code'] = '';
}
 
$username = isset($_POST['username']) && is_username($_POST['username']) ? trim($_POST['username']) : showmessage(L('username_empty'), HTTP_REFERER);
$password = isset($_POST['password']) && trim($_POST['password']) ? trim($_POST['password']) : showmessage(L('password_empty'), HTTP_REFERER);

针对phpsso模块添加过滤代码,最好的方式应该是将转义和过滤放在数据库操作的前一步,这样可以极有效缓解SQL注入带来的问题。

 

修改代码:

1
$password = isset($_POST['password']) && trim($_POST['password']) ? trim($_POST['password']) : showmessage(L('password_empty'), HTTP_REFERER);

更改为

1
$password = isset($_POST['password']) && trim($_POST['password']) ? addslashes(urldecode(trim($_POST['password']))) : showmessage(L('password_empty'), HTTP_REFERER);










收缩