首页 » PHP教程 » evalphp破绽技巧_CVE202017496 Bulletin 马脚

evalphp破绽技巧_CVE202017496 Bulletin 马脚

访客 2024-12-03 0

扫一扫用手机浏览

文章目录 [+]

CVE-2020-17496漏洞根源剖析

模板渲染是vBulletin中的一个功能,可以将XML模板转化为PHP代码并实行。
从5.0版本开始,vBulletin 开始接管Ajax的模板渲染要求。
渲染是在函数staticRenderAjax 中实行的。
如图1所示,函数的参数值来源于$_REQUESTS,$_GET 和 $_POST。
由于这些参数中的模板名和干系的配置都是用户可以掌握的,因此可能会引发CVE-2019-16759漏洞。

evalphp破绽技巧_CVE202017496 Bulletin 马脚

函数staticRenderAjax中的值和参数来源于$_REQUESTS、$_GET 和 $_POST,如下图中赤色箭头所示:

evalphp破绽技巧_CVE202017496 Bulletin 马脚
(图片来自网络侵删)

图1. vBulletin < 5.5.5中的callRender()

攻击者在操作参数widgetConfig[‘code’]中含有模板名widget_php和恶意代码的Ajax要求时,渲染引擎就会将图2中的XML模板widget_php 转化为PHP 代码中的字符串,然后由eval 函数实行代码。
由于天生的代码中有有一行vB5_Template_Runtime::evalPhp(” . $widgetConfig[‘code’],因此要求中的恶意代码就会实行。

图2. 模板“widget_php”

图3. 从XMpL模板转化成的PHP代码

从v5.5.5版本开始,引入了函数callRender()(如图4所示)来修复CVE-2019-16759漏洞。
该函数引入了黑名单机制来检讨模板名。
如果名字是widget_php,模板就不会渲染要求的模板。

图4. vBulletin ≥ 5.5.5版本的callRender()

另一个补丁是evalPhp 函数会检讨当前模板名。
通过补丁,widget_php是唯一可以用来实行PHP代码的模板,如图5所示。

图5. 只有模板是widget_php时,evalPhp() 才实行代码

该补丁使得widget_php是唯一可以用于PHP代码实行的模板,同时还限定了对该模板的访问。
但在最新的绕过中,研究职员创造还有一个模板可以用于加载该模板,即widget_tabbedcontainer_tab_panel 。

图6. 模板widget_tabbedcontainer_tab_panel

模板 widget_tabbedcontainer_tab_panel 如图6所示,是一个用来渲染多个子模板的模板。
渲染该模板本身并不会直接导致远程代码实行。
但模板渲染会引发其他子模板的渲染。

下面的代码是从XML widget_tabbedcontainer_tab_panel 模板渲染的PHP代码。
之后,代码会被天生和实行。

[code]

$final_rendered = ” . ”;

$panel_id = ” . vB5_Template_Runtime::vBVar($id_prefix).vB5_Template_Runtime::vBVar($tab_num) . ”;

$final_rendered .= ” . ” . ” . ‘ ‘ . ”;

if (isset($subWidgets) AND (is_array($subWidgets) OR $subWidgets instanceof ArrayAccess))

{

foreach ($subWidgets AS $subWidget)

{

$final_rendered .= ‘ ‘ . vB5_Template_Runtime::includeTemplate($subWidget[‘template’],array(‘widgetConfig’ => $subWidget[‘config’], ‘widgetinstanceid’ => $subWidget[‘widgetinstanceid’], ‘widgettitle’ => $subWidget[‘title’], ‘tabbedContainerSubModules’ => $subWidget[‘tabbedContainerSubModules’], ‘product’ => $subWidget[‘product’])) . ‘ ‘;

}

}$final_rendered .= ” . ‘’;

[/code]

在PHP代码中,可以看出渲染引擎会遍历subWidget和$subWidgets中的配置,并天生一新的模板工具,然后渲染会天生其PHP 代码。
此时,如果字符串widget_php被分配给变量subWidget,恶意代码就会放置在$widgetConfig[‘code’] 中,恶意代码就会像CVE-2019-16759漏洞一样实行。

PoC

基于以上剖析,研究职员布局了一个漏洞利用代码来证明该功能。
函数callRender的调用须要POST HTTP方法,如图7所示。

图7. 调用callRender()

图8 是含有phpinfo()运行结果的被黑页面,图9和图10是有类型效果的被操作的要求。
在URL中,子模板名widget_php和恶意代码phpinfo();exit(); 都是数组subWidget 的第一个元素。
当后端处理该URL 时,恶意代码就会实行。

图8. 漏洞利用复现1

图9. 漏洞利用复现2

图10. 漏洞利用复现3

CVE-2020-17496漏洞在野利用

研究职员在8月10日首次创造了该漏洞的在野漏洞,之后创造了来自不同IP 地址的利用。

扫描活动

研究职员根据捕获的恶意流量剖析创造,有多个源IP 在进行扫描。
扫描的目的是考试测验找出有漏洞的站点并网络干系的信息,如图11-15所示。
这些payload会考试测验实行系统命令echo and id,攻击者根据相应可以判断目标是否受该漏洞的影响。

图11. 在野漏洞利用 – 1

图12. 在野漏洞利用 – 2

图13. 在野漏洞利用 – 3

图14. 在野漏洞利用 – 4

敏感文件读取

也有攻击者考试测验利用该漏洞来读取做事器真个文件。
Payload中含有PHP 函数shell_exec() 来实行任意系统命令,用系统命令 cat ../../../../../../../../../../etc/passwd 来读取/etc/passwd 的内容。
流量如图15所示。
一旦攻击成功,来自目标的敏感信息就会透露。

图15. 在野漏洞利用– 5

Web Shell

也有攻击者利用该漏洞来安装web shell。
如图16所示,漏洞利用考试测验用PHP函数file_put_content()将基于PHP 的web shell。

图16. 在野漏洞利用 – 6

如图17所示,漏洞利用考试测验下载一个PHP 脚本到受害者做事器。
Web shell 的代码如下所示。
代码是一个上传页面,攻击者可以上传任意文件并实行随后的攻击活动。

图17. 在野漏洞利用– 7

如图18所示,漏洞利用考试测验写入一个base64 编码的PHP 代码到web host目录中。
新页面会引发任意文件上传,然落后击者可以实行随后的攻击步骤。

图18. 在野漏洞利用 – 8

下载Shellbot

也有攻击者利用该漏洞来下载基于Perl的脚本恶意软件Shellbot,用PHP 函数 shell_exec()来实行系统命令wget,从http://178[.]170[.]117[.]50/bot1下载并运行恶意软件,payload如图19所示:

图19. 在野漏洞利用– 9

脚本实行后,就连接到基于IRC的C2 做事器,地址为66[.]7[.]149[.]161:6667,加入IRC信道<afk ,然后保持回答做事器的ping,流量如图20所示。
一旦从谈天信道中吸收到命令,就可以实行干系的端口扫描代码、下载文件、实行系统命令、开始洪泛攻击等。

图20. ShellBot脚本实行期间的流量

下载Sora

其余一个漏洞利用是从攻击者的做事器下载Mirai变种——Sora。
但是由于利用的缺点的HTTP 方法,因此该payload是无效的。

图21. 在野漏洞利用– 10

根据对样本的剖析,研究职员漏洞利用在传播过程中领悟了CVE-2020-5902、CVE-2020-1937、CVE-2020-10173、CVE-2020-10987、Netgear R700 RCE、Netlink GPON Router 1.0.11 RCE 和 CVE-2020-17496漏洞利用等多个漏洞。

总结

目前已经有多个针对vBulletin预认证远程代码实行漏洞CVE-2020-17496 的在野利用攻击。
由于vBulletin 的遍及以及用户基数,使得其成为攻击者的紧张目标。
vBulletin已于2020年8月10日发布了漏洞补丁,研究职员建议干系用户尽快更新补丁。

参考及来源:https://unit42.paloaltonetworks.com/cve-2020-17496/CVE-2020-17496 vBulletin Pre-Auth RCE漏洞在野利用

标签:

相关文章

语言游戏聚会的魅力,跨界交流的盛宴

在繁忙的都市生活中,一场别开生面的语言游戏聚会悄然兴起。这不仅是一场简单的娱乐活动,更是一次跨界交流的盛宴,一场思想的碰撞与火花。...

PHP教程 2024-12-29 阅读1 评论0

语言序列逻辑在现代传播中的运用与影响

语言序列逻辑,作为现代传播学中的重要理论之一,对于理解语言传播的规律、提高传播效果具有重要作用。在信息化、网络化时代,语言序列逻辑...

PHP教程 2024-12-29 阅读1 评论0