默认密码与JWT伪造:一场“我以为安全了”的惨痛教训
哎,说到这个话题,我真是又气又好笑,前几天帮一个朋友排查他们公司的漏洞,结果一上来就发现个“大宝贝”——管理后台的默认密码居然还是admin/admin888!我当时就忍不住吐槽:“兄弟,这都2025年了,你们家后台还穿着开裆裤呢?”朋友还一脸无辜地说:“哎呀,反正内网嘛,没人知道……” 得,就这句“没人知道”,差点让他们的用户数据全裸奔了。
你以为的“安全边界”,在默认密码面前就是纸糊的墙
说实话,每次看到有人用默认密码,我都想隔着屏幕摇醒对方,你知道吗?那些扫描器根本不会跟你讲武德,它们每天24小时在公网上“逛街”,专门找那些默认密码没改的登录框,一旦撞上,就像你家钥匙插锁孔里没拔下来,小偷进门连撬锁的功夫都省了,我那个朋友的公司,就因为那个admin账号,被撞库工具直接怼开了大门,登录日志里那一串串陌生IP,看得我头皮发麻。
这还不算完,更崩溃的在后面呢,拿到管理员权限后,攻击者发现他们系统的JWT(JSON Web Token)签发密钥居然是硬编码在代码里的——还是那个默认的secret字符串!唉,我当时就无语了,这哪是纵深防御啊,这是给攻击者递梯子啊!
JWT伪造:当“身份证”可以随便打印
咱们得聊聊JWT伪造这回事,你知道JWT长什么样吧?网上那些“无状态认证”吹得天花乱坠,但关键是——它就是个由服务端签名的“身份证”,如果攻击者知道签发密钥(比如那个默认的secret),他就能自己伪造一张完美的“身份证”,想当管理员就当管理员,想冒充谁就冒充谁。
我之前遇到过一桩案子,开发者图省事,在JWT的载荷里直接存了"role": "user",然后密钥用默认的password,结果你猜怎么着?我用Burp Suite把role改成admin,再用那个默认密钥重新签名一下,直接以管理员身份登录了,整个过程不到三十秒,我当时自己都愣了一下——说好的“加密安全”呢?这分明是“裸奔”啊!
你知道吗,那种感觉就像你辛苦攒钱买了个保险柜,结果说明书上写着“初始密码123456,请及时修改”,而你真的就没改,攻击者不是技术多牛,而是你太“配合”了。
情绪到了:别让“懒”成为安全的最大敌人
说真的,每次看到这些漏洞,我心情都很复杂,一方面替客户心疼数据,一方面又恨铁不成钢。默认密码和JWT密钥硬编码,这俩问题根本不需要什么高深黑客技巧,就是拿扫描器扫一扫,翻翻代码仓库就能发现的“低级错误”,但恰恰是这种低级错误,造成的破坏往往是毁灭性的。
我记得还有一次,有个小兄弟跟我辩解说:“老师,我们这是内部系统,JWT密钥不改也没事吧?” 我当时就回了一句:“你猜你的数据库备份文件为什么会在暗网上卖?” 他沉默了,唉,安全这行,最怕的就是“我觉得”和“我认为”,你觉得你内网安全?攻击者可能比你更了解你的内网。
所以啊,我真心劝各位一句:拿到任何设备、任何系统、任何框架,第一件事就是改掉默认密码!检查代码仓库里有没有硬编码的JWT密钥或加密盐值,这俩动作花不了十分钟,但能挡住90%的“薅羊毛式攻击”。
真的,别等到数据被拖库了、服务器变矿机了,才拍着大腿后悔:“哎呀,我当时咋就没改密码呢!” 那种滋味,可太难受了。

悄悄说一句: 如果你对网络安全感兴趣,想学点真本事,无论是渗透测试还是代码审计,都可以加QQ:3382688692,咱们聊聊实战技巧,保证比你看那些枯燥的文档有趣多了!

