Emlog<=5.3.1 博客系统后台无视验证码暴力破解 代码分析

  • 内容
  • 相关

01分析代码


登录页面,在admin/ globals.php



	//登录验证
	if ($action == 'login') {
	        $username = isset($_POST['user']) ? addslashes(trim($_POST['user'])) : '';
	        $password = isset($_POST['pw']) ? addslashes(trim($_POST['pw'])) : '';
	        $ispersis = isset($_POST['ispersis']) ? intval($_POST['ispersis']) : false;
	        $img_code = Option::get('login_code') == 'y' && isset($_POST['imgcode']) ? addslashes(trim(strtoupper($_POST['imgcode']))) : '';
	  
	    $loginAuthRet = LoginAuth::checkUser($username, $password, $img_code);
	     
	        if ($loginAuthRet === true) {
	                LoginAuth::setAuthCookie($username, $ispersis);
	                emDirect("./");
	        } else{
	                LoginAuth::loginPage($loginAuthRet);
	        }
	}


LoginAuth :: checkUser是关键函数我们看他实现的过程


是在include \ lib \ loginauth.php文件


	public static function loginPage($errorCode = NULL) {
	        Option::get('login_code') == 'y' ?
	        $ckcode = "<span>验证码</span>
	        <div class=\"val\"><input name=\"imgcode\" id=\"imgcode\" type=\"text\" />
	        <img src=\"../include/lib/checkcode.php\" align=\"absmiddle\"></div>" :
	        $ckcode = '';
	        $error_msg = '';
	        if ($errorCode) {
	                        //unset($_SESSION['code']);
	            switch ($errorCode) {
	                case self::LOGIN_ERROR_AUTHCODE:
	                    $error_msg = '验证错误,请重新输入';
	                    break;
	                case self::LOGIN_ERROR_USER:
	                    $error_msg = '用户名错误,请重新输入';
	                    break;
	                case self::LOGIN_ERROR_PASSWD:
	                    $error_msg = '密码错误,请重新输入';
	                    break;
	            }
	        }
	        require_once View::getView('login');
	        View::output();
	    }

但是整个登录流程并没有立即对验证码的SESSION进行销毁。便导致了漏洞的产生


利用:整个流程中,只需要获取一次验证码,接下来就不用获取便可爆破了。


0x02利用流程

但是整个登录流程并没有立即对验证码的会议进行销毁。便导致了漏洞的产生


先访问后台,输入正确的验证码   




Ps.因为我把博客后台换个样式,当作参考即可。

然后用拦截发送到intruder




只需要修改密码






0x03解决办法





登录验证的代码上销毁验证码的会话即可admin / globals.php

 unset($ _ SESSION ['code']);







本文标签:

版权声明:若无特殊注明,本文皆为《舜哥哥吖》原创,转载请保留文章出处。

本文链接:Emlog<=5.3.1 博客系统后台无视验证码暴力破解 代码分析 - http://www.shungg.cn/post/78

发表评论

电子邮件地址不会被公开。 必填项已用*标注