|
凌晨两点,网站我盯着终端里滚动的入侵数据流,手心全是渗透汗。目标是网站一所高校的教务系统,不是入侵要偷成绩,纯粹想验证那个漏洞是渗透不是真的存在——CVE-2021-44228,Log4j2的网站远程代码执行。 扫描器扫了半小时,入侵没找到直接入口。渗透教务系统用的网站是老掉牙的Struts2框架,但补丁打得很勤。入侵我换了个思路,渗透去翻他们挂在子域名下的网站旧版OA系统。子域名是入侵admin-backup-2019,DNS解析记录还活着,渗透服务器上跑着Tomcat 8.0.24——这个版本对CVE-2017-12615免疫,但有个目录穿越漏洞没修。 直接构造URL:/files/..%c0%af..%c0%afWEB-INF/web.xml。服务器返回了403,但错误页面泄露了绝对路径。/opt/tomcat/webapps/ROOT/。好,知道路径就好办。上传一个JSP小马,文件名用shell.jsp%20,末尾加空格绕过黑名单。浏览器访问,返回200。我进去了。 拿到shell的第一件事不是翻数据库,而是看/etc/passwd。管理员账号是root,密码哈希用的是SHA-512,但系统里有个备份脚本,明文存着MySQL的root密码——就是“admin@123”。这密码弱得让人想笑,可它偏偏就是真的。登录数据库,导出user表,发现密码字段是MD5加盐,但盐是固定的“kali”。彩虹表直接秒破。 整个过程没触发任何告警。不是防护弱,是没人看日志。那个OA系统的access log已经三个月没轮转了,文件大小停在2.1GB。管理员大概从来没想过,攻击者会从2019年的旧系统打进来,绕过所有针对主站的WAF规则。 后来我把漏洞报告提交给CNVD,附上了修复建议:删掉那个子域名,升级Tomcat,改掉数据库密码。对方回复“已收到”,一周后漏洞修复了。但那个备份脚本还在,只是密码换成了“admin@456”。 说真的,大多数“入侵”不是靠0day,而是靠管理员偷懒。一个废弃的子域名,一个弱密码,一个没人看的日志文件——就够翻墙入室了。Kali里的工具只是加速器,真正打开门的,是人的惰性。 我用Kali的次数越多,越觉得它像一把瑞士军刀——能撬锁,能拧螺丝,也能削苹果。关键在于持刀的人想干什么。那次渗透之后,我给自己的服务器加了两条规则:第一,任何子域名超过90天不更新就自动下线;第二,密码管理器生成的密码,绝不手动修改。经验是用别人的教训换来的,这比读十本安全书籍都管用。 |