[Security] Default admin_token硬编码在源码中,同时作为JWT签名密钥
项目
vastsa/FileCodeBox (8.3k ⭐)
严重度
🔴 高危
描述
core/settings.py 中 DEFAULT_CONFIG 将 admin_token 硬编码为 "FileCodeBox2023"。
该值有两个用途:
- 管理员登录密码 —
apps/admin/views.py 中 verify_password(data.password, settings.admin_token)
- JWT签名密钥 —
apps/admin/dependencies.py 中 hmac.new(settings.admin_token.encode(), ...) 用于签名和验证所有admin JWT token
影响
攻击者知道默认密码 FileCodeBox2023 即可:
- 登录后台,查看/删除所有文件
- 伪造任意JWT token(因为这是签名密钥),绕过登录直接访问API
- 如果管理员改了密码但实例未重启,旧JWT token仍然有效(密钥来自
settings.admin_token)
代码位置
core/settings.py L42:
"admin_token": "FileCodeBox2023",
apps/admin/views.py — 密码验证:
if not verify_password(data.password, settings.admin_token):
raise HTTPException(status_code=401, detail="密码错误")
apps/admin/dependencies.py — JWT签名:
signature = hmac.new(
settings.admin_token.encode(), f"{header}.{payload}".encode(), "sha256"
).digest()
建议修复
- 安装时生成随机
admin_token,写入环境变量或配置文件
- 或强制用户在首次启动时设置
- JWT签名密钥应与登录密码分离
[Security] Default admin_token硬编码在源码中,同时作为JWT签名密钥
项目
vastsa/FileCodeBox (8.3k ⭐)
严重度
🔴 高危
描述
core/settings.py中DEFAULT_CONFIG将admin_token硬编码为"FileCodeBox2023"。该值有两个用途:
apps/admin/views.py中verify_password(data.password, settings.admin_token)apps/admin/dependencies.py中hmac.new(settings.admin_token.encode(), ...)用于签名和验证所有admin JWT token影响
攻击者知道默认密码
FileCodeBox2023即可:settings.admin_token)代码位置
core/settings.py L42:
apps/admin/views.py — 密码验证:
apps/admin/dependencies.py — JWT签名:
建议修复
admin_token,写入环境变量或配置文件