Ladon 9.2.2多款打印机任意代码执行漏洞检测

admin 2022年10月8日12:27:59评论125 views字数 4212阅读14分2秒阅读模式
Ladon 9.2.2 2022.9.18[+]PrinterPoc  打印机PJA任意代码执行漏洞批量检测[u]CiscoScan支持tls 1.3 建议优先使用Ladon48[u]OnlinePC CMD输出格式化[u]MAC特征  新增ASUS 71 ZTE 222[u]FindIP  模糊匹配IP段[u]WebScan   更新tls 1.2[u]wget/HttpDownLoad  github文件自动修改为raw地址下载[u]DraytekPoc  TimeOut[u]DraytekExp    TimeOut


前言

2021年网络安全研究人员披露了影响惠普公司 150 种不同多功能打印机长达 8 年的安全漏洞,攻击者可以通过利用这些漏洞来控制这些受影响的打印机设备,以此窃取敏感信息并渗透到企业内部网络以发起其他网络攻击。当然本文所涉及的漏洞至少在2017年已公开但现在公网上存在漏洞机器依旧非常多,硬件嘛而且是打印机这种边界设备,一般也没人管。



Ladon 9.2.2多款打印机任意代码执行漏洞检测




0x001 通过Snmp协议探测打印版本

前提条件目标开启snmp协议,不开启或版本不对应就探测不到,和有些机器禁Ping一样,未开启或禁止SNMP协议,也无法探测。

Ladon noping ip.txt SnmpScan

Ladon 9.2.2多款打印机任意代码执行漏洞检测


0x002 通过WebScan模块识别打印机

如下图,蓝色箭头指向为打印要型号版本,WebScan模块通过HTTP协议访问打印机的WEB服务探测其版本,前提条件打印机带有WEB功能

Ladon noping ip.txt WebScan

Ladon 9.2.2多款打印机任意代码执行漏洞检测


0x003 通过WhatCMS模块识别打印机

如下图,黄色部份指向为打印要型号版本,WhatCMS模块通过HTTP协议访问打印机的WEB服务探测其版本,前提条件打印机带有WEB功能。与WebScan区别在于,该模块会探测更多端口,以及SSL、识别CMS等

Ladon noping ip.txt WhatCMS

Ladon 9.2.2多款打印机任意代码执行漏洞检测


0x004 通过SSLinfo模块识别打印机

如下图,蓝色箭头指向为打印要型号版本,SSLinfo模块通过tls协议访问打印机的WEB服务探测其版本,前提条件打印机带有WEB功能并且启用HTTPS

Ladon noping ip.txt SSLinfo

Ladon 9.2.2多款打印机任意代码执行漏洞检测


0x005 通过PrinterPoc模块探测

该模块通过TCP协议向9100端口发送PJA指令探测版本,并测试列目录、读取passwd文件证明其存在任意代码执行,该模块会回显对应漏洞编号。

Ladon noping 192.168.1.8 PrinterPoc

Ladon 9.2.2多款打印机任意代码执行漏洞检测


PS:实战不要一根筋,只会用一个模块探测,这个协议探测不到,不代表整个工具不能用,换个协议试试,可能防火墙拦这个协议,另一个不拦呢,还有就算没有防火墙,这个设备型号不具备协议功能呢?

0x006 通过PrinterPoc模块批量检测漏洞

相关搜索引擎显示全网大约8万打印机开放9100端口,可通过Ladon批量验证哪些IP存在PJA漏洞,哪些可以列目录查看打印内容,哪些穿越目录读密码

Ladon noping ip.txt PrinterPoc

Ladon 9.2.2多款打印机任意代码执行漏洞检测


漏洞利用

在研究打印机前有必要熟悉打印语言,网上各种介绍打印机语言,大家看的会比较混乱,比如有时候是打印机描述语言,有时候又叫打印机控制语言。其实打印机语言按分类是有两类,一种是页面描述语言(PDL),另一种是嵌入式语言(Escape码语言),而HP的PCL控制语言和PostScript(以下简称 PS)都属于PDL页面描述语言。

9100端口
也被称为“raw printing”,因为它使用TCP 9100端口进行网络打印操作,通常在CUPS和Windows系统中使用。与LPD,IPP和SMB协议需要使用打印机控制语言才能执行打印操作相比,通过9100端口发送的所有数据都由打印设备直接处理,并直接将打印结果反馈到客户端,包括状态和错误消息。

编程原理

看了相关资料,发现整个利用过程非常简单,即通过TCP发送PJA指令即可,通过Python这个三四岁小孩都能学会的编程语言,只用几行代码即可实现。

Ladon 9.2.2多款打印机任意代码执行漏洞检测


由于PY只是测试单个,我们需要配置ini脚本,使用Ladon批量检测


Printer.ini

[Ladon]exe=python.exearg=test.py $ip$log=true

批量检测

Ladon noping ip.txt Printer.ini

PS: 使用ini脚本虽可调用外部程序批量,但毕竟是外部程序,无法完美兼容,多进程多线程方式可能会比较卡,所以建议最好使用.net编写Ladon模块,才能让优势最大化,因为存在漏洞机器非常多,所以我又把功能改成内置模块,方便在内网检测存在漏洞的打印机。


DLL模块C#例子

以下代码为打印Ladon传入的目标,可以是IP、URL、IP端口、主机名等

由于没有任何网络请求,所以扫一个C段,就3秒钟左右,默认就是先Ping,所以当你使用Ladon ip/24 test.dll扫描时,打印出来的IP即是ICMP可通的IP

namespace LadonDLL{    public class scan    {        public static string run(string tar)        {            if (string.IsNullOrEmpty(tar))                return "";            else            {                return "demo: "+tar+ "rn";            }
} }}

也就是通过在以上代码添加你想实现的单个功能,Ladon会自动通过内存完美加载你的DLL,使用多线程扫描C段、B段、URL列表、IP列表、主机列表等。

比如以下代码为探测C段上中间件Banner

因为以下代码已做了判断,所以不管Ladon传入IP还是URL它都可以扫描

Ladon 192.168.1.8 test.dll  单个IPLadon ip.txt test.dll  IP列表Ladon http://192.168.1.8 test.dll 单个URLLadon url.txt test.dll URL列表
namespace LadonDLL{    public class scan    {        public static string run(string tar)        {            if (string.IsNullOrEmpty(tar))                return "";            else            {                   return tar+ "t" + getURLbanner(tar);            }
} private static string getURLbanner(string url) { ////HttpWebResponse res; if (!url.ToLower().Contains("https://") && !url.ToLower().Contains("http://")) url = "http://" + url;
try { var req = (HttpWebRequest)WebRequest.CreateDefault(new Uri(url)); req.Method = "HEAD"; req.Timeout = 1000; var res = (HttpWebResponse)req.GetResponse();
if (res.StatusCode == HttpStatusCode.OK || res.StatusCode == HttpStatusCode.Forbidden || res.StatusCode == HttpStatusCode.Redirect || res.StatusCode == HttpStatusCode.MovedPermanently) { return res.Server; }
//res.Close();
return res.Server; } catch (WebException ex) { return ""; } }
}}


整个过程,不用关心如何实现多线程,只需把一个功能写好即可,减少重复性工作,大大提高工作效率,甚至直接使用LadonEXP生成EXP,编程都不用。


使用PRET工具后渗透

我们使用 PRET工具来进行渗透测试。这个用python写成的黑客工具有简单的命令行交互界面,专门用来破解PLJ接口的打印机,获取打印机的环境变量、文件系统和重要目标文件。Ladon 9.2.2多款打印机任意代码执行漏洞检测

可以看到这里探测出了设备类型为惠普的M880彩色打印机。成功连接到该打印机
不同的语言pret会提供不同的命令可用。所以在刚开始使用pret时,可以先使用help查看可用命令。除此之外也可以使用help+命令来显示某命令的详细用法。

Ladon 9.2.2多款打印机任意代码执行漏洞检测


Put:可以将文件上传到打印机上,向linux打印机上传bot来进行控制。
Mirror: 直接将打印机中的所有文件拷贝的本地,方便进一步的分析,寻找如打印记录的文件。

Ladon 9.2.2多款打印机任意代码执行漏洞检测

Destroy: 十分危险的功能,尝试的时候应当慎用,对打印机的NVRAM(一种RAM)造成物理性损坏。

利用pret可以对打印机进行拒绝服务、提权、打印作业越权访问、信息泄露、远程代码执行等测试,具体清单和用法可以参照官方的wiki

其它功能

[u]CiscoScan新增SSL探测版本 支持tls 1.3 有些思科也要4.8才可访问

Ladon 9.2.2多款打印机任意代码执行漏洞检测


SSLinfo同理

Ladon 9.2.2多款打印机任意代码执行漏洞检测


Ladon下载模块

[u]wget/HttpDownLoad  github文件自动修改为raw地址下载,这样就不用手动点击获得raw地址了

Ladon48 wget https://downloads.metasploit.com/data/releases/metasploit-latest-windows-x64-installer.exeLadon48 wget https://raw.githubusercontent.com/k8gege/K8tools/master/wmiexec.vbs

Ladon 9.2.2多款打印机任意代码执行漏洞检测


MAC指纹更新


//Cisco 821 思科//Apple 534 苹果 //Huawei 337 华为//3Com 46 美国//Samsung 465 三星//ZTE 340 中兴//Ericsson 23 爱立信//Nokia 201 诺基亚
//Tp-Link 103 普联//Iphone 43 苹果手机 //MacBook 3 苹果笔记本 //Android 16 安卓系统//IBM 29 IBM//ASUS 71 71 华硕//Hewlett 231 惠普(Hewlett-Packard,简称HP)

Ladon 9.2.2多款打印机任意代码执行漏洞检测


欢迎大家积极反馈BUG,注意提问说清楚环境情况。最好有图有真像,关键IP或机器名,打码就是了嘛,上个图有多难?


原文始发于微信公众号(K8实验室):Ladon 9.2.2多款打印机任意代码执行漏洞检测

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年10月8日12:27:59
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Ladon 9.2.2多款打印机任意代码执行漏洞检测https://cn-sec.com/archives/1302424.html

发表评论

匿名网友 填写信息