CVE-2024-36401 GeoServer 前台代码执行漏洞
CVE-2024-36401 GeoServer 前台代码执行漏洞0x01 简介GeoServer 是一个开源的地理信息服务器,用于发布和共享地理空间数据。它是由 GeoTools 库驱动的,GeoTools 是一个用于处理地理数据的 Java 库。GeoServer 允许用户从各种数据源(如 Shapefile、PostGIS、Oracle Spatial、ArcSDE 等)发布地理空间数据,并通过标准的 OGC(Open Geospatial Consortium)协议(如 WMS、WFS、WCS 等)进行访问。
0x02 漏洞概述CVE-2024-36401 是由于对 XPath 表达式错误的解析导致未授权的攻击者能够执行任意代码。
The GeoTools library API that GeoServer calls evaluates property/attribute names for feature types in a way that unsafely passes them to the commons-jxpath library which ...
CVE-2024-29824 Ivanti EPM SQL 注入复现与分析
CVE-2024-29824 Ivanti EPM SQL 注入复现与分析0x01 简介Ivanti Endpoint Manager (EPM) 是一款由 Ivanti 公司开发的综合性端点管理解决方案。它旨在帮助企业有效管理和保护其网络中的所有端点设备,包括桌面、笔记本电脑、服务器、移动设备和虚拟环境。
0x02 漏洞概述CVE-2024-29824 是未授权的 SQL 注入并可以执行系统任意代码。这么一看危害还挺大的,但是在官方的公告中提出的是:
An unspecified SQL Injection vulnerability in Core server of Ivanti EPM 2022 SU5 and prior allows an unauthenticated attacker within the same network to execute arbitrary code.
漏洞利用的条件是同一网络内的未授权用户才能 SQL 注入。
0x03 影响版本 version <= Ivanti EPM 2022 SU5
0x04 环境搭建下载安 ...
Rust 从 0 到 1 (生命周期、返回值、错误处理)
Rust 从 0 到 1 (生命周期、返回值、错误处理)生命周期是 Rust 特有的,在 Rust 中函数和变量有其作用域,在一个函数中可以嵌套作用域,如:
123456fn main(){ let a = 0; // a { let b = 2; // b } // end b } // end a
对于生命周期其实就是引用的有效作用域,大多数情况下无需手动声明生命周期,编辑器可以进行自动推导,当然也有无法推导的情况
悬垂指针和生命周期生命周期的主要作用是避免悬垂引用,它会导致程序引用了不该引用的数据,如:
12345678910{ let r; { let x = 5; r = &x; } println!("r: {}", r);}
在这里首先是 let r 没有初始化,在其次是 r 引用了内部作用 ...
OpenMetadata 身份认证绕过漏洞与多个表达式注入漏洞复现
OpenMetadata 身份认证绕过漏洞与多个表达式注入漏洞复现0x01 简介OpenMetadata是一个用于数据发现、数据沿袭、数据质量、可观察性、治理和团队协作的一体化平台。它是发展最快的开源项目之一,拥有充满活力的社区,并被各行业垂直领域的众多公司采用。OpenMetadata 由基于开放元数据标准 API 的集中式元数据存储提供支持,支持各种数据服务的连接器,可实现端到端元数据管理,让您可以自由地释放数据资产的价值。
0x02 漏洞概述OpenMetadata 容易受到多个 SpEL 表达式注入和身份验证绕过的攻击,从而导致预身份验证远程代码执行。相关的漏洞编号如下:
CVE-2024-28253
CVE-2024-28254
CVE-2024-28845
CVE-2024-28848
CVE-2024-28255(Authentication Bypass)
0x03 影响版本OpenMetadata < 1.2.4
0x04 环境搭建本次复现用到的环境为了 OpenMetadata 1.2.2,可以 Github 下载 docker-compose.yml 一 ...
VxWorks 启动流程 & 溢出分析
VxWorks 启动流程分析以及溢出测试在前面的文章成功编译并启动了 VxWorks,这边篇文章将介绍 VxWorks 的启动流程,为了更好的研究启动流程我们使用 gdb 对 vxworks 进行调试。
1. 编译可调式的 vxworks首先新建 VSB 项目,配置如图 1-1 所示:
图 1-1 新建 BSP
下一步为 BSP 项目添加 DEBUG 配置选项,操作步骤 如下:
在 Project Explorer 视图中展开 BSP 项目
右键单击Source Build Configuration ,然后选择 Edit Source Build Configuration
搜索 debug 关键字,选择 Global Debug Flag 将 value 改为 y
最终效果如图1-2 所示:
图 1-2 配置 VSB debug
最后构建 VSB。构建完 VSB 之后创建 VIP,如图 1-3 所示:
图 1-3 新建 VIP
在 VIP 中需要配置 INCLUDE_DEBUG_AGENT 和 INCLUDE_DEBUG_AGENT_START,可以搜索 DEB ...
JumpServer 漏洞复现(CVE-2024-29201&CVE-2024-29202)
JumpServer 漏洞复现(CVE-2024-29201&CVE-2024-29202)0x01 简介JumpServer 是广受欢迎的开源堡垒机,是符合 4A 规范的专业运维安全审计系统。
0x02 漏洞概述CVE-2024-29201 远程代码执行漏洞,该漏洞可绕过 JumpServer 的 Ansible 中的输入验证机制,在 Celery 容器中执行任意代码CVE-2024-29202 Jinin2 模板注入漏洞,该漏洞是有 JumpServer 的 Ansible 中存在 Jinja2 模板注入,在 Celery 容器中执行任意代码。值的注意的是:两个漏洞利用的条件都需要账号且至少有一个资产。
0x03 影响版本v3.0.0 <= JumpServer <= v3.10.6
0x04 环境搭建首先下载官方提供的脚本,下载后编辑 quick_start.sh,将脚本中的 VERSION 修改为存在漏洞版本,如:V3.10.6。如下图所示:
等待服务启动,启动完成后访问 http://ip/
JumpServer 默认账号密码为 adm ...
GitLab任意用户接管漏洞复现(CVE-2023-7028)
GitLab任意用户接管漏洞复现(CVE-2023-7028)0x01 简介GitLab 是一个基于 Git 版本控制系统的开源软件平台,用于软件开发和协作。它提供了代码仓库管理、问题跟踪、持续集成、代码审查等功能,旨在帮助团队高效地协作和管理软件开发项目。
0x02 漏洞概述CVE-2023-7028 GitLab 任意用户密码重置漏洞,攻击者可以利用忘记密码功能,构造恶意请求获取任意账号密码重置链接从而重置密码。因此漏洞的利用条件为:
任意用户的邮箱
邮件功能正常使用
总得来说利用条件还是有点难度的。
0x03 影响版本16.1 <= Gitlab CE/EE < 16.1.6
16.2 <= Gitlab CE/EE < 16.2.9
16.3 <= Gitlab CE/EE < 16.3.7
16.4 <= Gitlab CE/EE < 16.4.5
16.5 <= Gitlab CE/EE < 16.5.6
16. ...
CVE-2024-21893 Ivanti Connect Secure SSRF to RCE
CVE-2024-21893 Ivanti Connect Secure SSRF to RCE0x01 简介Ivanti Connect Secure 为远程和移动用户提供了一个无缝的、具有成本效益的SSL VPN 解决方案,使他们能随时随地从任何可上网的设备访问企业资源。
0x02 漏洞概述CVE-2024-21893 是存在 Ivanti Connect Secure SAML 组件中的 SSRF 漏洞,该漏洞主要是由于使用存在漏洞第三方库,并且第三方库没有及时的更新导致的,可以绕过 CVE-2024-21887 命令注入漏洞的补丁,达到未授权 RCE 的目的。
CVE-2024-21887 具体分析可以查看 dnslaoge 师傅的分析,总结一下就是 /api/v1/license/keys-status/ 存在命令注入。
0x03 影响版本Ivanti Connect Secure(9.x、22.x)Ivanti Policy Secure(9.x、22.x)Ivanti Neurons for ZTA SAML组件(这个只能SSRF)
0x04 环境搭建本次复现使用 Iva ...
Rust 从 0 到 1 (泛型和特征、集合类型)
Rust 从 0 到 1 (泛型和特征、集合类型)泛型在我们的编程生涯中,经常遇到同一功能的函数处理不同的类型数据,如整合的加法、浮点数的加法等,在不支持泛型的语言中你需要:
123456789fn add_i8(a:i8, b:i8) -> i8 { a + b}fn add_i32(a:i32, b:i32) -> i32 { a + b}fn add_f64(a:f64, b:f64) -> f64 { a + b}
在编程的时候,我们经常利用多态。通俗的讲,多态就是好比坦克的炮管,既可以发射普通弹药,也可以发射制导炮弹(导弹),也可以发射贫铀穿甲弹,甚至发射子母弹,没有必要为每一种炮弹都在坦克上分别安装一个专用炮管,即使生产商愿意,炮手也不愿意,累死人啊。所以在编程开发中,我们也需要这样“通用的炮管”,这个“通用的炮管”就是多态。
因此呢,泛型就是一种多态。泛型主要是为了减少代码量,避免程序臃肿,同时也可以丰富语言本身的表达能力。在 Rust 中泛型的声明如下:
123fn a ...
Rust 从 0 到 1 (流程控制,匹配模式,方法)
Rust 从 0 到 1 (流程控制,匹配模式,方法)流程控制在所有的编程语言都有 if else 流程控制语句,如果没有请告诉我!
if elseRust 中的 if else 语法如下:
123456let condition = true;if condition { // run A} else { // run B}
读作:若 condition 的值为 true,则执行 A 代码,否则执行 B 代码。
在 Rust 中 if else 还有一种用法是:
12345678let condition = true; let number = if condition { 5 } else { 6 }; println!("The value of number is: {}", number);
这里的代码解释为:如果 condition 为真,那么 number 的值为 5 否做为 6。这种用法 ...