首页 » SEO优化 » phpcheckdateisvalid技巧_InfiniteWP治理面板中的身份绕过和远程代码实行RCE

phpcheckdateisvalid技巧_InfiniteWP治理面板中的身份绕过和远程代码实行RCE

duote123 2024-11-20 0

扫一扫用手机浏览

文章目录 [+]

InfiniteWP是一个免费的WordPress多站点管理办理方案,只须要点击一个按钮,我们就可以轻松完成多个WordPress站点的管理任务。

但是,InfiniteWP中存在一个漏洞,该漏洞许可未经身份验证的用户通过系统中某个用户的电子邮件地址进行身份验证,这个漏洞存在于InfiniteWP的密码重置机制当中。

phpcheckdateisvalid技巧_InfiniteWP治理面板中的身份绕过和远程代码实行RCE

CVE编号

CVE-2020-28642修复版本

Infinite WP 2.15.7及其更新版本

phpcheckdateisvalid技巧_InfiniteWP治理面板中的身份绕过和远程代码实行RCE
(图片来自网络侵删)

把稳:官方悄悄修复了该漏洞,并且没有记录在更新日志之中,Infinite WP 2.15.7及其更新版本都不会受此漏洞的影响。

厂商回应

当我们在2020年9月关照供应商时,他们说他们之前已经知道了这个问题(几个月前向他们报告过),他们操持在3-4周内向所有用户发布补丁。
他们让我们等到2021年1月,这样他们就可以确认他们所有的客户都已经修复了该漏洞。

几天前,我们创造其他研究职员已经揭橥了他的研究结果(大约在2020年11月),而供应商没有及时关照我们这一点,因此我们决定发布关于该漏洞的完全信息。

漏洞剖析一、弱密码重置令牌

InfiniteWP管理员面板卖力创建密码重置链接,卖力该功能的代码存在于userLoginResetPassword($params)函数之中,该函数位于controllers/appFunctions.php文件的第1341行代码处:

$hashValue = serialize(array('hashCode' => 'resetPassword', 'uniqueTime' => microtime(true), 'userPin' => $userDets['userID']));$resetHash = sha1($hashValue);[...]$verificationURL = APP_URL."login.php?view=resetPasswordChange&resetHash=".$resetHash."&transID=".sha1($params["email"]);

这里的$userDets[‘userID’] 是目标用户识别符,$params[“email”]则是用户的电子邮件地址。
在重置目标用户密码的时候,攻击者只须要目标用户的ID、电子邮件和调用microtime(true)天生的值,就能够创建出重置密码的链接。

用户ID是存储在数据库中的自动递增整数,默认值为1。
那么,为了拥有更多的用户,就须要购买“manage users”插件(https://infinitewp.com/docs/addons/manage-users/)。
也便是说,我们所利用的攻击脚本默认将考试测验从1到5的用户ID值;攻击者可以在攻击发生之前测试用户电子邮件,如果输入的电子邮件未注册,程序则会返回不同的HTTP相应信息,即返回一个HTTP重定向,重定向地址为“php?view=resetPassword&errorMsg=resetPasswordEmailNotFound”,表示电子邮件未注册。
如果输入的电子邮件未注册,攻击脚本会自动发出关照。
Microtime(true)天生的值为当前的UNIX韶光戳,以微秒为单位(php.net/microtime)。
因此,看可以利用HTTP “Date”Header值(精度为秒)作为字典来进行暴力破解。

通过创建包含所有可能的resetHash值的字典列表,我们可以爆破出精确的密码重置令牌并重置目标用户的密码。
在24小时内最多可以考试测验100万次爆破攻击,不过密码重置令牌将在24小时后将会过期。

在进行漏洞利用PoC的测试过程中,攻击所耗的均匀韶光为1个小时旁边,也便是说,根据特定的网络速率、拥塞和配置,攻击所花的韶光可能会不同。

此时,攻击者将能够重置目标用户的密码并访问InfiniteWP管理面板。
而下一个漏洞将许可攻击者在目标主机上实现经由身份验证的远程代码实行。

二、通过”addFunctions”绕过”checkDataIsValid”实现远程代码实行

早在2016年的时候,研究职员就曾在InfiniteWP管理员面板的2.8.0版本中创造了一个远程代码实行漏洞,这个漏洞将影响/ajax.php API节点。
关于该漏洞的详细信息可以参考这篇【文档】。
正如报告中所写,新版本通过添加了一个针对函数checkDataIsValid($action)(位于controllers/panelRequestManager.php的第3782行)的调用来修复了该漏洞。

private static function checkDataIsValid($action){//Restricted function access$functions = array('addFunctions');if(!in_array($action, $functions)){return true;}return false;}

但是,该检讨没有考虑到PHP函数名不区分大小写的问题,因此通过利用addfunctions(把稳小写的“f”),可以绕过这个补丁并实现远程代码实行了。

漏洞利用演示

漏洞利用代码PoC

#!/usr/bin/env python3# coding: utf8## exploit code for unauthenticated rce in InfiniteWP Admin Panel v2.15.6## tested on:# - InfiniteWP Admin Panel v2.15.6 released on August 10, 2020## the bug chain is made of two bugs:# 1. weak password reset token leads to privilege escalation# 2. rce patch from 2016 can be bypassed with same payload but lowercase#

标签:

相关文章

崩坏学园2材料代码背后的奇幻世界

《崩坏学园2》是一款以二次元风格著称的手机游戏,自2016年上线以来,吸引了大量玩家。游戏中,玩家通过收集和合成各种材料,提升角色...

SEO优化 2025-02-18 阅读0 评论0

小松叉车故障代码故障排查与预防步骤

叉车作为物流、仓储等领域的必备设备,其应用越来越广泛。叉车在使用过程中难免会出现故障,其中故障代码的解读成为了维修人员的重要工作。...

SEO优化 2025-02-18 阅读0 评论0

宗地代码编制规则新时代土地管理的里程碑

宗地代码,作为我国土地管理的基础性工作,是确保土地资源有序、高效、安全利用的重要手段。土地资源供需矛盾日益突出。在此背景下,制定科...

SEO优化 2025-02-18 阅读0 评论0

探索网页之美从源代码看设计之精髓

网页已成为我们日常生活中不可或缺的一部分。而那些美观、实用的网页设计,无疑给人留下了深刻的印象。网页的美观究竟源自何处?本文将从源...

SEO优化 2025-02-18 阅读0 评论0