前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[TDSQL] 忘记赤兔密码怎么办? (知道控制台IP就能直接修改赤兔密码?)

[TDSQL] 忘记赤兔密码怎么办? (知道控制台IP就能直接修改赤兔密码?)

原创
作者头像
大大刺猬
发布2024-04-09 17:39:00
1800
发布2024-04-09 17:39:00
举报
文章被收录于专栏:大大刺猬大大刺猬

导读

经常使用控制台, 还是不会忘记密码的, 但有时候偏偏就忘了(设置密码的时候太复杂了....), 或者被人修改了密码, 或者就是长期未使用, 忘记了密码. 这时候咋办呢?

分析过程

我们知道可以通过如下api获取 后台数据库/监控库的 账号密码信息. 这一步是不需要任何权限的, (除了网络)

代码语言:bash
复制
curl http://YOUR_IP_ADDR/tdsqlpcloud/index.php/api/install/get_db_info

然后我们就可以登录数据库了

找到相关账号信息表 tdsqlpcloud.t_sys_user 然后查看该表信息

对比发现, 老版本使用的 user_pwd (varchar)保存的密码. 新版本使用的 user_pwd_2 (blob) 保存的密码.

也就是存在两种加密方式.

不急, 我们一个个来.

先看老版本的加密方式:

我们知道赤兔是php写的, 那么我们就可以直接找到相关的加密文件, 查看其加密方法, 赤兔默认是安装在 /data/website/tdsqlpcloud 路径下的. 基本上grep -r 就能找到了. 我这里就不演示查找过程了. 假设已经找到了 叫: www/helpers/MY_common_helper.php. 我们查看该文件, 找下验证方式

确实存在两种验证方式.

老密码验证

第二种看起来简单点(md5). 对比下老版本的这个文件, 发现就是老版本的加密方式. 然后找到该函数查看其加密方式如下:

加密很简单, 是 密码和常量做md5, 然后做base64 然后再和常量做md5. 这种方式使用mysql就能实现.

方法1:

所以我们直接给admin账号加个老密码吧, 使用如下sql即可.

代码语言:sql
复制
set @newpassword="123456";
update tdsqlpcloud.t_sys_user set user_pwd=md5(concat(to_base64(md5(concat("xxx",@newpassword))),"xxxxxx")) where user_id=1;
select * from tdsqlpcloud.t_sys_user\G

然后查看数据, 发现修改成功,

但是控制台还是使用的新的验证方式, 所以我们还要修改下 (直接注释下即可)

然后验证下

发现登录成功.

方法2:

但还是太麻烦了. 还得修改php配置文件.... 我们发现代码里会先判断是否存在新密码. 那么我们就可以直接把新密码置为空.

这样就只判断旧密码了.

代码语言:sql
复制
set @newpassword="123456";
update tdsqlpcloud.t_sys_user set user_pwd=md5(concat(to_base64(md5(concat("xxx",@newpassword))),"xxx")), user_pwd_2=null where user_id=1;
select * from tdsqlpcloud.t_sys_user\G

然后我们再登录试下

发现登录成功.

新密码验证

虽然修改老密码已经能实现登录. 但还有个新密码摆在那的. 我们也来看一看.

和常量 做sha256, 再做AES-256-CBC 然后又和常量做hash

根老密码差不多的方式, 只是md5换为了sha256, base64换为了AES-256-CBC 用sql来实现的话, 会比较复杂, 可以用python或者shell来实现. 算逑, 太麻烦了, 有兴趣的自己去整吧.....

shell使用openssl可以参考我之前的那个 mysql_config_editor 脚本

总结

就此, 我们可以在不知道控制台密码的时候, 修改控制台密码 然后登录了. 其实还顺便突破了密码复杂度要求. 我真棒!

取消验证码我好像也写过, 又好像没写过....

既然知道了赤兔/控制台IP后就能直接修改 登录密码了. 那么登录控制台的这个密码验证还有用么.... 赤兔登录还安全么?

其实可以用二进制的工具来实现加密, 至少不会直接暴漏加密方法出来.

涉及到安全, 我就不提供一键脚本了. 相关的key也是马赛克了的.

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 导读
  • 分析过程
    • 老密码验证
      • 方法1:
      • 方法2:
    • 新密码验证
    • 总结
    相关产品与服务
    云数据库 MySQL
    腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
    http://www.vxiaotou.com