2023 年 3 月 8 日,PaperCut 为其企业打印管理软件发布了新版本,其中包含两个漏洞的补丁:CVE-2023-27350 和 CVE-2023-27351。PaperCut 安全公告将 CVE-2023-27350 详细描述为一个漏洞,可能允许攻击者实现远程代码执行以破坏 PaperCut 应用程序服务器。PaperCut 在该公告中还详细说明了他们是从零日计划 (ZDI) 中了解到它的。ZDI 案例ZDI-CAN-18987将该漏洞详细描述为导致代码执行的身份验证绕过。
2023 年 4 月 19 日,PaperCut 意识到该产品在野外被利用,并发布了更多详细信息,包括一些危害指标,例如日志文件条目、已知恶意域和用于检测观察到的恶意活动的 YARA 规则。
Huntress于 2023 年 4 月 21 日发布了详细说明此漏洞的后续研究,包括利用细节和其他危害指标。
在这篇文章中,我们将介绍根据安全建议发现漏洞的方法,查看根本原因,分析补丁,并开发漏洞利用概念验证。
检查 ZDI 案例会在漏洞详细信息中揭示有价值的信息:
特定缺陷存在于 SetupCompleted 类中。该问题是由于访问控制不当造成的。攻击者可以利用此漏洞绕过身份验证并在 SYSTEM 上下文中执行任意代码。
我们发现包含此 SetupCompleted 类的 JAR 在C:\Program Files\PaperCut NG\server\lib\pcng-server-web-19.2.7.jar
.
反编译 JAR 可以通过多种方式完成,在本例中我们使用CFR。CFR 是一个有用的实用程序,它可以通过命令行将 Java 反编译为人类可读的代码,这些代码可以用作差异工具的输入。
java -jar cfr-0.152.jar v19.2.7/web-jar/pcng-server-web-19.2.7.jar --outputdir v19.2.7/web-jar/decompiled/
查看反编译的类./biz/papercut/pcng/web/setup/SetupCompleted.java
,我们看到在提交表单时,它在第 48 行为 Admin 用户调用 performLogin()。
可以在 找到 performLogin() 函数./biz/papercut/pcng/web/pages/Home.java
。
通常仅在用户通过登录流程验证其密码后,才会在整个软件中调用此功能。但是,在 SetupCompleted 流程中,逻辑意外地验证了匿名用户的会话。这种类型的 Web 应用程序漏洞称为Session Puzzling。
将 v19.2.7 中易受攻击的 SetupCompleted 类与带有Meld的 v21.2.11 中的补丁版本进行比较,我们看到如果设置已经完成,访问该页面现在将重定向到“主页”页面——消除了会话令人费解的逻辑缺陷。
确认 GUI 中的身份验证绕过,我们浏览到页面 http://10.0.40.56:9191/app?service=page/SetupComplete
并单击“登录”。
Huntress 的博客详细介绍了一种通过滥用打印机内置“脚本”功能来获取远程代码执行的方法。检查设备脚本页面,我们看到它使管理员能够开发挂钩来自定义整个企业的打印。
这些脚本是用 JavaScript 编写的,并在 PrintCut 服务的上下文中执行——该服务NT AUTHORITY\SYSTEM
在 Windows 部署中运行。
开发一个与站点交互的脚本通常是非常简单的,但是 PaperCut 网络应用程序使用基于最后请求的动态表单字段——所以它稍微不那么简单。
要开发漏洞利用概念验证,您必须使用会话并像通过用户界面一样单独请求每个页面,以确保正确填充表单字段。
我们完整的概念验证漏洞可以在我们的GitHub上找到。https://github.com/horizon3ai/CVE-2023-27350
PaperCut 一直在汇编从野外开发中观察到的指标,并将成为所有值得关注的指标的最佳来源。本节列出了使用我们的概念验证利用此漏洞时观察到的指标。
在日志 -> 应用程序日志选项卡中导航到本机应用程序日志,可以观察到几个指标。虽然大多数指标会在正常使用中出现,但应特别注意不熟悉的源 IP 地址、时间以及所有这些快速连续发生的事件。
身份验证绕过指示器:
User "admin" logged into the administration interface.
设置更改指示器(RCE 的前身):
User "admin" updated the config key "<A>" to "<B>".
具体来说和.print.script.sandboxed
print-and-device.script.enabled
远程代码执行指示器:
Admin user "admin" modified the print script on printer "<printer>".
查询Shodan显示大约1700个暴露在互联网上的PaperCut服务器。http.html:"papercut" http.html:"print"
PaperCut应用程序在州,地方和教育(SLED)类型的组织中很受欢迎,其中仅教育就占了其中的450个结果。
国际劳动节又称“五一国际劳动节”“国际示威游行日”(英语:International Workers' Day,May Day),是世界上80多个国家的全国性节日。定在每年的五月一日。它是全世界劳动人民共同拥有的节日" 夏日消费节 ",进一步促进消费,助力实体。