做渗透测试
目标站点是做渗一台对外服务的旧版Tomcat,版本号7.0.81。透测我扫了一遍端口,做渗8080开着,透测管理后台路径没改,做渗默认口令也没换。透测两分钟不到就进去了,做渗上传war包,透测拿到shell。做渗客户后来问我怎么这么快,透测我说你们运维三年没打过补丁,做渗这不是透测快,是做渗门根本没锁。
渗透测试这行干久了,透测你会发现大部分突破口不在什么0day,做渗而在人懒得改的那几个配置。SQL注入也是,绕WAF的姿势学了一堆,结果对方数据库报错信息直接回显在页面上,连盲注都省了。我见过一个政务系统,登录框输个单引号,整个用户表就列出来了。开发觉得前端加了JS校验就安全了,后端根本没做参数化查询。
信息收集阶段最容易被低估。有人上来就掏sqlmap扫,我习惯先翻robots.txt、看JS文件里的接口路径、查GitHub有没有人传过这个站点的源码。有次在一个电商站点的静态资源目录里翻到个.bak文件,下载下来是数据库配置文件,账号密码明文写着。运维把备份扔在Web目录,这种事比你想象的多。
漏洞利用环节,别迷信工具。Burp Suite的主动扫描能帮你省时间,但误报和漏报都多。手工测逻辑漏洞才是分水岭。比如密码找回功能,验证码校验了没?能不能爆破?修改返回包里的用户ID能不能越权?这些工具扫不出来。我测过一个预约系统,把手机号换成别人的,验证码照发,直接重置了对方密码。开发只在前端做了手机号格式校验。
提权这块,Linux下先看SUID文件,sudo -l看能跑什么命令,内核版本对应哪个exp。Windows下用PowerUp.ps1跑一遍,未加引号的服务路径、AlwaysInstallElevated、存储的凭据,总有一个能中。有次目标机器上装了旧版WinRAR,直接拿CVE-2018-20250写启动项,重启后就是SYSTEM。别嫌老漏洞丢人,能打进去就是好漏洞。
内网横向移动是另一个战场。拿到第一台机器后,先看它连了哪些网段,有没有域环境。mimikatz抓hash,psexec或者wmiexec横向。注意别把客户网络搞崩,我习惯先ping扫,再针对性端口探测。有回在客户内网发现Redis未授权,写SSH公钥直接登录了跳板机,那台机器上还存着运维的Xshell会话,里面全是明文密码。
报告怎么写也有讲究。别堆砌漏洞列表,按业务影响排序。一个前台SQL注入能拖库,比后台十个存储XSS都严重。修复建议要具体,别写“加强输入验证”,写“在UserController.java第87行使用PreparedStatement替换字符串拼接”。客户要的是能落地的东西,不是安全科普。
最后说个心态问题。渗透测试不是炫技,是帮客户找问题。你绕过了WAF、拿下了域控,截图发朋友圈很爽,但客户要的是你告诉他哪条路被堵上之后他晚上能睡着觉。我见过太多人把靶场思路带到真实项目里,对着一个不重要的测试环境死磕三天,主站的核心业务逻辑漏洞一个没看。分清主次,比多会一个exp重要得多。
(责任编辑:焦点)














