hacktricks/network-services-pentesting/pentesting-printers/print-job-manipulation.md

5.1 KiB
Raw Blame History

零基础学习AWS黑客攻击直至成为专家 htARTE (HackTricks AWS红队专家)

支持HackTricks的其他方式:

内容覆盖

一种简单的操纵打印输出外观的方法是使用覆盖层。
PCL 有一个记录功能,可以在文档上方放置覆盖宏。不幸的是,此功能仅限于当前打印作业,无法做到永久性。
PostScript 默认情况下不提供此功能,但可以通过重新定义showpage操作符来编程实现该操作符包含在每个PostScript文档中以打印当前页面。攻击者可以在那里挂钩,执行她自己的代码,然后调用操作符的原始版本。
因此她可以用自定义的EPS文件覆盖所有要打印的页面。此黑客技术可用于向文档的硬拷贝添加任意图形或字体(通过覆盖空白页面然后添加自定义内容,可以完全改变文档的外观)。
显然这种方法只有在使用PostScript作为打印机驱动程序且没有设置StartJobPassword时才能成功。

如何测试此攻击?

在ps模式下使用PRETcrossoverlay命令,然后断开连接并打印任意文档:

./pret.py -q printer ps
Connection to printer established

Welcome to the pret shell. Type help or ? to list commands.
printer:/> overlay overlays/smiley.eps
printer:/> cross whoa "HACKED"
printer:/> exit

内容替换

即使攻击者可以在现有文档上覆盖一个图层,除非她知道原始文档的确切结构,否则她将无法更改特定值。有时候,人们不仅想要添加自定义内容,还想要解析并替换现有文档的部分内容。
替换PostScript文件中的文本问题可以归结为从渲染文档中提取字符串的问题。这并非易事因为字符串可能由PostScript程序本身动态构建。因此简单地在文档源代码中进行解析和替换并不可行。
你可以使用重新定义的show操作符。show操作符接受一个字符串作为输入在当前页面的某个位置绘制该字符串。通过重新定义操作符可以优雅地提取文本。这种方法也可以用于在字符串被绘制,针对性地进行搜索和替换
这种方法对于直接发送到打印机的基于LaTeX的PostScript文档是成功的,但对于由GIMP生成的PostScript文件则失败,因为它不是使用字符串,而是创建栅格图形来表示它们。对于任何文档格式——甚至是PostScript本身——当通过CUPS处理时也会出现同样的问题。理论上这样的语言结构也可以被解析应该是进一步研究的对象。

如何测试这种攻击?

使用PRETreplace命令在ps模式下然后断开连接并打印包含DEF的PostScript文档

./pret.py -q printer ps
Connection to printer established

Welcome to the pret shell. Type help or ? to list commands.
printer:/> replace "ABC" "DEF"
printer:/> exit
从零开始学习AWS黑客攻击直到成为专家 htARTE (HackTricks AWS Red Team Expert)

支持HackTricks的其他方式