游客发表
上周帮朋友看一台暴露在公网的测试机,SSH 端口 22 开着,渗透常密码是渗透常 admin123。从发现到拿到 root,渗透常一共花了不到四分钟。渗透常不是渗透常什么高级漏洞,就是渗透常最普通的弱口令爆破。这事让我觉得,渗透常很多人对“渗透”的渗透常理解还停留在电影里敲几行代码就黑掉五角大楼的阶段,而真实的渗透常渗透测试,八成以上的渗透常突破口都来自那些你根本懒得看一眼的常识性错误。
端口扫描永远是渗透常第一步。nmap 跑一遍,渗透常看到 22、渗透常80、渗透常3306、6379 这些端口大剌剌地开着,心里就有数了。有次扫到一个 6379,Redis 未授权访问,直接写 SSH 公钥进去,连密码都不用。你说这算漏洞吗?算,但更准确地说,是运维人员忘了改默认配置。Redis 默认绑定 0.0.0.0 且无密码,这个“默认”坑了多少人。我见过一个生产环境,Redis 里存着 session,攻击者连上去直接 keys *,用户登录态全泄了。
弱口令这事更不用说了。很多人觉得“我密码设得够复杂”,但架不住内网里到处是 root/root、test/test。有次做内网横向,用 hydra 跑了一遍 SMB,十分钟出结果——二十多台机器,密码全是 P@ssw0rd。你说这怪谁?怪员工懒?怪管理员没强制策略?都怪,但渗透测试员只看结果:能进去就行。
文件上传也是重灾区。前端校验个 .jpg 后缀就以为万事大吉,后端连 MIME 类型都不查。改个包,shell.php.jpg 传上去,配合解析漏洞直接 getshell。我见过最离谱的,上传目录还能直接访问,返回的路径里连文件名都没改,/uploads/2024/shell.php,浏览器一敲就弹计算器。这种案例每年都在发生,CVE 编号换了一茬又一茬,根子上的问题没变过。
“渗透的本质是信息收集,而信息收集的本质是耐心。”这话我忘了谁说的,但确实在理。你扫得越细,看到的攻击面就越大。子域名、旁站、C 段、GitHub 泄露的密钥、JS 文件里的接口地址——每一条都是可能的入口。
SQL 注入现在没那么常见了,但也没绝迹。上周还碰到一个老系统,参数 id=1 后面加个单引号直接报错,sqlmap 一跑,数据库版本都出来了。开发人员可能觉得“这系统在内网,没人会打”,但内网早就不是安全区了。钓鱼邮件、VPN 弱口令、供应链投毒,哪条路都能进来。进来之后呢?内网里的老系统就是活靶子。
说这些不是教人搞破坏,是想说渗透测试的“常见”手法其实非常朴素。没有零日,没有花哨的绕过,就是端口、弱口令、未授权、文件上传、注入这几样。把这几样防住了,八成以上的自动化扫描和脚本小子就挡在门外了。剩下的两成,才需要真正的高级对抗。
但现实是,很多公司连这八成都不愿意花力气。问就是“业务优先”,等真被拖库了才想起来买 WAF。WAF 有用吗?有用。但 WAF 拦不住你运维把 Redis 暴露在公网。工具是辅助,意识才是根本。我见过一个客户,买了全套安全设备,结果服务器密码是 companyname2024,这跟没设密码有什么区别?
最后说个真事。某次攻防演练,目标是一家大型企业。外围打了两天没进展,WAF 规则严得离谱。后来在 GitHub 上搜到一个员工提交的代码,里面硬编码了内网 VPN 的账号密码。登进去一看,内网里跑着七八个未授权的 Jenkins,随便一个都能执行命令。从外网到内网核心,就靠一个 GitHub 提交记录。你说这算渗透吗?算。但更像是一场社会工程学的胜利——只不过对象是代码仓库,不是人。
渗透常见,常见在漏洞总是出现在你意想不到又理所当然的地方。别总盯着那些高大上的攻击链,先把默认密码改了,把不必要的端口关了,把上传目录的执行权限去了。这些事做完了,再谈别的。
```友情链接