青龙面板command-run接口存在鉴权绕过:可获取面板账户密码、执行任意命令

青龙面板command-run接口存在鉴权绕过:可获取面板账户密码、执行任意命令-渗透云记 - 专注于网络安全与技术分享
青龙面板command-run接口存在鉴权绕过:可获取面板账户密码、执行任意命令
此内容为付费阅读,请付费后查看
100积分
一经购买概不退款
代码提供技术支持
付费阅读
图片[1]-青龙面板command-run接口存在鉴权绕过:可获取面板账户密码、执行任意命令-渗透云记 - 专注于网络安全与技术分享

漏洞描述

攻击者可在绕过身份鉴权的情况下,通过特定接口执行任意系统命令,进而获取管理员账号密码等敏感信息,对系统安全构成严重威胁。

漏洞原理

该漏洞源于青龙面板的身份验证机制存在缺陷,具体体现在以下代码逻辑中:

// back/loaders/express.ts
path: [...config.apiWhiteList, /^\/(?!api\/).*/]

上述正则表达式的配置存在问题。系统对api白名单的处理采用了严格的全小写匹配机制,当请求路径不以/api/开头时,会直接绕过JWT(JSON Web Token)校验。

进一步分析发现,自定义鉴权中间件使用了如下判断逻辑:

if (!['/open/', '/api/'].some((x) => req.path.startsWith(x))) {
  return next();
}

该逻辑同样采用严格的纯小写路径前缀匹配,在实际应用中存在安全隐患。

Express框架默认采用大小写不敏感的路由匹配机制。意味着/API/这样的路径既能绕过令牌校验,又能成功匹配到/api/路由,从而完全绕过所有身份验证机制。

最终,通过app.use(config.api.prefix, routes())的配置,攻击者可以随意调用后端API接口。

资产测绘

quake:

port:"5700" AND favicon: "6f7911cfc55bcdc925420225b931ee60"

漏洞poc

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容