hacktricks/network-services-pentesting/pentesting-printers/print-job-manipulation.md
2023-08-03 19:12:22 +00:00

72 lines
5.9 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><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
- 你在一家**网络安全公司**工作吗你想在HackTricks中看到你的**公司广告**吗?或者你想获得**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
- 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
- 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
- **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass),或者**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
- **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**。
</details>
# 内容覆盖
一种简单的操纵打印输出外观的方法是**使用叠加**。\
[**PCL**](./#pcl)有一个文档化的功能,可以将**叠加宏**放在文档的顶部。不幸的是,此功能**仅限于当前打印作业**,无法永久设置。\
[**PostScript**](./#postscript-ps)默认情况下不提供此功能,但可以通过**重新定义每个PostScript文档中打印当前页面的showpage运算符**来编程实现。攻击者可以在其中**插入自己的代码**,然后调用运算符的原始版本。\
因此她可以使用自定义的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文件失败因为它们不是字符串而是它们的表示的光栅图形。当CUPS处理任何文档格式甚至是PostScript本身都会出现相同的问题。从理论上讲这种语言结构也可以被解析并且应该成为进一步研究的对象。
**如何测试此攻击?**
在ps模式下使用[**PRET**](https://github.com/RUB-NDS/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
```
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks 云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
- 你在一家**网络安全公司**工作吗?想要在 HackTricks 中**宣传你的公司**吗?或者你想要**获取最新版本的 PEASS 或下载 HackTricks 的 PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
- 发现我们的独家 NFT 收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
- 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
- **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass),或者**关注**我在**推特**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
- **通过向 [hacktricks 仓库](https://github.com/carlospolop/hacktricks) 和 [hacktricks-cloud 仓库](https://github.com/carlospolop/hacktricks-cloud) 提交 PR 来分享你的黑客技巧**。
</details>