去年帮一个做电商的进行朋友看服务器,他用的渗透是某云默认配置。我扫了一遍端口,测试22、进行3306、渗透6379全开着,测试Redis 连密码都没设。进行当时我就跟他说,渗透你这不叫上云,测试叫裸奔。进行三小时后,渗透攻击者用 Redis 写了个 SSH 公钥进来,测试留了个挖矿脚本。进行这件事说明一个很朴素的渗透道理:渗透测试不是搞破坏,是测试在别人搞你之前,自己先当一回“坏人”。
很多人把渗透测试和漏洞扫描混为一谈。拿 AWVS 跑一遍,出一份报告,那叫体检,不叫渗透。真正的渗透测试是带逻辑链的:从信息收集开始,到边界突破,再到权限维持和内网横向,每一步都要回答“我能不能进去”和“进去之后能拿多少东西”。扫描器告诉你门没锁,渗透测试直接推门进去翻抽屉。
信息收集这步最枯燥,也最见功夫。我习惯先看目标企业的招聘信息,运维岗要求会什么技术栈,大概率就在用什么系统。GitHub 上搜公司域名,经常能翻到员工误传的配置文件。有一次我在一个前端项目里找到内网测试环境的 API 地址,连 token 都没清。这些活扫描器干不了,得靠人蹲在那儿一点点翻。
边界突破讲究的是“找缝”。Web 入口无非那几个:注入、上传、SSRF、反序列化。但真实环境里往往不是单一漏洞打穿的,而是组合拳。比如先通过一个信息泄露拿到低权限账号,再用这个账号去撞后台的弱口令,进去之后发现文件上传只校验了前端 JS,抓包改后缀直接拿 shell。这种链条扫描器串不起来,它只会告诉你“发现一个低危信息泄露”,然后你把它忽略掉。
拿到低权限 shell 只是开始。Linux 上我习惯先看 sudo -l,再翻 /etc/crontab,最后用 LinPEAS 跑一遍。Windows 就查 whoami /priv 和域内 SPN。提权漏洞就那么些,关键是看系统补丁打没打全。有次遇到一台 Server 2012,MS17-010 的补丁没打,直接永恒之蓝上去,三分钟拿到 SYSTEM。那台机器还连着内网数据库,等于整个订单系统都敞开了。
内网横向是渗透测试里最容易被低估的部分。很多甲方觉得“你拿到一台机器就行了”,但真正的风险在于攻击者不会停在那台机器上。用 mimikatz 抓个哈希,或者翻配置文件找数据库密码,然后挨个试。域环境里更简单,一个域管哈希能打穿整个内网。我见过最离谱的是一台开发机存着运维的 SSH 私钥,直接跳板到核心生产库。
写报告的时候别堆 CVSS 分数。甲方看不懂,也不关心。把攻击路径画出来,标清楚从哪进、经过了哪几台机器、最终拿到了什么数据。然后给出修复建议,具体到配置文件哪一行改什么。比如“Redis 绑定 0.0.0.0 且未设密码,建议在 redis.conf 中设置 requirepass 并绑定内网 IP”。这种报告才有用。
最后说个实在话。渗透测试的授权书比技术重要。没授权就是犯罪,有授权也要严格限定范围和时间。我见过同行扫了目标的外包公司,结果被报警。技术再好,进去踩缝纫机也是白搭。干这行,手要快,脑子要清楚,边界更要清楚。
顶: 76894踩: 434






评论专区