#584·litemall

[vulnerability] 管理员登录缺少速率限制和验证码强制 (CWE-307)

作者: s1mple-top创建于 2026年9月12日更新于 2026年9月12日

□ 总结

`/admin/auth/login'终点没有提供防自发保护: Captcha 核查已被移除( 已解析), 重复失败没有 触发任何账户关闭, 且没有限制 IP/ 账户级别的利率 。 因此攻击者可以进行无限制的网络野蛮攻击 管理员证书并最终接管管理员后端.

  • Type:认证保护薄弱/过度认证尝试限制不当
  • ** CWE**:CWE-307
  • ** 严重性**:中度(高与默认证书结合)
  • ** 构成部分**:`litectall-admin-api'

□ 受影响的终点 POST /admin/auth/日志 源文件 :

Political-admin-api/src/main/java/org/linlinjava/litecall/admin/web/AdminAuth Captain.java 存档副本.

□ 细节

  1. 对Captcha的核查作出评论

在“AdminAuth Captain.login(.)”中,既分析也比较 对`代码 ' 字段作了评论。 Captcha 仍然生成并写入 ,但是在登录时它从未读取或检查(“仅生成,从未” 校验":

贾瓦 公共对象登录( @ requestBody String body, HttpServlet request) { 字符串用户名 = JacksonUtil.parseString(机构,"用户名"); 字符串密码 = JacksonUtil.parseString(正体,"密码"); // 字符串代码 = JacksonUtil.parseString(body,"code";) ;

如果 (StringUtils.isEmpty(用户名) QQ StringUtils.isEmpty(密码)) { 返回反应Util.badArgument (); {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? // 如果 (StringUtils.isEmpty(代码)) { // 返回回复Util.fail(ADMIN INVALID KAPTCHA REQUIRED,"验证码不能为空"); //}]. / 请检查url=值 (帮助). //届会 = 要求。 // String kaptcha = (string) session. getAttize ("kaptcha") ; 2. / 如果 (Object. require NonNull(code).compare ToIgnoreCase(kaptcha)!) = 0) {(代码) // 返回回复Util.fail(ADMIN INVALID KAPTCHA,“ ”,Do Kaptcha(请求); //}].

当前用户=securityUtils.getSubject(); 尝试{ 当前用户名.login(新用户名PasswordToken(用户名,密码)); {\fn华文仿宋\fs16\1cHD1D1D1}你... {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?


注:前端一致更改——
`litectall-admin/src/views/login/index.vue' 封面形式项目也被包起来
在 HTML 注释中,“登录规则”只包含“用户名”/“密码词”。
因此,这不是** 前端/后端不一致; 顶端特征一直是
两端都禁用。 安全后果是这里最重要的:没有
登录端留下了人与人之间的接触障碍.
2. 无故障关闭

`认证Realm.doGet认证Info (.)' 只投
密码上的 " 未知账户例外 " 。 没有失败的尝试计数器,
没有锁定,也没有“RetryLimit”/“HashedCreditis Matcher”配置
三郎连锁.

3. 不限制费率

端点和Shiro过滤链都没有应用任何 IP 或账户级别
限制利率。

4. 默认种子证书(影响放大器)

`ltemall-db/sql/ltemall data.sql' 船舶违约管理账户:

管理员123 5 . . . . . . .

内容来源: linlinjava/litemall