查看: 18977|回复: 5

ecshop一处验证码绕过逻辑漏洞

[复制链接]
发表于 2015-1-20 11:55:25 | 显示全部楼层 |阅读模式
虽然验证码进行了加密,但是逻辑上还有点问题

问题出在

..\includes\cls_captcha.php

通过验证函数可以看到直接返回,并没有对验证失败进行处理
[PHP] 纯文本查看 复制代码
function check_word($word)

    {

        $recorded = isset($_SESSION[$this->session_word]) ? base64_decode($_SESSION[$this->session_word]) : '';

        $given    = $this->encrypts_word(strtoupper($word)); //MD5加密处理



        return (preg_match("/$given/", $recorded)); //验证规则

    }

也就是说如果登陆失败的时候没有对验证码SESSION置空的话,就可以在这次请求中反复尝试进行破解。

下面代码可以看到并没有对验证错误的时候进行处理

..\ecshop\admin\privilege.php
[PHP] 纯文本查看 复制代码
if (intval($_CFG['captcha']) & CAPTCHA_ADMIN)

    {

        include_once(ROOT_PATH . 'includes/cls_captcha.php');



        /* 检查验证码是否正确 */

        $validator = new captcha();

        if (!empty($_POST['captcha']) && !$validator->check_word($_POST['captcha']))

        {

            sys_msg($_LANG['captcha_error'], 1);

        }

    }

    $_POST['username'] = isset($_POST['username']) ? trim($_POST['username']) : '';

    $_POST['password'] = isset($_POST['password']) ? trim($_POST['password']) : '';

    $sql="SELECT `ec_salt` FROM ". $ecs->table('admin_user') ."WHERE user_name = '" . $_POST['username']."'";

   echo $sql."<br/>";

    $ec_salt =$db->getOne($sql);

    if(!empty($ec_salt))

    {

         /* 检查密码是否正确 */

         $sql = "SELECT user_id, user_name, password, last_login, action_list, last_login,suppliers_id,ec_salt".

            " FROM " . $ecs->table('admin_user') .

            " WHERE user_name = '" . $_POST['username']. "' AND password = '" . md5(md5($_POST['password']).$ec_salt) . "'";

    }

    else

    {

         /* 检查密码是否正确 */

         $sql = "SELECT user_id, user_name, password, last_login, action_list, last_login,suppliers_id,ec_salt".

            " FROM " . $ecs->table('admin_user') .

            " WHERE user_name = '" . $_POST['username']. "' AND password = '" . md5($_POST['password']) . "'";

    }

    $row = $db->getRow($sql);



    if ($row)

    {....}

d87368736319710956ede21cb68e674420150118101429.png

评分

参与人数 1i币 +4 收起 理由
clocks + 4 感谢分享

查看全部评分

回复

使用道具 举报

发表于 2015-1-20 13:25:48 | 显示全部楼层
试试看
回复 支持 反对

使用道具 举报

发表于 2015-1-20 20:11:56 | 显示全部楼层
这都被你发现了,,,果然的挖掘党啊
同时表示对你的分享表示感谢
回复 支持 反对

使用道具 举报

发表于 2015-1-21 12:59:49 | 显示全部楼层
挖啊挖。漏洞好像一直挖不完
回复 支持 反对

使用道具 举报

发表于 2015-1-23 11:21:14 | 显示全部楼层
最近大牛都在玩密码爆破了 乌云也在讨论验证码识别
回复 支持 反对

使用道具 举报

发表于 2015-1-27 11:19:55 | 显示全部楼层
逻辑不错,学习!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

旗下站点

邮箱系统

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2025-3-7 08:13 , Processed in 0.030696 second(s), 17 queries , Gzip On, MemCache On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部