5.9 KiB
☁️ HackTricks云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
-
你在一家网络安全公司工作吗?你想在HackTricks中看到你的公司广告吗?或者你想获得PEASS的最新版本或下载PDF格式的HackTricks吗?请查看订阅计划!
-
发现我们的独家NFTs收藏品The PEASS Family
-
加入💬 Discord群组或电报群组,或者关注我在Twitter上的🐦@carlospolopm。
-
通过向hacktricks repo和hacktricks-cloud repo提交PR来分享你的黑客技巧。
内容覆盖
一种简单的操纵打印输出外观的方法是使用叠加。
PCL有一个文档化的功能,可以将叠加宏放在文档的顶部。不幸的是,此功能仅限于当前打印作业,无法永久设置。
PostScript默认情况下不提供此功能,但可以通过重新定义每个PostScript文档中打印当前页面的showpage运算符来编程实现。攻击者可以在其中插入自己的代码,然后调用运算符的原始版本。
因此,她可以使用自定义的EPS文件覆盖要打印的所有页面。这种黑客技术可以用于向文档的硬拷贝添加任意图形或字体(通过叠加空白页面然后添加自定义内容可以完全改变文档的外观)。
显然,只有在使用PostScript作为打印机驱动程序且未设置StartJobPassword
的情况下,此方法才能成功。
如何测试此攻击?
在ps模式下使用PRET的cross
或overlay
命令,然后断开连接并打印任意文档:
./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文件失败,因为它们不是字符串,而是它们的表示的光栅图形。当CUPS处理任何文档格式(甚至是PostScript本身)时,都会出现相同的问题。从理论上讲,这种语言结构也可以被解析,并且应该成为进一步研究的对象。
如何测试此攻击?
在ps模式下使用PRET的replace
命令,然后断开连接并打印一个包含“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
☁️ HackTricks 云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
-
你在一家网络安全公司工作吗?想要在 HackTricks 中宣传你的公司吗?或者你想要获取最新版本的 PEASS 或下载 HackTricks 的 PDF吗?请查看订阅计划!
-
发现我们的独家 NFT 收藏品The PEASS Family
-
加入 💬 Discord 群组 或 Telegram 群组,或者关注我在推特上的🐦@carlospolopm。
-
通过向 hacktricks 仓库 和 hacktricks-cloud 仓库 提交 PR 来分享你的黑客技巧。