心得经验总结:打印机PCL漏洞原理分析

简介: 心得经验总结:打印机PCL漏洞原理分析

0x01 漏洞概要

PCL代表打印机控制语言(Printer Control Language),由惠普公司开发,并被广泛使用的一种打印机协议。关于另一种页面描述语言//代码效果参考:http://www.zidongmutanji.com/zsjx/252845.html

,应该提一提由Adobe设计的PostScript(PS),它可以将更为复杂的事情交由绘图仪/打印机处理。PJL (Printer Job Language,打印机作业语言)作为PCL的扩展,用于指导打印机行为,比如更改设备设置、传输文件等。 若打印机的9100端口向公网开启,在//代码效果参考: http://www.zidongmutanji.com/bxxx/152356.html

向打印机发送PJL指令之前需要对使用者的身份进行认证,认证程序的密钥长度为2字节(Byte),因此可以通过暴力破解认证密钥想打印机发送PJL指令,最终导致任意命令的执行。

PJL (Printer Job Language)程序用于告诉打印机执行什么动作,是对PCL的额外支持。 //代码效果参考:http://www.zidongmutanji.com/bxxx/102222.html

PJL (Printer Job Language) 用于规范格式化页面的基本语言。本身是无害的,但却成为大多数解析器和解释器的漏洞利用代码。

0x02 漏洞原理

打印机系统9100端口开启时,若连上该端口通过PJL指令发送设备名称请求并得到打印机的响应,说明可以未授权访问打印机,PJL保护机制的密钥由2个字节(16比特)的存储单位存储,可以进行暴力破解攻击,从而得到目标打印机的完全访问权限。

根据国外安全研究员PHENOELIT 已经写好了漏洞利用程序,对其中的主要代码进行分析,得到下面的流程图

下面是破解密钥部分的代码:

在pjlsession.cpp中的230到256行

void PJLsession::blind_disable_pjl_password(unsigned int pass) {

相关文章
|
7月前
|
算法 安全 Java
【C/C++ 实用工具】静态代码检测工具和平台的一览
【C/C++ 实用工具】静态代码检测工具和平台的一览
369 0
|
7月前
|
Kubernetes 开发者 Docker
K8S 实用工具之五 -kompose
K8S 实用工具之五 -kompose
|
6月前
|
存储 安全
心得经验总结:打印机PCL漏洞原理分析
心得经验总结:打印机PCL漏洞原理分析
41 0
|
7月前
|
移动开发 安全 图形学
如何绕过某讯手游保护系统并从内存中获取Unity3D引擎的Dll文件
如何绕过某讯手游保护系统并从内存中获取Unity3D引擎的Dll文件
85 0
|
Linux
嵌入式Linux QT开发之如何实现获取磁盘空间大小的应用逻辑
嵌入式Linux QT开发之如何实现获取磁盘空间大小的应用逻辑
248 0
|
存储 监控 安全
Windows逆向学习提纲
Windows逆向学习提纲
273 0
Windows逆向学习提纲
|
数据可视化 C++ Windows
非可视化编程的windows窗口 C++ 代码设计:附例程并多多知识点
非可视化编程的windows窗口 C++ 代码设计:附例程并多多知识点
241 0
|
C++
C++ <windows.h>库函数探究初步续一:键鼠操作
C++ <windows.h>库函数探究初步续一:键鼠操作
352 0
|
NoSQL 小程序 Linux
开源代码分析技巧之——高效Windows源码分析
引言:项目开发中,我们免不了在已有代码或版本的基础上新增代码。这个时候,如何高效的读懂别人代码逻辑,如何从几十万乃至上百万行代码中找到自己需要的逻辑显得尤为重要。
181 0
开源代码分析技巧之——高效Windows源码分析
请使用Qt自带的宏来区分操作系统跨平台源码(★firecat推荐★)
请使用Qt自带的宏来区分操作系统跨平台源码(★firecat推荐★)
226 0