2017如何入侵打印机?跨站打印(简称XSP)攻击+CORS欺诈 【含POC】 - 中国红客帝国官网-Honker EmPire For China - Powered by H.E.C
网络爱好者的栖息之地,让我们的网络技术更上一层楼!!!

2017如何入侵打印机?跨站打印(简称XSP)攻击+CORS欺诈 【含POC】

无法 漏洞预警
来自鲁尔高校联盟的一组研究人员已经在历史悠久的PostScript语言中发现一项跨站打印bug 《入侵打印机》系列6条建议中的第2条指出,“在打印机安全的学术研究领域,已经发现多种存在于网络打印机与MFP当中的安全漏洞。这篇文章旨在探讨如何通过常见的PostScript或者PJL类打印任务——二者数十年来一直被用于实现这项功能——以访问打印机文件系统。相关攻击活动可由任何能够进行打印操作的人员实现,例如通过USB或者网络进行打印操作。此操作甚至能够通过恶意网站实现,即利用先进跨站点打印结合所谓‘CORS欺诈‘这一新型技术完成。(详见 http://hacking-printers.net/wiki/index.php/Cross-site_printing)” 研究人员们还发布了一款名为Printer Exploitation Toolkit(即打印机漏洞利用工具包,简称PRET)的Python概念验证应用,其可用于简化针对打印机上基于PostScript及PJL文件系统的访问流程。 这款工具能够通过网络或者USB接口接入打印机,且可用于利用由研究人员们在打印机的PostScript或PJL语言中发现的安全漏洞。“此工具允许人们捕捉或者操纵打印任务,访问打印机的文件系统及内存甚至导致对应设备发生物理性损坏。” 发布于GitHub上的PRET在描述中指出,“此工具允许人们捕捉或者操纵打印任务,访问打印机的文件系统及内存甚至导致对应设备发生物理性损坏。”E安全读者可在本文末下载此工具。 研究人员们公布了六份建议报告,其中涵盖多种相关问题,具体包括缓冲区溢出、密码泄露以及打印任务捕捉等安全漏洞。 在此类攻击活动中,一种技术允许攻击者访问打印机的文件系统。此方法利用跨源资源共享(简称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/1.0 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 (x.readyState == 4) alert(x.responseText);}; 跨站点打印攻击的局限性 需要注意的是,PCL作为页面描述语言并不可用于实现CORS欺诈,这是因为其仅允许单一数字作为响应。PJL同样无法用于实现CORS欺诈,因为其只会使用以面向全部已响应字符串@PJL ECHO ,这意味着其无法模拟一条有效的HTTP标题头。不过这并不代表经过强化的XSP攻击仅限于PostScript任务之内:PostScript可用于响应一条欺诈性HTTP标题头,而该UEL随后可通过调用切换打印机语言。通过这种方式,网络攻击者亦能够在PJL命令中包含对应结果。 这里我们需要提及两种现有陷阱实现方式: 其一,准备一条正确的数据Content-Length 以备PostScript进行确定。如果攻击者无法预测此响应的整体大小且不能通过拆分编码的方式解决,则需要设置一个高值并进行填充。 其二,添加Connection: close 标题头字段非常重要,否则HTTP/1.1连接会始终保持活动,直到网络客户端或者打印机设备触发超时,而这意味着该打印机将在一段时间内无法访问。 如果该打印机设备支持普通文本打印,则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概念验证 概念验证方案证明,先进跨站点打印攻击活动具备可行性,且能够对企业及各类组织机构造成切实威胁。其具体实现方式参阅hacking-printers.net/xsp/。其已经在火狐48、Chrome 52、Opera 39以及IE 10中得到成功验证。需要指出的是,Tor浏览器会屏蔽该攻击,因为其会尝试通过Tor网络接入全部地址——包括本地地址——这意味着XSP请求永远不会抵达内网打印机处。 相关工具 打印机漏洞利用工具包:https://github.com/RUB-NDS/PRET 跨站点打印攻击POC验证:http://hacking-printers.net/xsp/
标签: 暂无标签

免责声明:

本站提供的资源,都来自网络,版权争议与本站无关,所有内容及软件的文章仅限用于学习和研究目的。不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,我们不保证内容的长久可用性,通过使用本站内容随之而来的风险与本站无关,您必须在下载后的24个小时之内,从您的电脑/手机中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。侵删请致信E-mail:22365412@qq.com

同类推荐
评论列表