5.1 KiB
零基础学习AWS黑客攻击直至成为专家 htARTE (HackTricks AWS红队专家)!
支持HackTricks的其他方式:
- 如果您想在HackTricks中看到您的公司广告或下载HackTricks的PDF版本,请查看订阅计划!
- 获取官方PEASS & HackTricks商品
- 发现PEASS家族,我们独家的NFTs系列
- 加入 💬 Discord群组 或 telegram群组 或在Twitter 🐦 上关注我 @carlospolopm。
- 通过向 HackTricks 和 HackTricks Cloud github仓库提交PR来分享您的黑客技巧。
内容覆盖
一种简单的操纵打印输出外观的方法是使用覆盖层。
PCL 有一个记录功能,可以在文档上方放置覆盖宏。不幸的是,此功能仅限于当前打印作业,无法做到永久性。
PostScript 默认情况下不提供此功能,但可以通过重新定义showpage操作符来编程实现,该操作符包含在每个PostScript文档中以打印当前页面。攻击者可以在那里挂钩,执行她自己的代码,然后调用操作符的原始版本。
因此,她可以用自定义的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文件则失败,因为它不是使用字符串,而是创建栅格图形来表示它们。对于任何文档格式——甚至是PostScript本身——当通过CUPS处理时也会出现同样的问题。理论上,这样的语言结构也可以被解析,应该是进一步研究的对象。
如何测试这种攻击?
使用PRET的replace
命令在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的其他方式:
- 如果您想在HackTricks中看到您的公司广告或下载HackTricks的PDF,请查看订阅计划!
- 获取官方PEASS & HackTricks商品
- 发现PEASS家族,我们独家的NFTs系列
- 加入 💬 Discord群组或telegram群组或在Twitter 🐦 上关注我 @carlospolopm。
- 通过向 HackTricks 和 HackTricks Cloud github仓库提交PR来分享您的黑客技巧。