去年秋天,渗透我帮一家做跨境电商的技术客户做内网渗透测试。目标是报告一台暴露在公网的Jenkins服务器,版本2.138。渗透登录页面没设密码,技术直接进去了。报告这不是渗透运气,是技术运维把测试环境当生产用了。进去之后翻构建历史,报告发现一个部署脚本里硬编码了AWS的渗透Access Key。整个过程从扫描到拿到云环境控制权,技术不到四十分钟。报告渗透这件事,渗透技术门槛在下降,技术但人的报告疏忽从来没变过。
很多人以为渗透就是拿工具扫一扫,跑个SQL注入。工具确实能解决六成问题——Nmap扫端口,Burp抓包改参数,Metasploit打已知漏洞。可剩下四成才是分水岭。比如那台Jenkins,扫描器只报了个“开放8080端口”,没标漏洞。是我手动点进去,发现登录框可以空密码提交。工具不知道“测试环境忘了加认证”这种逻辑漏洞,它只认CVE编号。
信息收集阶段最容易被低估。我习惯先看目标公司的招聘页面。招“熟悉Kubernetes和Istio”的运维,说明他们容器化程度高,很可能有暴露的API Server端口。再看GitHub上员工的个人仓库,有人把公司内部Wiki的截图传上去了,里面标着“测试数据库密码:Test@123”。这种碎片拼起来,比直接扫端口有用得多。有个同行更绝,他通过领英找到目标公司IT主管的邮箱,拿去Have I Been Pwned一查,发现该邮箱在2016年LinkedIn泄露事件中出现过。用那个旧密码去试VPN,居然成功了——很多人十年不换密码。
漏洞利用环节,讲个具体的。某次打一个Java应用,Shiro反序列化,工具直接反弹shell。进去之后是低权限用户,没法读/etc/shadow。按常规思路该提权了,但那天我换了个方向:翻当前用户的家目录,发现.bash_history里有一条`mysql -u root -pP@ssw0rd`。数据库是本地监听,用这个密码连上去,MySQL的FILE权限可以直接写文件到Web目录。一个webshell就落地了。提权?不需要。渗透的目标是拿数据或控制权,不是非得拿到root。绕过去比硬刚聪明。
横向移动时,Windows域环境里BloodHound是神器。跑一遍,它会画出谁对谁有AdminTo、CanRDP、HasSession这些边。有次我发现一个普通域用户对某台文件服务器有WriteDacl权限。利用这个,可以给自己加GenericAll,然后改机器账户的密码,再用机器账户去DCSync。整个过程不需要域管密码。微软的ACL设计太复杂,管理员配权限时经常手滑。攻击者只需要找到那条被遗忘的边。
清理痕迹这事,说实话,在真实攻防里优先级不高。红队演练有明确时间窗口,蓝队通常事后才查日志。但有个细节值得注意:Windows事件日志默认只滚512KB,稍微刷点登录失败记录就能覆盖掉之前的入侵痕迹。Linux的/var/log/wtmp更脆弱,用`utmpdump`改一下就行。不过现在EDR普及了,内存里的行为拦不住。我见过最狠的蓝队,在域控上开了PowerShell脚本块日志,连你敲的每个命令都记下来。所以渗透的终点不是技术对抗,是时间对抗——你进去到被发现的窗口期有多长。
最后说个反直觉的观察。很多次成功渗透,靠的不是0day,是“默认配置”。Tomcat的manager页面默认密码tomcat/tomcat,Redis默认无认证,Elasticsearch 9200端口默认开放。厂商觉得“用户会改”,用户觉得“内网没人看”。两边一凑,就是缺口。我电脑里有个txt,记着三十多个这样的默认凭证组合。每次渗透先试一遍,命中率大概两成。两成听起来不高,但试一遍只要三分钟。
渗透技术报告写到这,其实没什么高深理论。工具会过时,漏洞会修补,但人的惰性和系统的复杂性永远在。你不需要成为最厉害的黑客,只需要比目标系统的管理员多想一步。那一步,往往就是门没锁。


相关文章




精彩导读
热门资讯
关注我们