Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2020-25867 | Kitploit
工具/GitHubGitHub/thomasfady/cve-2020-25867
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试学习与教育
GitHubthomasfady/cve-2020-25867

CVE-2020-25867

查看仓库
4年前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2020-25867:SoPlanning 共享密钥绕过

信息

  • 受影响版本:1.46.01
  • 已修复版本:1.47 及以上
  • CVE:CVE-2020-25867

时间线

  • 2020/06/26:此漏洞报告已发送给厂商
  • 2020/07/21:该漏洞已修复

风险

共享密钥系统容易受到 PHP 类型混淆(Type Juggling)攻击,攻击者可在不知道共享密钥的情况下访问日历内容。

前提条件

要存在漏洞,必须启用日历共享密钥。

EnableSharingKey

一旦启用此共享功能,用户即可通过共享密钥在无需认证的情况下访问日历。

NormalBehavior

当然,如果密钥错误,访问将被拒绝。

漏洞利用

密钥验证位于文件“includes/header.inc”中

root@kitploit:~
if ( CONFIG_SOPLANNING_OPTION_ACCES == 2 && isset($_GET['public']) && isset($_GET['cle']))
{
  if (strcmp($_GET['cle'],CONFIG_SECURE_KEY)==0)
  {
    $_SESSION['public']=1;
    $_SESSION['user_id']='publicspl';
  }
}

strcmp 函数用于非严格比较。此比较的结果取决于以下内容:PHP 类型比较表

strcmp 函数的结果在文档中有说明:strcmp

如果 str1 小于 str2,则返回 < 0;如果 str1 大于 str2,则返回 > 0;如果两者相等,则返回 0。

如果其中一个参数是数组,该函数将返回“NULL”。

根据 PHP 类型比较表,“NULL”与 0 之间的非严格比较结果为 true

因此,如果 $_GET['cle'] 是一个数组,则条件结果为 true,访问被授权。

此链接会将 $_GET['cle'] 定义为数组: https://demo.soplanning.org/planning.php?public=1&cle[]=

Exploit

访问将以“访客(Invité)”身份被授予。

修复

要修复此漏洞,可以使用严格比较:

root@kitploit:~
if ( CONFIG_SOPLANNING_OPTION_ACCES == 2 && isset($_GET['public']) && isset($_GET['cle']))
{
  if (strcmp($_GET['cle'],CONFIG_SECURE_KEY)===0)
  {
    $_SESSION['public']=1;
    $_SESSION['user_id']='publicspl';
  }
}

或者,不使用 strcmp 函数进行比较。

root@kitploit:~
if ( CONFIG_SOPLANNING_OPTION_ACCES == 2 && isset($_GET['public']) && isset($_GET['cle']))
{
  if ($_GET['cle'] === CONFIG_SECURE_KEY)
  {
    $_SESSION['public']=1;
    $_SESSION['user_id']='publicspl';
  }
}
下载工具