|
拿到一台目标服务器的进行IP,别急着掏Nmap扫全网。系统真正有效的渗透渗透测试从信息收集开始,而且大部分时间都花在这上面。测试去年我给一家电商做测试,进行光是系统收集子域名和员工邮箱就用了两天,最后靠一个离职员工泄露的渗透VPN账号进了内网。这事儿说明:工具再牛,测试不如情报到位。进行 信息收集分被动和主动。系统被动就是渗透不碰目标,通过公开渠道扒数据——Whois、测试DNS记录、进行GitHub代码库、系统招聘网站的渗透技术栈描述。主动就得跟目标系统交互了,比如用dig查区域传送、用theHarvester搜邮箱。我习惯先跑一遍amass enum -passive -d target.com,看看子域名列表。有一次发现一个dev.target.com,访问后是Jenkins后台,默认口令没改,直接拿到shell。 接下来是端口扫描和服务识别。Nmap的参数别死记,-sS -sV -p-足够应付多数场景。但注意,全端口扫描可能触发IDS告警。我通常先扫常见端口,再针对性地扫高位端口。遇到过滤严格的目标,用-f分片或者--scan-delay慢速扫。有个客户的内网防火墙会封禁连续扫描的IP,我改成每5秒发一个包,扫了六小时才完事。慢,但没断。 找到开放服务后,别急着上漏洞利用工具。先手动验证。比如看到80端口跑着Apache 2.4.49,直接试CVE-2021-41773路径穿越:curl --path-as-is http://target/cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd。如果返回root内容,恭喜。但更多时候是版本不对或者打了补丁。这时候用searchsploit查本地漏洞库,或者去Exploit-DB翻。我遇到过Tomcat后台弱口令,上传war包拿shell,比找CVE快得多。 拿到低权限shell只是开始。提权才是分水岭。Linux下先跑linpeas.sh,看SUID、计划任务、内核版本。有一次发现/usr/bin/find有SUID位,直接find . -exec /bin/sh -p \;就root了。Windows下用winPEAS,重点看未引用的服务路径和AlwaysInstallElevated注册表项。别迷信工具输出,自己手动查systeminfo和whoami /priv。我见过一个SeImpersonate权限没被利用,白白浪费两小时。 横向移动靠凭据复用。Mimikatz抓哈希,或者从浏览器保存的密码里翻。内网里SMB签名没开的话,用crackmapexec批量试哈希。有个域环境,我用一个普通域用户哈希登上了文件服务器,里面有个Excel表存着域管密码。这种事儿不罕见——人总是把密码写在最方便的地方。 最后清理痕迹。别以为渗透测试不用管这个。删掉上传的webshell、清空日志里的访问记录、恢复你改过的配置。我习惯在退出前跑一遍history -c和wevtutil cl System。但说实话,如果对方有SIEM,你这些动作反而更显眼。所以最好的策略是:动作轻,别触发告警。 整个流程走下来,工具只占三成,剩下七成是耐心和观察。别指望自动化扫描器给你一切。我见过太多人拿着AWVS扫完就交报告,结果连个SQL注入都确认不了。渗透测试是手艺活,不是点按钮。 |