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

68 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<details>
<summary><strong>零基础学习AWS黑客攻击直至成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS红队专家)</strong></a><strong></strong></summary>
支持HackTricks的其他方式:
* 如果您想在**HackTricks中看到您的公司广告**或**下载HackTricks的PDF版本**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取[**官方PEASS & HackTricks商品**](https://peass.creator-spring.com)
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram群组**](https://t.me/peass) 或在**Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
</details>
# 内容覆盖
一种简单的操纵打印输出外观的方法是**使用**覆盖层。\
[**PCL**](./#pcl) 有一个记录功能,可以在文档上方放置**覆盖宏**。不幸的是,此功能**仅限于当前打印作业**,无法做到永久性。\
[**PostScript**](./#postscript-ps) 默认情况下不提供此功能,但可以通过**重新定义showpage**操作符来编程实现该操作符包含在每个PostScript文档中以打印当前页面。攻击者可以在那里**挂钩**,执行她自己的代码,然后调用操作符的原始版本。\
因此她可以用自定义的EPS文件覆盖所有要打印的页面。此黑客技术可用于**向文档的硬拷贝添加任意图形或字体**(通过覆盖空白页面然后添加自定义内容,可以完全改变文档的外观)。\
显然这种方法只有在使用PostScript作为打印机驱动程序且没有设置`StartJobPassword`时才能成功。
![](http://hacking-printers.net/wiki/images/thumb/9/93/Overlay.jpg/300px-Overlay.jpg)
**如何测试此攻击?**
在ps模式下使用[**PRET**](https://github.com/RUB-NDS/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**](https://github.com/RUB-NDS/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
```
<details>
<summary><strong>从零开始学习AWS黑客攻击直到成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary>
支持HackTricks的其他方式
* 如果您想在**HackTricks中看到您的公司广告**或**下载HackTricks的PDF**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取[**官方PEASS & HackTricks商品**](https://peass.creator-spring.com)
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**telegram群组**](https://t.me/peass)或在**Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
</details>