hacktricks/network-services-pentesting/pentesting-printers/software-packages.md
2023-08-03 19:12:22 +00:00

113 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
- 你在一家**网络安全公司**工作吗你想在HackTricks中看到你的**公司广告**吗?或者你想获得**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
- 发现我们的独家[NFT](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
- 获取[**官方PEASS和HackTricks的衣物**](https://peass.creator-spring.com)
- **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**。
</details>
近年来,打印机供应商开始引入**在其设备上安装自定义软件的可能性**。这种“打印机应用程序”的格式是专有的SDK不对公众开放。编写在打印机上运行的定制软件的功能是为经销商和承包商而设计的而不是为最终用户设计的。通过这种方式打印机群可以根据公司的特殊需求和业务流程进行调整文档解决方案提供商可以轻松将打印机集成到其管理软件中。一个常见的例子是NSi AutoStore [\[1\]](http://hacking-printers.net/wiki/index.php/Software_packages#cite_note-1),它可以安装在许多多功能一体机上,并自动将扫描或复制的文档上传到预定义的位置。显然,在打印机设备上运行自定义代码是一个潜在的安全威胁。此外,与[固件](http://hacking-printers.net/wiki/index.php/Firmware_updates)相比软件包的代码签名可能更加困难因为软件不仅由打印机制造商编写还由更广泛的开发人员编写这些开发人员需要拥有签署其软件的秘密密钥。因此将秘密密钥包含在SDK中是合乎逻辑的这些SDK通过仅从开发者平台提供独占访问权限来保护。本文旨在系统地收集有关供应商特定软件平台/SDK的信息。
# 供应商
以下是主要打印机供应商提供的扩展其设备功能的软件平台的大致概述。
## HPChai/OXP
HP于1999年推出了他们的“Chai Appliance Platform”平台用于在LaserJet打印机上运行Java应用程序。虽然最初向公众开放了一个SDK [\[2\]](http://hacking-printers.net/wiki/index.php/Software_packages#cite_note-2)但后来访问权限被限制为HP开发者网络的成员。Chai servlet以`.jar`文件的形式提供最初需要由HP进行认证和签名然后才能被打印机设备接受。[\[3\]](http://hacking-printers.net/wiki/index.php/Software_packages#cite_note-phenoelit2002embedded-3)在部署过程中发现了一个缺陷通过安装HP提供的另一种已经签名的替代加载程序软件EZloader他们能够上传和运行自己的未签名的Java软件包。看起来HP在后来的Chai版本中完全放弃了代码签名[\[4\]](http://hacking-printers.net/wiki/index.php/Software_packages#cite_note-mueller2016printers-4)能够编写并执行一个监听端口9100并将传入的文档上传到FTP服务器后打印的概念验证打印机恶意软件。他们的代码基于[\[5\]](http://hacking-printers.net/wiki/index.php/Software_packages#cite_note-5)后者扩展了设备以支持负载均衡并在演示中包含了所需的SDK文件和专有Java库。使用这些库可以通过将`.jar`文件上传到“隐藏”的URL[`http://printer/hp/device/this.loader`](http://printer/hp/device/this.loader)在旧版HP LaserJets上编译和执行任意Java代码。如果嵌入式Web服务器尚未设置密码则可以执行此攻击。否则必须首先通过PostScript从`/dev/rdsk_jdi_cfg0`检索密码(参见[文件系统访问](http://hacking-printers.net/wiki/index.php/File_system_access))或通过将设备重置为[出厂默认设置](http://hacking-printers.net/wiki/index.php/Factory_defaults)来绕过密码。如果受害者当前已登录到打印机的嵌入式Web服务器则Web攻击者可以使用[CSRF](https://en.wikipedia.org/wiki/Cross-site_request_forgery)上传`.jar`文件。对于较新的设备HP使用基于Web服务的“Open Extensibility Platform” \([OXP](https://developers.hp.com/oxp/)\)代替Chai但没有公开可用的SDK。
## CanonMEAP
“多功能嵌入式应用平台” \([MEAP](http://www.developersupport.canon.com/faq/335#t335n18)\)是佳能于2003年推出的基于Java的软件平台用于其imageRunner系列并于2010年扩展到Web服务。第三方开发人员可以以5000美元的费用获得MEAP [SDK](http://developersupport.canon.com/content/meap-sdk-0),这显然超出了研究目的的范围。
## Xerox/Dell \(EIP\)
‘可扩展接口平台’([EIP](http://www.office.xerox.com/eip/enus.html)[\[6\]](http://hacking-printers.net/wiki/index.php/Software_packages#cite_note-6)是由Xerox于2006年为各种多功能打印机推出的。这种架构也被一些改装的Dell设备支持基于Web服务技术。[SDK](http://www.office.xerox.com/eip/enus.html)可供注册开发人员免费使用。
## Brother \(BSI\)
Brother解决方案接口[BSI](https://www.brother-usa.com/lp/civ/bsi.aspx)是一种基于XML的Web架构于2012年推出用于扫描仪、复印机和打印机。许可开发人员可以访问[SDK](https://www.brother-usa.com/lp/civ/home.aspx)。
## Lexmark \(eSF\)
‘嵌入式解决方案框架’([eSF](http://www.lexmark-emea.com/usa/BSD_solution_catalouge.pdf)于2006年为Lexmark多功能打印机推出。用于开发Java应用程序的SDK仅对特别合格的合作伙伴开放。根据[\[7\]](http://hacking-printers.net/wiki/index.php/Software_packages#cite_note-7)这些应用程序在采用之前必须由Lexmark进行数字签名使用2048位RSA签名。
## Samsung \(XOA\)
‘可扩展开放架构’([XOA](http://samsungprintingsolutions.com/2015/02/can-samsungs-extensible-open-architecture-xoa/)由三星于2008年推出有两种版本基于Java的XOA-E虚拟机和基于Web服务的XOA-Web。[SDK](http://xoapartnerportal.com/)仅对三星经销商开放。
## Ricoh \(ESA\)
‘嵌入式软件架构’([ESA](https://www.ricoh.com/esa/)[\[8\]](http://hacking-printers.net/wiki/index.php/Software_packages#cite_note-8)由理光于2004年推出。基于Java的[SDK/J](http://www.ricoh-developer.com/content/device-sdk-type-j-sdkj-overview)可供开发人员在注册后使用。
## Kyocera/Utax \(HyPAS\)
‘高级解决方案混合平台’([HyPAS](http://usa.kyoceradocumentsolutions.com/americas/jsp/Kyocera/hypas_overview.jsp)[\[9\]](http://hacking-printers.net/wiki/index.php/Software_packages#cite_note-9)由京瓷于2008年发布。应用程序基于Java或Web服务。[SDK](https://www.kyoceradocumentsolutions.eu/index/document_solutions/HyPAS/hypas_developer_partner.html)仅对HyPAS开发合作伙伴计划的成员开放并且应用程序必须经过京瓷的批准。
## Konica Minolta \(bEST\)
bizhub扩展解决方案技术[bEST](https://best.kmbs.us/)[\[10\]](http://hacking-printers.net/wiki/index.php/Software_packages#cite_note-10)基于Web服务由柯尼卡美能达于2009年推出。访问[SDK](https://best.kmbs.us/pages/levels.php)需要支付4000美元的白金会员级别开发人员计划费用这对独立研究人员来说超出了范围。
## Toshiba \(e-BRIDGE\)
e-BRIDGE开放平台[e-BRIDGE](http://www.estudio.com.sg/solutions_ebridge.aspx)于2008年由东芝发布用于定制基于Web服务技术的高端多功能打印机。一般公众无法获得SDK。
## Sharp \(OSA\)
‘开放系统架构’([OSA](http://siica.sharpusa.com/Document-Systems/Sharp-OSA)[\[11\]](http://hacking-printers.net/wiki/index.php/Software_packages#cite_note-11)由夏普于2004年推出。用于开发Web服务的[SDK](http://sharp-partners.com/us/PartnerPrograms/DeveloperProgram/tabid/722/Default.aspx)需要付费,并且应用程序在安装到多功能打印机之前需要经过夏普的验证。
## Oki \(sXP\)
‘智能可扩展平台’([sXP](http://www.oki.com/en/press/2014/09/z14053e.html)[\[12\]](http://hacking-printers.net/wiki/index.php/Software_packages#cite_note-12)基于Web服务由Oki Data于2013年为其多功能打印机设备推出。Oki不公开任何关于官方开发人员计划或公开可用的SDK的信息。
# 结果
在旧款HP激光打印机上可以执行任意Java字节码如[\[3\]](http://hacking-printers.net/wiki/index.php/Software_packages#cite_note-phenoelit2002embedded-3)和[\[4\]](http://hacking-printers.net/wiki/index.php/Software_packages#cite_note-mueller2016printers-4)所示。安全性基于嵌入式Web服务器的密码可以通过PostScript轻松获取或通过恢复出厂默认设置绕过。由于无法访问SDK和/或适当的技术文档,很难对其他软件平台的安全性做出明智的评估。下表列出了各个平台、应用技术以及已知的软件包部署程序的比较:
| 厂商 | 平台 | 嵌入式Java | Web服务 | 部署 |
| :--- | :--- | :--- | :--- | :--- |
| HP | Chai/OXP | ✔ | ✔ | Web服务器 |
| Xerox/Dell | EIP | | ✔ | 未知 |
| Canon | MEAP | ✔ | ✔ | 未知 |
| Brother | BSI | | ✔ | 未知 |
| Lexmark | eSF | ✔ | | 未知 |
| Samsung | XOA | ✔ | ✔ | Web服务器 |
| Ricoh | ESA | ✔ | | 未知 |
| Kyocera/Utax | HyPAS | ✔ | ✔ | USB驱动器 |
| Konica Minolta | bEST | | ✔ | 未知 |
| Toshiba | e-Bridge | | ✔ | 未知 |
| Sharp | OSA | | ✔ | 未知 |
| Oki | sXP | | ✔ | 未知 |
## **如何测试这种攻击?**
获取一个SDK并编写自己的概念验证应用程序或者找到一个已经实现你想要的功能的“打印机应用程序”例如自动将扫描的文档上传到FTP。还要检查设备上存在哪些保护机制来安装自定义软件。
## **谁可以执行这种攻击?**
取决于软件包的部署方式。
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
- 你在一个**网络安全公司**工作吗想要在HackTricks中看到你的**公司广告**吗?或者想要获得**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
- 发现我们的独家[NFT](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
- 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
- **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass),或者**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
- **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**。
</details>