hacktricks/network-services-pentesting/9100-pjl.md
2023-08-03 19:12:22 +00:00

8.4 KiB
Raw Blame History

☁️ HackTricks云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

基本信息

原始打印是我们定义的一种连接到网络打印机的9100/tcp端口的过程。它是CUPS和Windows打印架构用于与网络打印机通信的默认方法因为它被认为是“最简单、最快、通常也是最可靠的用于打印机的网络协议”。原始端口9100打印也称为JetDirect、AppSocket或PDL数据流实际上不是一个独立的打印协议。相反,所有发送的数据都直接由打印设备处理就像通过TCP的并行连接一样。与LPD、IPP和SMB不同这可以向客户端发送直接反馈包括状态和错误消息。这样的双向通道使我们可以直接访问PJL、PostScript或PCL命令的结果。因此几乎任何网络打印机都支持的原始端口9100打印被用作使用PRET和PFT进行安全分析的通道。来自这里

如果你想了解更多关于黑客攻击打印机的信息,请阅读此页面

默认端口: 9100

9100/tcp open  jetdirect

枚举

手动枚举

PJL (Printer Job Language)

PJL打印机作业语言是一种用于控制打印机行为的命令语言。通过发送PJL命令我们可以获取有关打印机的信息如打印机型号、配置和状态。

PJL命令通常通过网络端口9100发送。我们可以使用telnet或nc命令连接到该端口并发送PJL命令以获取打印机信息。

以下是一些常用的PJL命令

  • @PJL INFO ID:获取打印机的标识信息。
  • @PJL INFO CONFIG:获取打印机的配置信息。
  • @PJL INFO STATUS:获取打印机的状态信息。

我们可以使用以下命令通过telnet连接到9100端口并发送PJL命令

telnet <target_ip> 9100

然后我们可以发送PJL命令并查看打印机的响应。

PJL命令示例

以下是一些常用的PJL命令示例

  • 获取打印机标识信息:
@PJL INFO ID
  • 获取打印机配置信息:
@PJL INFO CONFIG
  • 获取打印机状态信息:
@PJL INFO STATUS

我们可以通过发送这些命令来枚举打印机的信息,并了解其配置和状态。

nc -vn <IP> 9100
@PJL INFO STATUS      #CODE=40000   DISPLAY="Sleep"   ONLINE=TRUE
@PJL INFO ID          # ID (Brand an version): Brother HL-L2360D series:84U-F75:Ver.b.26
@PJL INFO PRODINFO    #Product info
@PJL FSDIRLIST NAME="0:\" ENTRY=1 COUNT=65535  #List dir
@PJL INFO VARIABLES   #Env variales
@PJL INFO FILESYS     #?
@PJL INFO TIMEOUT     #Timeout variables
@PJL RDYMSG           #Ready message
@PJL FSINIT
@PJL FSDIRLIST
@PJL FSUPLOAD         #Useful to upload a file
@PJL FSDOWNLOAD       #Useful to download a file
@PJL FSDELETE         #Useful to delete a file

自动化

In some cases, it is possible to automate the exploitation of the PJL vulnerability using tools like Metasploit or custom scripts. These tools can send the necessary PJL commands to the printer and exploit the vulnerability without manual intervention.

在某些情况下可以使用诸如Metasploit或自定义脚本之类的工具自动化利用PJL漏洞。这些工具可以向打印机发送必要的PJL命令并在无需手动干预的情况下利用漏洞。

For example, using Metasploit, you can use the exploit/windows/printer/pjl_bounce module to exploit the PJL vulnerability. This module allows you to specify the target printer's IP address, the PJL command to execute, and the payload to deliver.

例如使用Metasploit您可以使用exploit/windows/printer/pjl_bounce模块来利用PJL漏洞。该模块允许您指定目标打印机的IP地址、要执行的PJL命令和要传递的有效载荷。

Another option is to create a custom script using a programming language like Python. This script can send the necessary PJL commands to the printer and exploit the vulnerability. By automating the exploitation process, you can save time and effort during a penetration test.

另一种选择是使用Python等编程语言创建自定义脚本。该脚本可以向打印机发送必要的PJL命令并利用漏洞。通过自动化利用过程您可以在渗透测试期间节省时间和精力。

However, it is important to note that automated exploitation should only be performed on systems that you have proper authorization to test. Unauthorized exploitation of PJL vulnerabilities can lead to legal consequences.

然而重要的是要注意只有在您获得适当授权的系统上才能进行自动化利用。对PJL漏洞的未经授权利用可能会导致法律后果。

nmap -sV --script pjl-ready-message -p <PORT> <IP>
msf> use auxiliary/scanner/printer/printer_env_vars
msf> use auxiliary/scanner/printer/printer_list_dir
msf> use auxiliary/scanner/printer/printer_list_volumes
msf> use auxiliary/scanner/printer/printer_ready_message
msf> use auxiliary/scanner/printer/printer_version_info
msf> use auxiliary/scanner/printer/printer_download_file
msf> use auxiliary/scanner/printer/printer_upload_file
msf> use auxiliary/scanner/printer/printer_delete_file

打印机黑客工具

这是你想要使用的滥用打印机的工具:

{% embed url="https://github.com/RUB-NDS/PRET" %}

黑客打印机的最佳参考

{% embed url="https://hacking-printers.net/wiki/index.php/File_system_access" %}

Shodan

  • pjl port:9100
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥