Ladon 9.2.2 2022.9.18
[ ]PrinterPoc 打印机PJA任意代码执行漏洞批量检测
[1.3 建议优先使用Ladon48 ]CiscoScan支持tls
[ ]OnlinePC CMD输出格式化
[71 ZTE 222 ]MAC特征 新增ASUS
[ ]FindIP 模糊匹配IP段
[1.2 ]WebScan 更新tls
[ ]wget/HttpDownLoad github文件自动修改为raw地址下载
[ ]DraytekPoc TimeOut
[ ]DraytekExp TimeOut
前言
2021年网络安全研究人员披露了影响惠普公司 150 种不同多功能打印机长达 8 年的安全漏洞,攻击者可以通过利用这些漏洞来控制这些受影响的打印机设备,以此窃取敏感信息并渗透到企业内部网络以发起其他网络攻击。当然本文所涉及的漏洞至少在2017年已公开,但现在公网上存在漏洞机器依旧非常多,硬件嘛而且是打印机这种边界设备,一般也没人管。
0x001 通过Snmp协议探测打印版本
前提条件目标开启snmp协议,不开启或版本不对应就探测不到,和有些机器禁Ping一样,未开启或禁止SNMP协议,也无法探测。
Ladon noping ip.txt SnmpScan
0x002 通过WebScan模块识别打印机
如下图,蓝色箭头指向为打印要型号版本,WebScan模块通过HTTP协议访问打印机的WEB服务探测其版本,前提条件打印机带有WEB功能
Ladon noping ip.txt WebScan
0x003 通过WhatCMS模块识别打印机
如下图,黄色部份指向为打印要型号版本,WhatCMS模块通过HTTP协议访问打印机的WEB服务探测其版本,前提条件打印机带有WEB功能。与WebScan区别在于,该模块会探测更多端口,以及SSL、识别CMS等
Ladon noping ip.txt WhatCMS
0x004 通过SSLinfo模块识别打印机
如下图,蓝色箭头指向为打印要型号版本,SSLinfo模块通过tls协议访问打印机的WEB服务探测其版本,前提条件打印机带有WEB功能并且启用HTTPS
Ladon noping ip.txt SSLinfo
0x005 通过PrinterPoc模块探测
该模块通过TCP协议向9100端口发送PJA指令探测版本,并测试列目录、读取passwd文件证明其存在任意代码执行,该模块会回显对应漏洞编号。
Ladon noping 192.168.1.8 PrinterPoc
PS:实战不要一根筋,只会用一个模块探测,这个协议探测不到,不代表整个工具不能用,换个协议试试,可能防火墙拦这个协议,另一个不拦呢,还有就算没有防火墙,这个设备型号不具备协议功能呢?
0x006 通过PrinterPoc模块批量检测漏洞
相关搜索引擎显示全网大约8万打印机开放9100端口,可通过Ladon批量验证哪些IP存在PJA漏洞,哪些可以列目录查看打印内容,哪些穿越目录读密码
Ladon noping ip.txt PrinterPoc
漏洞利用
在研究打印机前有必要熟悉打印语言,网上各种介绍打印机语言,大家看的会比较混乱,比如有时候是打印机描述语言,有时候又叫打印机控制语言。其实打印机语言按分类是有两类,一种是页面描述语言(PDL),另一种是嵌入式语言(Escape码语言),而HP的PCL控制语言和PostScript(以下简称 PS)都属于PDL页面描述语言。
9100端口
也被称为“raw printing”,因为它使用TCP 9100端口进行网络打印操作,通常在CUPS和Windows系统中使用。与LPD,IPP和SMB协议需要使用打印机控制语言才能执行打印操作相比,通过9100端口发送的所有数据都由打印设备直接处理,并直接将打印结果反馈到客户端,包括状态和错误消息。
编程原理
看了相关资料,发现整个利用过程非常简单,即通过TCP发送PJA指令即可,通过Python这个三四岁小孩都能学会的编程语言,只用几行代码即可实现。
由于PY只是测试单个,我们需要配置ini脚本,使用Ladon批量检测
Printer.ini
[Ladon]
exe=python.exe
arg=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 单个IP
Ladon ip.txt test.dll IP列表
Ladon http://192.168.1.8 test.dll 单个URL
Ladon 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接口的打印机,获取打印机的环境变量、文件系统和重要目标文件。
可以看到这里探测出了设备类型为惠普的M880彩色打印机。成功连接到该打印机
不同的语言pret会提供不同的命令可用。所以在刚开始使用pret时,可以先使用help查看可用命令。除此之外也可以使用help+命令来显示某命令的详细用法。
Put:可以将文件上传到打印机上,向linux打印机上传bot来进行控制。
Mirror: 直接将打印机中的所有文件拷贝的本地,方便进一步的分析,寻找如打印记录的文件。
Destroy: 十分危险的功能,尝试的时候应当慎用,对打印机的NVRAM(一种RAM)造成物理性损坏。
利用pret可以对打印机进行拒绝服务、提权、打印作业越权访问、信息泄露、远程代码执行等测试,具体清单和用法可以参照官方的wiki
其它功能
[u]CiscoScan新增SSL探测版本 支持tls 1.3 有些思科也要4.8才可访问
SSLinfo同理
Ladon下载模块
[u]wget/HttpDownLoad github文件自动修改为raw地址下载,这样就不用手动点击获得raw地址了
Ladon48 wget https://downloads.metasploit.com/data/releases/metasploit-latest-windows-x64-installer.exe
Ladon48 wget https://raw.githubusercontent.com/k8gege/K8tools/master/wmiexec.vbs
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)
欢迎大家积极反馈BUG,注意提问说清楚环境情况。最好有图有真像,关键IP或机器名,打码就是了嘛,上个图有多难?
原文始发于微信公众号(K8实验室):Ladon 9.2.2多款打印机任意代码执行漏洞检测
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论