|
凌晨两点,透攻我盯着屏幕上跳动的击实光标,目标服务器的透攻80端口刚刚吐出一个脆弱的响应头。Apache 2.4.49,击实版本号暴露得一清二楚。透攻 这个版本有个知名的击实路径遍历漏洞——CVE-2021-41773。不是透攻那种需要花哨技巧的利用,纯粹是击实开发者忘了检查路径中的特殊字符。我敲下那行经典的透攻curl命令,把请求路径里的击实..%2f编码塞进URL。几秒钟后,透攻服务器回传了/etc/passwd的击实内容。root用户赫然在列。透攻 渗透测试的击实乐趣就在这种时刻——你明明没做什么惊天动地的事,但系统就把底牌掀给你看了。透攻 接下来的动作顺理成章。既然能读文件,就试试写文件。CGI模块恰好是开启状态,我构造了一个包含webshell的POST请求,把PHP代码塞进Apache的cgi-bin目录。整个过程像开锁匠在试最后一把钥匙,咔嗒一声,门开了。 拿到shell后我做的第一件事不是提权,而是看了一眼系统日志。管理员最后一次登录是三天前,期间没有任何异常告警。这让我有点失望——真正有价值的渗透测试,往往需要和目标管理员斗智斗勇,而不是单纯欺负一台无人值守的服务器。 这台机器上跑着一个老旧的论坛程序,数据库里存着几万条用户信息。我顺手导出了一份密码哈希,用hashcat跑了几分钟,弱口令像熟透的果子一样落下来。admin的密码是admin123,user01的密码是password。你没法不感慨,人类对密码的想象力贫瘠得惊人。 整个攻击链路耗时不到半小时,技术难度不高,但每一步都踩在真实的配置疏漏上。路径穿越是因为Apache没打补丁,写shell是因为CGI权限没收紧,弱口令是因为管理员懒得想复杂密码——全是老生常谈,可老生常谈之所以成为老生常谈,就是因为它们反复发生。 事后我清理了痕迹,删掉webshell,恢复被修改的文件时间戳。这是渗透测试的基本礼仪——你闯进别人家里转一圈,至少别把门踹坏。 说实话,比起那些需要堆砌几十个exp的复杂攻击链,这种直截了当的漏洞利用更让我着迷。它像一面镜子,照出运维人员最日常的疏忽。系统安全从来不是靠某个神级防火墙撑起来的,而是靠无数个小细节的堆叠。任何一环松懈,攻击者就能顺着裂缝摸进来。 你问我为什么不挑个更难的目标?因为现实世界里的攻击者没那么多耐心,他们专挑软柿子捏。这台服务器就是那颗软柿子——而我,只是比管理员更早发现了这一点。 |