一场与“默认密码”的惊心动魄较量
哎哟喂,兄弟们,今天咱不聊那些高大上的零日漏洞,也不扯什么复杂的内存马,咱们来点接地气的,但又特别容易让人栽跟头的——小众弱口令复现全过程,说实话,我一开始也没想到,就这么几个简简单单的数字和字母组合,居然能让我折腾一整天,心情跟坐过山车似的,憋不住想跟你们唠唠。

起因:一次偶然的“手贱”
事情是这样的,前两天我在测试一个边缘业务系统,就是那种好多公司都遗忘了的运维后台,本来嘛,我就是想看看登录接口有没有SQL注入,结果抓包的时候,突然发现登录逻辑里有个隐藏参数叫“debug_mode”,嘿,这玩意儿一下子就把我的好奇心给勾起来了,我寻思着,这怕不是个内部调试的后门?
于是乎,我脑子里瞬间闪过一个念头——弱口令,特别是那种小众弱口令,不是admin/123456这种烂大街的,而是带点特定规律的,比如admin@2023、test#123、或者干脆是设备型号加默认密码,我当时就一拍大腿,这种才叫“经典永流传”啊!因为很多厂商为了省事,出厂设置的默认口令都极具“工匠精神”,既包含大小写,又带特殊符号,但本质上还是弱口令。
高光时刻:指纹识别与字典的微妙配合
说干就干,我立刻开始复现全过程,第一步,我得确认这系统的“指纹”,不看不知道,一看吓一跳,这居然是个老掉牙的国产OA系统,版本号还是2016年的,我天,这都什么年代了,还在用这么小众的系统?不过转念一想,正是因为小众,市面上针对它的公开POC才少,安全人员往往容易忽略,嘿嘿,这不就给我留机会了嘛?
我赶紧翻了翻本地积累的一个“奇葩密码字典”,这里边全是我平时收集的各种设备默认密码和厂商测试账号,比如针对这个系统,我发现有个sysadmin/kaifa#2016的组合,这口令简直绝了,既有英文,又有开发拼音,还带年份,这谁猜得着?我迫不及待地在登录框里输入,按F12改了前端校验,点击登录。
哇塞!真的进去了!! 那一瞬间,我的心脏都漏跳了一拍,真的,比中了彩票还激动,映入眼帘的是一个“系统管理”面板,里面什么用户列表、数据库配置、甚至还有发送短信的接口,全都赤裸裸地摆在那,说实话,那一刻我有点飘了,没想到一个小众弱口令的杀伤力这么大,直接拿下了整个系统的最高权限,这要是被别有用心的人发现,后果不堪设想啊。
复现过程中的“坑”与反思
不过嘛,快乐总是短暂的,接下来的复现环节,我可是吃足了苦头,你们以为这就完了?图样图森破!我试图把这个漏洞过程完整记录,方便写报告,结果发现,这系统后台有个“操作日志”功能,它会记录每个账号的登录IP和操作行为,我要是直接用默认口令登录,不就等于在服务器上留了案底吗?哎呀,这可咋整?
没办法,我只好祭出我的“代理神器”,挂上代理池,模拟不同的IP地址去测试,可问题又来了,这系统的验证码刷新机制特别诡异,每隔30秒就变一次,而且还不支持OCR识别,我勒个去,这可把我给难住了,灵机一动,我突然想起之前扫描目录时发现有个/captcha/get的接口,好像存在时间戳漏洞,我试着用脚本去预测验证码,结果试了十几次,愣是没一次对的,当时我的内心是崩溃的,感觉就像在玩一个永远通关不了的游戏,气的我差点把键盘给砸了。
山重水复疑无路,柳暗花明又一村,后来我猛地发现,这系统的弱口令居然在双因子认证之前就生效了!也就是说,只要密码对,验证码随便乱填都能过?我带着怀疑的心态试了一下,把验证码字段置空,直接请求登录接口……好家伙,真的通了! 原来问题根本不在验证码,而是在于业务逻辑的顺序,只要登录接口没有先校验验证码,那么即使验证码错误,只要密码正确,依然会返回登录成功的Token,这是典型的逻辑漏洞叠加弱口令,杀伤力直接翻倍。
最后聊聊:弱口令为何如此“顽固”
兄弟们,经过这次小众弱口令复现全过程,我最大的感触就是:安全无小事,千万别小瞧任何一位“看起来无害”的默认密码,很多公司和厂商都会陷入一个误区,觉得只要密码足够复杂,比如加个特殊符号,就高枕无忧了,但实际上,像Test@123、Admin#2024这种有规律可循的口令,在小众系统里的命中率极高。
因为这类系统往往不常更新,管理员也不上心,密码从来没改过,你说气不气人?我就问你,你所在的公司,是不是偶尔也能翻出一两个那种“祖传”的测试账号?密码是不是就是那几套老掉牙的组合?说实话,我们做安全的,其实最怕的不是那种高强度加密,而是这种“防君子不防小人”的弱口令,一旦被别有用心的人利用,配合上一些小众系统的特定漏洞,那数据泄露简直就像喝水一样简单。
好啦,今天的碎碎念就到这里,这趟“冒险”虽然折腾,但收获还是挺大的,希望通过我这次的分享,能给大家提个醒:如果你们公司也有那种用了好几年都没人管的系统,赶紧去查查默认密码改没改,别等出事了,才后悔莫及,嘿嘿,说不定你们也能在排查中,发现点有意思的东西呢?下次见咯!