|
凌晨两点,渗透我盯着屏幕上那个熟悉的靶机登录框,手指悬在键盘上迟迟没落下去。网站这已经是渗透第三次尝试了,前两次的靶机字典攻击全部失败,账号锁定倒计时还剩三分钟。网站我深吸一口气,渗透换了思路——不再猜密码,靶机而是网站去看那个被我忽略了一整天的“忘记密码”链接。 靶机网站是渗透专门给安全测试练手的,上面故意留了几个漏洞,靶机但真正入口藏得比想象中深。网站绕过密码重置逻辑花了四十分钟,渗透最后靠的靶机是把请求里的用户参数从数字改成数组,PHP的网站松散比较直接让我用admin身份重置了密码。登录进去那一刻,屏幕右下角的时钟显示2:47,我居然不困了。 后台是个老旧的CMS,版本号就写在页脚里,连伪装都懒得做。我翻了翻公开漏洞库,找到个SQL注入点,在文章搜索框里敲了个单引号,页面直接吐出一长串报错——数据库名、表前缀,全裸奔了。用sqlmap跑了一遍,dump出用户表,密码哈希是MD5,彩虹表一查就出明文。这感觉就像发现对方把钥匙藏在门口垫子下面,你甚至不需要撬锁技巧。 但真正有意思的是提权那一步。拿到后台权限后,我试着上传一个反弹shell的PHP文件,结果被WAF拦了,提示“非法文件类型”。我改后缀为.jpg,在文件头塞了GIF89a的标识,再用短标签<?=system($_GET['cmd']);?>绕过内容检测。上传成功。访问那个图片链接时,我命令执行了id,返回的是www-data用户。权限不够,但能读配置文件和日志。 翻日志看到有人在凌晨三点登录过FTP,密码明文写在备份脚本里。我顺着那条线索找到内网另一台机器,SSH进去后sudo -l居然显示可以无密码执行所有命令。那一刻我反而有点失落——这靶机设计者把漏洞排得太整齐了,像教学楼的楼梯,每层转角都贴好了安全出口标志。 整个过程花了六个小时,实际漏洞利用时间不到四十分钟,其余时间全耗在信息收集和试错上。渗透测试从来不是电影里那种噼里啪啦敲键盘的炫技,大部分时候是枯燥的翻文档、比对版本号、构造畸形请求。真正攻破的那几秒,心里也没什么成就感,更像解开一道难缠的数学题——啊,原来陷阱在这里。 后来我把整个路径写成了报告,标注了每一处风险的修复建议。靶机网站的服务器在我结束测试后自动重置了,所有痕迹清空。但那个凌晨的体验留了下来:安全不是靠某个强密码或防火墙撑起来的,而是靠无数个“没想到”填平的坑。你永远不知道攻击者会从哪个被忽略的角落爬进来,就像你永远猜不到自己会在哪一步突然卡住。 |