来自卢尔语大学联盟的研究人员已经在历史悠久的postscript语言中发现了跨网站打印bug。
e安全2月3日,戴尔、三星、惠普、兄弟Brother、Konica、真人Lexigremark等知名制造商推出的各种流行模式受到安全漏洞的影响,黑客可以利用此漏洞窃取密码、从打印作业中提取信息并关闭相应的设备。
这一发现源自鲁尔高校联盟的一组研究人员,他们已经根据研究成果发布了一系列建议以及对应的维基信息。
此次影响到多达20种打印机型号的漏洞涉及几类常见打印语言,包括大多数激光打印机所使用的PostScript与PJL。此漏洞并非新鲜事物,专家们表示其存在时间已经长达数十年之久。
《入侵打印机》系列6条建议中的第2条指出,“在打印机安全的学术研究领域,已经发现多种存在于网络打印机与MFP当中的安全漏洞。这篇文章旨在探讨如何通过常见的PostScript或者PJL类打印任务——二者数十年来一直被用于实现这项功能——以访问打印机文件系统。相关攻击活动可由任何能够进行打印操作的人员实现,例如通过USB或者网络进行打印操作。此操作甚至能够通过恶意网站实现,即利用先进跨站点打印结合所谓‘CORS欺诈‘这一新型技术完成。(详见)”
研究人员们还发布了一款名为Printer Exploitation Toolkit(即打印机漏洞利用工具包,简称PRET)的Python概念验证应用,其可用于简化针对打印机上基于PostScript及PJL文件系统的访问流程。
这款工具能够通过网络或者USB接口接入打印机,且可用于利用由研究人员们在打印机的PostScript或PJL语言中发现的安全漏洞。“此工具允许人们捕捉或者操纵打印任务,访问打印机的文件系统及内存甚至导致对应设备发生物理性损坏。”
发布于GitHub上的PRET
研究人员们公布了六份建议报告,其中涵盖多种相关问题,具体包括缓冲区溢出、密码泄露以及打印任务捕捉等安全漏洞。
在此类攻击活动中,一种技术允许攻击者访问打印机的文件系统。此方法利用跨源资源共享(简称CORS)机制以允许第三方域在打印过程中读取字体等网页数据。
将CORS欺诈与跨站点打印(简称XPS)相结合,攻击者们能够利用其通过“一个隐藏Iframe向受害者内部网络中打印机的端口9100/tcp发送HTTP POST请求”,从而实现Web类攻击。
在对应的维基信息中可以看到,“跨站点打印(简称XPS)攻击使得网络攻击者能够利用一个隐藏Iframe向受害者内部网络中打印机的端口9100/tcp发送HTTP POST请求,从而实现Web类攻击。该HTTP标题头可作为普通文本进行打印,或者基于打印机的设置被禁用。不过该POST数据中可包含任意打印任务,例如需要解释的PostScript或者PJL命令。”
根据研究人员们的说明,其能够通过修改PostScript输出命令将来自打印机的数据重新发送回浏览器。
维基信息继续介绍称,“通过使用PostScript输出命令,我们能够轻松模拟一套运行在端口9100/tcp上的HTTP服务器,并定义需要响应的自有HTTP标题头——其中包括任意CROS访问-控制-允许-原始字段,其指示网络浏览器允许JavaScript访问此资源,这意味着浏览器同源策略中将因此存在漏洞。”
以下为JavaScript概念验证代码:
job = "\x1B%-12345X\r\n"
+ "%!\r\n"
+ "(HTTP 200 OK\\n) print\r\n"
+ "(Server: PostScript HTTPD\\n) print\r\n"
+ "(Access-Control-Allow-Origin: *\\n) print\r\n"
+ "(Connection: close\\n) print\r\n"
+ "(Content-Length: ) print\r\n"
+ "product dup length dup string cvs print\r\n"
+ "(\\n\\n) print\r\n"
+ "print\r\n"
+ "(\\n) print flush\r\n"
+ "\x1B%-12345X\r\n";var x = new XMLHttpRequest;x.open("POST", "http://printer:9100");x.send(job);x.onreadystatechange = function {
if == 4)
aler);};
跨站点打印攻击的局限性
需要注意的是,PCL作为页面描述语言并不可用于实现CORS欺诈,这是因为其仅允许单一数字作为响应。PJL同样无法用于实现CORS欺诈,因为其只会使用以面向全部已响应字符串@PJL ECHO ,这意味着其无法模拟一条有效的HTTP标题头。不过这并不代表经过强化的XSP攻击仅限于PostScript任务之内:PostScript可用于响应一条欺诈性HTTP标题头,而该UEL随后可通过调用切换打印机语言。通过这种方式,网络攻击者亦能够在PJL命令中包含对应结果。
这里我们需要提及两种现有陷阱实现方式:
其一,准备一条正确的数据Content-Length 以备PostScript进行确定。如果攻击者无法预测此响应的整体大小且不能通过拆分编码的方式解决,则需要设置一个高值并进行填充。
其二,添加Connection: close 标题头字段非常重要,否则HTTP连接会始终保持活动,直到网络客户端或者打印机设备触发超时,而这意味着该打印机将在一段时间内无法访问。
如果该打印机设备支持普通文本打印,则XHR的HTTP请求标题头会被作为硬拷贝进行打印——其中包括用于容纳调用恶意JavaScript之URL的Origin标题头字段,这意味着攻击者将更难以静默方式活动。这样的结果将不可避免,因为我们并不具备对该打印机的控制权——而且某些情况下能够禁用打印功能——除非该HTTP本体得到处理且其HTTP标题头已经被打印机设备解释为普通文本。如果降低噪声对于攻击者非常重要,则其可以尝试首先利用IPP、LPD、FTP或者打印机中的嵌入Web服务器等其它潜在XSP通道在PJL任务媒介中通过正确的PJL命令禁用打印功能。另外,测试证明所有协议皆可通过如上所述方式利用跨协议脚本变种成功实现打印任务部署。但除了无法利用欺诈CORS标题头提供反馈之外,各协议还存在着自己的弊端:
指向LPD与FTP端口的跨协议访问会被多种网络浏览器直接屏蔽。
用于在嵌入式Web服务器上实现直接打印的参数只在特定机型上有效。
IPP标准要求HTTP POST请求的Content-type 被设置为application/ipp ,而这一点无法通过XHR对象实现——不过其最终实现实际取决于不正确类型。
以下为跨站点打印通道间的比较结果:
实现XSP的一大关键在于找到目标打印机的正确地址或者主机名称。我们的方案在于滥用大多数现代浏览器中存在的WebRTC,其能够将枚举本地网络接口的IP地址。拥有了本地IP地址,XHR对象随后即可用于开启指向其余全部253个地址的端口9100/tcp的连接,从而利用PostScript与CORS欺诈检索打印机的产品名称。根据我们的测试,整个过程只需要几秒钟时间。如果该打印机与受害者主机处于同一子网当中,则其地址可利用JavaScript以相同的方式检测得出。 WebRTC目前在Safari中处于开发阶段,并受到火狐、Chrome以及微软Edge等浏览器的当前版本的支持。IE浏览器不支持WebRTC,但VBScript与Java能够以类似的方式被用于泄露本地IP地址。如果无法检索该本地接口地址,我们则采取一种较为聪明的暴力破解方法:我们尝试利用XHR对象接入受害者路由器的端口80.为了实现这一点,我们列出了一份来自互联网的访问资源列表,其中列举了115条默认路由器地址。如果目标路由器能够访问,我们则会扫描其子网以查找打印机,之后的步骤如前所述。
POC概念验证
概念验证方案证明,先进跨站点打印攻击活动具备可行性,且能够对企业及各类组织机构造成切实威胁。其具体实现方式参阅。其已经在火狐48、Chrome 52、Opera 39以及IE 10中得到成功验证。需要指出的是,Tor浏览器会屏蔽该攻击,因为其会尝试通过Tor网络接入全部地址——包括本地地址——这意味着XSP请求永远不会抵达内网打印机处。
相关工具
打印机漏洞利用工具包:
跨站点打印攻击POC验证:http://
安全专家们已经将这一问题报告给全部相关打印机供应商。
昨日头条:
E安全注:本文系E安全独家编译报道,转载请联系授权,并保留出处与链接,不得删减内容。联系方式:① 微信号zhu-geliang ②邮箱eapp@ea
1.《怎么关闭打印机xps?终于找到答案了2017如何入侵打印机?跨站打印(简称XSP)攻击+CORS欺诈「含POC」》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《怎么关闭打印机xps?终于找到答案了2017如何入侵打印机?跨站打印(简称XSP)攻击+CORS欺诈「含POC」》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/why/3058173.html