1. 项目概述一次完整的渗透测试流程很多人对渗透测试的理解还停留在“用工具扫一扫找个漏洞打进去”的层面。我刚入行时也这么想直到自己独立负责一个项目面对一个看似固若金汤的目标折腾了一周毫无进展才真正明白渗透测试不是点对点的攻击而是一场系统性的战役。它考验的是你对攻击链的完整理解从最外围的信息收集开始到最终在目标网络深处站稳脚跟每一步都环环相扣缺一不可。今天我就结合自己这些年踩过的坑和总结的经验为你拆解一次从信息收集到权限维持的完整渗透测试流程。无论你是刚入门的安全爱好者还是想建立系统性认知的从业者这篇文章都会帮你把零散的知识点串联成一张清晰的作战地图。我们不会只讲工具命令更重要的是理解每个阶段背后的策略和思考让你知道在什么情况下该做什么以及为什么这么做。2. 渗透测试的基石授权、目标与规划在拿起任何工具之前我们必须先解决一个最根本也最容易被忽视的问题法律与伦理边界。我见过太多技术不错的朋友因为忽略了这一步而栽了跟头。记住未经授权的渗透测试无论动机多么“纯良”在法律上都被定义为攻击行为后果非常严重。我们所有的技术动作都必须建立在白纸黑字的授权协议之上。这份协议需要明确测试的范围比如具体的域名、IP段、时间窗口、测试方法黑盒、白盒还是灰盒以及应急联系机制。我通常会在项目启动会上和客户反复确认这些细节并用邮件记录存档这是保护自己也是保护客户。确定了授权范围我们就要明确攻击面。黑盒测试是最常见的客户只给你一个公司名称或主域名其他一无所知完全模拟外部攻击者的视角。这种测试最能反映真实的防护水平但挑战也最大。白盒测试则相反你会拿到源码、架构图甚至测试账号更像一次深入的安全审计旨在发现深层次的逻辑缺陷。而灰盒测试介于两者之间可能给你一个内网IP段或一个低权限账号常用于内部红蓝对抗。在项目开始前我会根据测试类型制定不同的策略重点。黑盒测试信息收集就是生命线白盒测试代码审计和配置核查则是突破口。规划阶段我习惯画一张简单的思维导图。中心是核心目标第一层分支是可能的入口点如官网、员工门户、API接口第二层则是每个入口点可能涉及的攻击技术。这个图不是一成不变的它会随着信息收集的深入而不断演化。工具上我会提前准备好一套标准化环境通常是一个安装了Kali Linux的虚拟机并配置好代理、VPN以及各种扫描器和漏洞库的更新。磨刀不误砍柴工清晰的规划和顺手的工具能让后续流程事半功倍。注意永远不要在未经授权的系统上进行测试即使是自己搭建的、含有已知漏洞的练习靶机也最好在隔离的虚拟环境中进行。一个良好的习惯是为每个测试项目建立独立的虚拟机快照确保测试环境纯净且不会意外影响到宿主机或其他网络。3. 信息收集打开视野绘制攻击地图信息收集是渗透测试的“眼睛”其深度和广度直接决定了整个测试的天花板。很多人觉得这步就是跑跑扫描器大错特错。真正的信息收集是一个立体化的过程目标是构建目标的数字孪生它有哪些资产谁在维护用了什么技术潜在弱点在哪3.1 资产发现摸清家底拿到一个主域名比如target.com我们的第一件事就是搞清楚它背后到底有多少“家产”。直接访问网站只是冰山一角。子域名挖掘是扩大攻击面的关键。一个主站可能防护严密但其下的dev.target.com开发环境、test.target.com测试环境、vpn.target.comVPN入口或oa.target.com办公系统往往存在疏漏。我会多管齐下用subfinder、amass进行被动枚举收集搜索引擎、证书透明度日志里的记录再用gobuster、ffuf配合大型字典进行暴力破解。这里有个技巧我会把从一次探测中发现的子域名作为新字典的一部分进行递归查找常常能发现一些深层、非标准的子域名。真实IP探测是为了绕过CDN/WAF的防护。如果目标用了CloudFlare或阿里云CDN你扫描的IP可能只是代理节点。通过查询域名的历史DNS记录用SecurityTrails或ViewDNS、查找子域名的解析很多子域名可能直接解析到真实IP、或者发送邮件并查看邮件服务器头信息都有可能找到真实的服务器IP。找到真实IP意味着你可以直接对服务器基础设施进行端口扫描而不受Web应用层防护的干扰。关联资产发现则更进一层。通过查询IP反绑定的域名旁站你可能发现同一个服务器上还运行着其他业务系统。通过查询ASN自治系统号你可以找到目标公司拥有的整个IP段。这些关联资产的安全水位可能参差不齐突破一点往往就能波及全线。我常用Shodan、Censys这样的网络空间测绘引擎输入IP或域名它能直观地展示开放端口、服务横幅甚至是一些漏洞信息效率极高。3.2 技术栈指纹识别看清靶子的材质知道了目标有哪些资产接下来就要识别每个资产使用的技术这决定了我们后续该使用什么样的漏洞库和利用工具。Web技术栈识别是重点。工具Wappalyzer或WhatWeb可以快速识别出网站用的是Apache还是Nginx是PHP 7.4还是Java 8前端框架是Vue还是React以及是否使用了WordPress、ThinkPHP等特定CMS。这些信息至关重要。例如识别出ThinkPHP你就要立刻想到其历史上爆出的多个RCE漏洞识别出老旧版本的Struts2几乎就等于找到了突破口。服务器与端口信息收集则更底层。使用nmap进行服务版本扫描-sV和操作系统探测-O可以判断服务器是Windows Server 2019还是Ubuntu 20.04开放了22SSH、3306MySQL、6379Redis还是1433MSSQL端口。每个开放端口都代表一个潜在的攻击入口。比如开放了6379且未设置密码的Redis可以直接导致未授权访问甚至getshell。目录与敏感文件扫描是寻找“后门”和“钥匙”的过程。使用gobuster或dirsearch对网站目录进行爆破目标不仅仅是找后台/admin/更要关注那些可能泄露信息的路径如/robots.txt、/sitemap.xml可能暴露目录结构。/.git/、/.svn/、/.DS_Store版本控制信息泄露运气好能直接下载源码。/phpinfo.php、/test.php调试信息泄露可能暴露服务器配置。/backup/、/www.zip、/database.sql网站备份文件简直是“大礼包”。实操心得信息收集一定要有耐心并且多源交叉验证。不要只依赖一个工具的结果。我通常会安排一个自动化的信息收集脚本在夜间跑遍所有已知的枚举方法第二天再来分析整合后的报告。另外注意扫描的速率过于 aggressive 的扫描可能会触发对方的WAF或IPS导致IP被封锁。合理设置延迟和并发数是职业选手和脚本小子的区别之一。4. 漏洞探测与利用寻找突破口并建立据点信息收集阶段我们绘制了地图现在就要开始寻找城墙的裂缝了。这个阶段需要将自动化扫描与手动验证深度结合。4.1 系统化漏洞扫描首先我会使用Nessus或OpenVAS对发现的IP和开放端口进行系统性漏洞扫描。它们有庞大的CVE漏洞库能快速识别出操作系统、中间件、数据库的已知漏洞比如永恒之蓝MS17-010、Apache Log4j2CVE-2021-44228等。这些往往是通往内网的快速通道。对于Web应用AWVS或Burp Suite Professional的主动扫描器是首选。它们能模拟用户操作爬取整个网站并对每个参数点进行SQL注入、XSS、命令注入等上百种漏洞的测试。但切记自动化扫描结果误报率不低所有漏洞都必须手动验证。我习惯用Burp Suite因为它不仅能扫描其Repeater和Intruder模块更是手动测试的神器。将疑似有问题的请求发送到Repeater手动修改参数观察响应变化这是理解漏洞原理的最佳方式。4.2 重点漏洞的手动挖掘与利用自动化工具能发现“低垂的果实”但真正的关键漏洞往往需要手动挖掘。以下是我重点关注的几类1. SQL注入这是获取数据的王道。发现一个注入点先用sqlmap进行初步确认和数据获取。但别完全依赖它理解注入类型布尔盲注、时间盲注、报错注入、联合查询更重要。对于复杂的注入可能需要手动构造Payload利用information_schema库一步步获取表名、列名最终拖出管理员密码哈希值。拿到哈希后用hashcat或John the Ripper进行破解或者直接尝试“密码复用”——用这个密码去登录其他系统如邮箱、VPN。2. 文件上传与命令执行这是getshell的捷径。找到任何可以上传文件的地方如图片上传、附件上传。尝试绕过前端校验抓包改后缀、内容类型校验修改Content-Type、以及服务端解析漏洞如.php.jpg被解析为.php。一旦上传Webshell成功如一句话木马就用AntSword蚁剑或Behinder冰蝎这类加密Webshell管理工具连接。冰蝎的流量加密特性更好能有效绕过一些简单的WAF和流量审计。3. 逻辑漏洞与越权这类漏洞扫描器很难发现却危害巨大。核心是理解业务逻辑。比如越权访问在查看个人资料的URL中修改用户ID参数能否看到他人信息密码重置漏洞重置密码时验证码是否可爆破是否可被绕过重置链接的token能否预测业务逻辑绕过支付环节能否修改商品价格为负数或0能否重复提交订单但不扣款 挖掘这类漏洞需要你像个普通用户一样去使用系统同时带着黑客的思维去思考每一个交互环节。4. 框架与组件漏洞这是“一招鲜”的领域。如果信息收集阶段识别出Spring Boot Actuator未授权访问、Shiro反序列化、Fastjson反序列化、老旧Struts2命令执行等几乎可以直接利用公开的EXP漏洞利用程序拿到权限。平时积累一个自己的漏洞利用工具库非常重要。4.3 从漏洞到立足点初始访问与提权成功利用一个Web漏洞通常只能得到一个Web服务的执行权限比如www-data用户Linux或IIS_USRS用户Windows。这个权限很低我们需要将其提升为更高权限甚至系统权限。Linux提权思路信息收集立刻执行sudo -l查看当前用户可以免密执行哪些命令。如果发现可以无密码运行/usr/bin/vim、/usr/bin/find等可以直接通过GTFOBins上的方法提权。内核漏洞运行uname -a查看内核版本搜索对应的本地提权EXP。例如著名的Dirty PipeCVE-2022-0847和Dirty CowCVE-2016-5195。使用searchsploit或linux-exploit-suggester脚本可以快速匹配。SUID文件运行find / -perm -us -type f 2/dev/null查找设置了SUID位的文件。如果找到/bin/bash、/bin/cp等可能通过特定参数滥用。计划任务与环境变量检查/etc/crontab和当前用户下的crontab -l看是否有以root权限运行的脚本且该脚本的路径我们可写。Windows提权思路系统信息systeminfo查看补丁情况用wesng等工具快速比对缺失补丁寻找公开的提权EXP如PrintNightmareCVE-2021-34527。权限分析whoami /priv查看启用的特权如果SeImpersonatePrivilege或SeAssignPrimaryTokenPrivilege启用可以尝试使用RottenPotato、JuicyPotato等工具进行令牌模拟提权。服务与注册表检查是否有权限修改服务二进制路径sc config或写入开机启动项HKLM\Software\Microsoft\Windows\CurrentVersion\Run。注意事项提权操作风险很高容易引发系统崩溃或触发安全告警。在生产环境测试中务必谨慎最好先在测试环境中验证EXP的兼容性和稳定性。此外拿到系统权限后第一件事不是欢呼而是建立一条更稳定、更隐蔽的持久化通道比如用Metasploit的meterpreter生成一个后门或者添加一个隐藏用户因为通过Web漏洞获得的入口可能随时被修复。5. 内网穿透与横向移动突破边界扩大战果当你拿下一台边界服务器通常位于DMZ区真正的挑战才刚刚开始。这台服务器就像一座桥头堡它的价值在于其背后的整个内网。我们的目标是从这里出发探索并控制内网中的其他主机。5.1 内网信息收集与代理搭建首先在已控服务器上进行快速的内网信息收集网络配置ipconfig /allWindows或ifconfig -a; route -nLinux获取IP、网关、DNS服务器摸清所在网段。存活主机探测使用net viewWindows或内网版的nmap、fscan。例如fscan -h 192.168.1.0/24可以快速扫描C段发现存活主机和开放端口。用户与共享信息net user、net localgroup、net share查看本机用户、组和共享文件夹。接下来是关键一步建立代理通道。因为我们的攻击机在外网无法直接访问内网IP段。我们需要在已控服务器跳板机上运行一个代理服务端将内网流量转发出来。工具选择Frp (Fast Reverse Proxy)我最常用的工具配置简单稳定高效。在公网VPS上运行frps服务端在跳板机上运行frpc客户端配置一个socks5代理。之后我本地的Proxifier或ProxyChains就能将所有工具流量导向内网。Neo-reGeorg将流量伪装在正常的HTTP/HTTPS请求中隐蔽性极强适合存在严格流量审计的环境。Earthworm (ew)老牌工具支持多级级联代理在复杂网络结构中非常有用。配置好代理后你的攻击机就仿佛接入了目标内网可以像访问本地一样扫描和攻击内网其他机器了。5.2 内网横向移动技术进入内网后攻击手法更加多样化。1. 口令爆破与哈希传递 这是最直接的方式。首先尝试用已获取的密码从Web数据库、配置文件或内存中dump出的哈希去爆破其他主机的相同服务如SMB、RDP、SSH。工具如CrackMapExec是神器一条命令就能用某个哈希尝试登录整个网段crackmapexec smb 192.168.1.0/24 -u administrator -H NTLM_hash。 更高级的是哈希传递攻击。在Windows域环境中你不需要破解密码的明文只要拿到一个用户的NTLM哈希就可以用这个哈希直接向其他机器进行身份验证。使用mimikatz的sekurlsa::pth功能或impacket套件里的psexec.py、wmiexec.py可以轻松完成。2. 利用漏洞横向移动 如果内网机器存在未修复的漏洞如MS17-010永恒之蓝可以直接利用进行横向扩散。使用Metasploit的exploit/windows/smb/ms17_010_eternalblue模块设置好内网代理可以批量攻击。3. 票据攻击与域渗透 如果内网是Active Directory域环境那么终极目标就是拿下域控制器。Kerberoasting攻击者可以请求为域内某个服务账户SPN颁发的Kerberos服务票据TGS然后离线爆破该票据破解出服务账户的密码。如果该服务账户属于高权限组就获得了域内权限。使用GetUserSPNs.pyimpacket可以发起此攻击。黄金票据如果拿到了域控制器krbtgt用户的哈希通过域控提权获得就可以伪造任意用户的TGT票据授予票据从而访问域内任何资源这是最强大的持久化手段之一。4. 远程服务利用WMI通过135端口执行命令impacket的wmiexec.py非常方便。WinRM通过5985/5986端口如果启用且配置不当可直接远程执行Powershell。RDP如果3389端口开放可以尝试爆破或哈希传递登录登录后就是图形化操作。实操心得横向移动时动作一定要“轻”。避免大规模、高流量的扫描尽量使用已控主机作为新的攻击发起点减少从外网直接发起的连接。同时要时刻注意日志清理但更重要的是避免触发杀毒软件和EDR的警报。对于Windows系统尽量使用“无文件”攻击或利用系统自带工具如certutil、bitsadmin进行下载和命令执行以绕过基于行为的检测。6. 权限维持与痕迹清理巩固阵地悄然隐身费尽千辛万苦拿到权限绝不能因为一次重启或管理员修改密码就前功尽弃。权限维持的目标是建立隐蔽、持久的控制通道。同时为了延长潜伏时间需要适当清理留下的痕迹。6.1 Windows权限维持手法隐藏用户创建用户名以$结尾的用户如admin$这类用户在net user命令下默认不显示。但专业的安全人员会检查注册表或使用wmic useraccount get name查看所以并非绝对隐蔽。注册表自启动这是经典方法。将后门程序路径写入HKLM\Software\Microsoft\Windows\CurrentVersion\Run或RunOnce等键值。更隐蔽的做法是写入计划任务schtasks或服务sc create并设置触发器。计划任务创建一个定时如每5分钟连接C2服务器的计划任务比自启动更灵活且不易被常规检查发现。WMI事件订阅高阶手法。配置一个WMI事件过滤器如系统启动、用户登录触发后执行一个WMI消费者执行我们的后门。这种后门在文件系统上无迹可寻非常隐蔽。MSF PersistenceMetasploit的persistence模块可以自动完成多种方式的持久化但生成的载荷特征明显容易被查杀。6.2 Linux权限维持手法SSH公钥后门将攻击者的公钥写入目标机~/.ssh/authorized_keys文件是最简单有效的后门。可以写入root或多个普通用户目录下。Cron计划任务在/etc/crontab或用户cron目录下添加定时任务定期反弹shell或下载执行新载荷。SUID后门将一个二进制文件如/bin/bash设置为SUID权限chmod us /bin/bash然后通过bash -p来获取一个具有文件属主通常是root权限的shell。但find / -perm -4000命令会轻易发现它。动态链接库注入通过修改/etc/ld.so.preload或劫持常用的命令如ls、ps所调用的库文件在命令执行时加载我们的恶意库实现隐藏进程、隐藏文件等功能。这是rootkit的思路隐蔽性极强。Systemd服务创建一个自定义的systemd服务设置为开机自启并绑定到某个端口实现一个持久的后门服务。6.3 痕迹清理要点清理痕迹不是为了完全抹除在专业的取证面前几乎不可能而是为了增加系统管理员发现异常的难度争取时间。Windows清理清除日志使用wevtutil命令清除指定事件日志如wevtutil cl Security。MSF的meterpreter有clearev命令。清除命令行历史对于cmd历史记录有限对于Powershell需要删除$env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt。清除RDP连接记录删除注册表HKCU\Software\Microsoft\Terminal Server Client下的相关键值。Linux清理清除命令历史立即设置export HISTFILE/dev/null; export HISTSIZE0并清空~/.bash_history等文件。清除日志覆盖或删除相关日志文件如/var/log/auth.log、/var/log/secure登录日志、/var/log/apache2/access.logWeb访问日志。注意直接删除文件可能会引起警觉更好的方法是使用shred命令覆盖或只清除与我们IP相关的日志行。清除utmp、wtmp、btmp这些文件记录了登录、登入和失败登录信息。可以使用echo /var/log/wtmp等方式清空。重要提醒在真实的授权测试中是否进行痕迹清理需要与客户明确约定。有些客户希望看到完整的攻击路径和证据要求保留痕迹。因此行动前沟通至关重要。此外最有效的“隐身”是在攻击过程中就保持低调使用加密通信、减少不必要的扫描爆破、模仿正常用户行为这比事后清理要有效得多。7. 报告撰写与流程总结交付价值闭环提升渗透测试的最终产出不是拿到系统权限而是一份能够切实帮助客户提升安全水平的报告。报告的质量直接决定了这次测试的价值。一份专业的渗透测试报告通常包括以下几个部分执行摘要这是给管理层看的需要用非技术语言概括测试结果。包括测试时间、范围、发现的高危漏洞数量、整体风险评级如高、中、低以及最紧要的修复建议。一页纸内说清核心问题。测试详情这是报告的技术核心。需要为每个漏洞单独成节详细描述漏洞标题清晰明确如“SQL注入漏洞导致用户数据泄露”。风险等级参考CVSS评分标准或内部标准评定高、中、低。漏洞位置完整的URL和受影响参数。漏洞描述说明漏洞原理及可能造成的危害。复现步骤提供详细的步骤和截图让开发人员能按图索骥地复现问题。这是最关键的部分步骤必须清晰、可操作。修复建议给出具体、可落地的修复方案。不要只说“对输入进行过滤”而应说明“在XX接口的XX参数处使用预编译语句PreparedStatement替换字符串拼接”。附录可以包括测试所用的工具列表、IP地址、测试账户等信息以及一些技术细节的补充。回顾整个流程一次完整的渗透测试就像一场精心策划的特种作战信息收集是侦察绘制敌方地图漏洞探测与利用是制造突破口建立前沿阵地提权是巩固和扩大这个阵地内网穿透是向敌后穿插横向移动是扩大战果控制关键节点权限维持是建立隐蔽的补给线和观察哨而最后的报告则是将此次作战的全部情报和经验转化为提升整体防御能力的蓝图。这个过程没有一成不变的公式它需要你根据目标的实际情况灵活组合各种技术和工具。真正的能力不在于记住了多少个漏洞的EXP而在于面对一个复杂、陌生的系统时能否沉着冷静地运用这套系统化的思维一步步地深入其中。每一次测试无论成功与否都是对这套思维和技能的锤炼。
从信息收集到权限维持:实战拆解渗透测试全流程
发布时间:2026/7/5 23:19:42
1. 项目概述一次完整的渗透测试流程很多人对渗透测试的理解还停留在“用工具扫一扫找个漏洞打进去”的层面。我刚入行时也这么想直到自己独立负责一个项目面对一个看似固若金汤的目标折腾了一周毫无进展才真正明白渗透测试不是点对点的攻击而是一场系统性的战役。它考验的是你对攻击链的完整理解从最外围的信息收集开始到最终在目标网络深处站稳脚跟每一步都环环相扣缺一不可。今天我就结合自己这些年踩过的坑和总结的经验为你拆解一次从信息收集到权限维持的完整渗透测试流程。无论你是刚入门的安全爱好者还是想建立系统性认知的从业者这篇文章都会帮你把零散的知识点串联成一张清晰的作战地图。我们不会只讲工具命令更重要的是理解每个阶段背后的策略和思考让你知道在什么情况下该做什么以及为什么这么做。2. 渗透测试的基石授权、目标与规划在拿起任何工具之前我们必须先解决一个最根本也最容易被忽视的问题法律与伦理边界。我见过太多技术不错的朋友因为忽略了这一步而栽了跟头。记住未经授权的渗透测试无论动机多么“纯良”在法律上都被定义为攻击行为后果非常严重。我们所有的技术动作都必须建立在白纸黑字的授权协议之上。这份协议需要明确测试的范围比如具体的域名、IP段、时间窗口、测试方法黑盒、白盒还是灰盒以及应急联系机制。我通常会在项目启动会上和客户反复确认这些细节并用邮件记录存档这是保护自己也是保护客户。确定了授权范围我们就要明确攻击面。黑盒测试是最常见的客户只给你一个公司名称或主域名其他一无所知完全模拟外部攻击者的视角。这种测试最能反映真实的防护水平但挑战也最大。白盒测试则相反你会拿到源码、架构图甚至测试账号更像一次深入的安全审计旨在发现深层次的逻辑缺陷。而灰盒测试介于两者之间可能给你一个内网IP段或一个低权限账号常用于内部红蓝对抗。在项目开始前我会根据测试类型制定不同的策略重点。黑盒测试信息收集就是生命线白盒测试代码审计和配置核查则是突破口。规划阶段我习惯画一张简单的思维导图。中心是核心目标第一层分支是可能的入口点如官网、员工门户、API接口第二层则是每个入口点可能涉及的攻击技术。这个图不是一成不变的它会随着信息收集的深入而不断演化。工具上我会提前准备好一套标准化环境通常是一个安装了Kali Linux的虚拟机并配置好代理、VPN以及各种扫描器和漏洞库的更新。磨刀不误砍柴工清晰的规划和顺手的工具能让后续流程事半功倍。注意永远不要在未经授权的系统上进行测试即使是自己搭建的、含有已知漏洞的练习靶机也最好在隔离的虚拟环境中进行。一个良好的习惯是为每个测试项目建立独立的虚拟机快照确保测试环境纯净且不会意外影响到宿主机或其他网络。3. 信息收集打开视野绘制攻击地图信息收集是渗透测试的“眼睛”其深度和广度直接决定了整个测试的天花板。很多人觉得这步就是跑跑扫描器大错特错。真正的信息收集是一个立体化的过程目标是构建目标的数字孪生它有哪些资产谁在维护用了什么技术潜在弱点在哪3.1 资产发现摸清家底拿到一个主域名比如target.com我们的第一件事就是搞清楚它背后到底有多少“家产”。直接访问网站只是冰山一角。子域名挖掘是扩大攻击面的关键。一个主站可能防护严密但其下的dev.target.com开发环境、test.target.com测试环境、vpn.target.comVPN入口或oa.target.com办公系统往往存在疏漏。我会多管齐下用subfinder、amass进行被动枚举收集搜索引擎、证书透明度日志里的记录再用gobuster、ffuf配合大型字典进行暴力破解。这里有个技巧我会把从一次探测中发现的子域名作为新字典的一部分进行递归查找常常能发现一些深层、非标准的子域名。真实IP探测是为了绕过CDN/WAF的防护。如果目标用了CloudFlare或阿里云CDN你扫描的IP可能只是代理节点。通过查询域名的历史DNS记录用SecurityTrails或ViewDNS、查找子域名的解析很多子域名可能直接解析到真实IP、或者发送邮件并查看邮件服务器头信息都有可能找到真实的服务器IP。找到真实IP意味着你可以直接对服务器基础设施进行端口扫描而不受Web应用层防护的干扰。关联资产发现则更进一层。通过查询IP反绑定的域名旁站你可能发现同一个服务器上还运行着其他业务系统。通过查询ASN自治系统号你可以找到目标公司拥有的整个IP段。这些关联资产的安全水位可能参差不齐突破一点往往就能波及全线。我常用Shodan、Censys这样的网络空间测绘引擎输入IP或域名它能直观地展示开放端口、服务横幅甚至是一些漏洞信息效率极高。3.2 技术栈指纹识别看清靶子的材质知道了目标有哪些资产接下来就要识别每个资产使用的技术这决定了我们后续该使用什么样的漏洞库和利用工具。Web技术栈识别是重点。工具Wappalyzer或WhatWeb可以快速识别出网站用的是Apache还是Nginx是PHP 7.4还是Java 8前端框架是Vue还是React以及是否使用了WordPress、ThinkPHP等特定CMS。这些信息至关重要。例如识别出ThinkPHP你就要立刻想到其历史上爆出的多个RCE漏洞识别出老旧版本的Struts2几乎就等于找到了突破口。服务器与端口信息收集则更底层。使用nmap进行服务版本扫描-sV和操作系统探测-O可以判断服务器是Windows Server 2019还是Ubuntu 20.04开放了22SSH、3306MySQL、6379Redis还是1433MSSQL端口。每个开放端口都代表一个潜在的攻击入口。比如开放了6379且未设置密码的Redis可以直接导致未授权访问甚至getshell。目录与敏感文件扫描是寻找“后门”和“钥匙”的过程。使用gobuster或dirsearch对网站目录进行爆破目标不仅仅是找后台/admin/更要关注那些可能泄露信息的路径如/robots.txt、/sitemap.xml可能暴露目录结构。/.git/、/.svn/、/.DS_Store版本控制信息泄露运气好能直接下载源码。/phpinfo.php、/test.php调试信息泄露可能暴露服务器配置。/backup/、/www.zip、/database.sql网站备份文件简直是“大礼包”。实操心得信息收集一定要有耐心并且多源交叉验证。不要只依赖一个工具的结果。我通常会安排一个自动化的信息收集脚本在夜间跑遍所有已知的枚举方法第二天再来分析整合后的报告。另外注意扫描的速率过于 aggressive 的扫描可能会触发对方的WAF或IPS导致IP被封锁。合理设置延迟和并发数是职业选手和脚本小子的区别之一。4. 漏洞探测与利用寻找突破口并建立据点信息收集阶段我们绘制了地图现在就要开始寻找城墙的裂缝了。这个阶段需要将自动化扫描与手动验证深度结合。4.1 系统化漏洞扫描首先我会使用Nessus或OpenVAS对发现的IP和开放端口进行系统性漏洞扫描。它们有庞大的CVE漏洞库能快速识别出操作系统、中间件、数据库的已知漏洞比如永恒之蓝MS17-010、Apache Log4j2CVE-2021-44228等。这些往往是通往内网的快速通道。对于Web应用AWVS或Burp Suite Professional的主动扫描器是首选。它们能模拟用户操作爬取整个网站并对每个参数点进行SQL注入、XSS、命令注入等上百种漏洞的测试。但切记自动化扫描结果误报率不低所有漏洞都必须手动验证。我习惯用Burp Suite因为它不仅能扫描其Repeater和Intruder模块更是手动测试的神器。将疑似有问题的请求发送到Repeater手动修改参数观察响应变化这是理解漏洞原理的最佳方式。4.2 重点漏洞的手动挖掘与利用自动化工具能发现“低垂的果实”但真正的关键漏洞往往需要手动挖掘。以下是我重点关注的几类1. SQL注入这是获取数据的王道。发现一个注入点先用sqlmap进行初步确认和数据获取。但别完全依赖它理解注入类型布尔盲注、时间盲注、报错注入、联合查询更重要。对于复杂的注入可能需要手动构造Payload利用information_schema库一步步获取表名、列名最终拖出管理员密码哈希值。拿到哈希后用hashcat或John the Ripper进行破解或者直接尝试“密码复用”——用这个密码去登录其他系统如邮箱、VPN。2. 文件上传与命令执行这是getshell的捷径。找到任何可以上传文件的地方如图片上传、附件上传。尝试绕过前端校验抓包改后缀、内容类型校验修改Content-Type、以及服务端解析漏洞如.php.jpg被解析为.php。一旦上传Webshell成功如一句话木马就用AntSword蚁剑或Behinder冰蝎这类加密Webshell管理工具连接。冰蝎的流量加密特性更好能有效绕过一些简单的WAF和流量审计。3. 逻辑漏洞与越权这类漏洞扫描器很难发现却危害巨大。核心是理解业务逻辑。比如越权访问在查看个人资料的URL中修改用户ID参数能否看到他人信息密码重置漏洞重置密码时验证码是否可爆破是否可被绕过重置链接的token能否预测业务逻辑绕过支付环节能否修改商品价格为负数或0能否重复提交订单但不扣款 挖掘这类漏洞需要你像个普通用户一样去使用系统同时带着黑客的思维去思考每一个交互环节。4. 框架与组件漏洞这是“一招鲜”的领域。如果信息收集阶段识别出Spring Boot Actuator未授权访问、Shiro反序列化、Fastjson反序列化、老旧Struts2命令执行等几乎可以直接利用公开的EXP漏洞利用程序拿到权限。平时积累一个自己的漏洞利用工具库非常重要。4.3 从漏洞到立足点初始访问与提权成功利用一个Web漏洞通常只能得到一个Web服务的执行权限比如www-data用户Linux或IIS_USRS用户Windows。这个权限很低我们需要将其提升为更高权限甚至系统权限。Linux提权思路信息收集立刻执行sudo -l查看当前用户可以免密执行哪些命令。如果发现可以无密码运行/usr/bin/vim、/usr/bin/find等可以直接通过GTFOBins上的方法提权。内核漏洞运行uname -a查看内核版本搜索对应的本地提权EXP。例如著名的Dirty PipeCVE-2022-0847和Dirty CowCVE-2016-5195。使用searchsploit或linux-exploit-suggester脚本可以快速匹配。SUID文件运行find / -perm -us -type f 2/dev/null查找设置了SUID位的文件。如果找到/bin/bash、/bin/cp等可能通过特定参数滥用。计划任务与环境变量检查/etc/crontab和当前用户下的crontab -l看是否有以root权限运行的脚本且该脚本的路径我们可写。Windows提权思路系统信息systeminfo查看补丁情况用wesng等工具快速比对缺失补丁寻找公开的提权EXP如PrintNightmareCVE-2021-34527。权限分析whoami /priv查看启用的特权如果SeImpersonatePrivilege或SeAssignPrimaryTokenPrivilege启用可以尝试使用RottenPotato、JuicyPotato等工具进行令牌模拟提权。服务与注册表检查是否有权限修改服务二进制路径sc config或写入开机启动项HKLM\Software\Microsoft\Windows\CurrentVersion\Run。注意事项提权操作风险很高容易引发系统崩溃或触发安全告警。在生产环境测试中务必谨慎最好先在测试环境中验证EXP的兼容性和稳定性。此外拿到系统权限后第一件事不是欢呼而是建立一条更稳定、更隐蔽的持久化通道比如用Metasploit的meterpreter生成一个后门或者添加一个隐藏用户因为通过Web漏洞获得的入口可能随时被修复。5. 内网穿透与横向移动突破边界扩大战果当你拿下一台边界服务器通常位于DMZ区真正的挑战才刚刚开始。这台服务器就像一座桥头堡它的价值在于其背后的整个内网。我们的目标是从这里出发探索并控制内网中的其他主机。5.1 内网信息收集与代理搭建首先在已控服务器上进行快速的内网信息收集网络配置ipconfig /allWindows或ifconfig -a; route -nLinux获取IP、网关、DNS服务器摸清所在网段。存活主机探测使用net viewWindows或内网版的nmap、fscan。例如fscan -h 192.168.1.0/24可以快速扫描C段发现存活主机和开放端口。用户与共享信息net user、net localgroup、net share查看本机用户、组和共享文件夹。接下来是关键一步建立代理通道。因为我们的攻击机在外网无法直接访问内网IP段。我们需要在已控服务器跳板机上运行一个代理服务端将内网流量转发出来。工具选择Frp (Fast Reverse Proxy)我最常用的工具配置简单稳定高效。在公网VPS上运行frps服务端在跳板机上运行frpc客户端配置一个socks5代理。之后我本地的Proxifier或ProxyChains就能将所有工具流量导向内网。Neo-reGeorg将流量伪装在正常的HTTP/HTTPS请求中隐蔽性极强适合存在严格流量审计的环境。Earthworm (ew)老牌工具支持多级级联代理在复杂网络结构中非常有用。配置好代理后你的攻击机就仿佛接入了目标内网可以像访问本地一样扫描和攻击内网其他机器了。5.2 内网横向移动技术进入内网后攻击手法更加多样化。1. 口令爆破与哈希传递 这是最直接的方式。首先尝试用已获取的密码从Web数据库、配置文件或内存中dump出的哈希去爆破其他主机的相同服务如SMB、RDP、SSH。工具如CrackMapExec是神器一条命令就能用某个哈希尝试登录整个网段crackmapexec smb 192.168.1.0/24 -u administrator -H NTLM_hash。 更高级的是哈希传递攻击。在Windows域环境中你不需要破解密码的明文只要拿到一个用户的NTLM哈希就可以用这个哈希直接向其他机器进行身份验证。使用mimikatz的sekurlsa::pth功能或impacket套件里的psexec.py、wmiexec.py可以轻松完成。2. 利用漏洞横向移动 如果内网机器存在未修复的漏洞如MS17-010永恒之蓝可以直接利用进行横向扩散。使用Metasploit的exploit/windows/smb/ms17_010_eternalblue模块设置好内网代理可以批量攻击。3. 票据攻击与域渗透 如果内网是Active Directory域环境那么终极目标就是拿下域控制器。Kerberoasting攻击者可以请求为域内某个服务账户SPN颁发的Kerberos服务票据TGS然后离线爆破该票据破解出服务账户的密码。如果该服务账户属于高权限组就获得了域内权限。使用GetUserSPNs.pyimpacket可以发起此攻击。黄金票据如果拿到了域控制器krbtgt用户的哈希通过域控提权获得就可以伪造任意用户的TGT票据授予票据从而访问域内任何资源这是最强大的持久化手段之一。4. 远程服务利用WMI通过135端口执行命令impacket的wmiexec.py非常方便。WinRM通过5985/5986端口如果启用且配置不当可直接远程执行Powershell。RDP如果3389端口开放可以尝试爆破或哈希传递登录登录后就是图形化操作。实操心得横向移动时动作一定要“轻”。避免大规模、高流量的扫描尽量使用已控主机作为新的攻击发起点减少从外网直接发起的连接。同时要时刻注意日志清理但更重要的是避免触发杀毒软件和EDR的警报。对于Windows系统尽量使用“无文件”攻击或利用系统自带工具如certutil、bitsadmin进行下载和命令执行以绕过基于行为的检测。6. 权限维持与痕迹清理巩固阵地悄然隐身费尽千辛万苦拿到权限绝不能因为一次重启或管理员修改密码就前功尽弃。权限维持的目标是建立隐蔽、持久的控制通道。同时为了延长潜伏时间需要适当清理留下的痕迹。6.1 Windows权限维持手法隐藏用户创建用户名以$结尾的用户如admin$这类用户在net user命令下默认不显示。但专业的安全人员会检查注册表或使用wmic useraccount get name查看所以并非绝对隐蔽。注册表自启动这是经典方法。将后门程序路径写入HKLM\Software\Microsoft\Windows\CurrentVersion\Run或RunOnce等键值。更隐蔽的做法是写入计划任务schtasks或服务sc create并设置触发器。计划任务创建一个定时如每5分钟连接C2服务器的计划任务比自启动更灵活且不易被常规检查发现。WMI事件订阅高阶手法。配置一个WMI事件过滤器如系统启动、用户登录触发后执行一个WMI消费者执行我们的后门。这种后门在文件系统上无迹可寻非常隐蔽。MSF PersistenceMetasploit的persistence模块可以自动完成多种方式的持久化但生成的载荷特征明显容易被查杀。6.2 Linux权限维持手法SSH公钥后门将攻击者的公钥写入目标机~/.ssh/authorized_keys文件是最简单有效的后门。可以写入root或多个普通用户目录下。Cron计划任务在/etc/crontab或用户cron目录下添加定时任务定期反弹shell或下载执行新载荷。SUID后门将一个二进制文件如/bin/bash设置为SUID权限chmod us /bin/bash然后通过bash -p来获取一个具有文件属主通常是root权限的shell。但find / -perm -4000命令会轻易发现它。动态链接库注入通过修改/etc/ld.so.preload或劫持常用的命令如ls、ps所调用的库文件在命令执行时加载我们的恶意库实现隐藏进程、隐藏文件等功能。这是rootkit的思路隐蔽性极强。Systemd服务创建一个自定义的systemd服务设置为开机自启并绑定到某个端口实现一个持久的后门服务。6.3 痕迹清理要点清理痕迹不是为了完全抹除在专业的取证面前几乎不可能而是为了增加系统管理员发现异常的难度争取时间。Windows清理清除日志使用wevtutil命令清除指定事件日志如wevtutil cl Security。MSF的meterpreter有clearev命令。清除命令行历史对于cmd历史记录有限对于Powershell需要删除$env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt。清除RDP连接记录删除注册表HKCU\Software\Microsoft\Terminal Server Client下的相关键值。Linux清理清除命令历史立即设置export HISTFILE/dev/null; export HISTSIZE0并清空~/.bash_history等文件。清除日志覆盖或删除相关日志文件如/var/log/auth.log、/var/log/secure登录日志、/var/log/apache2/access.logWeb访问日志。注意直接删除文件可能会引起警觉更好的方法是使用shred命令覆盖或只清除与我们IP相关的日志行。清除utmp、wtmp、btmp这些文件记录了登录、登入和失败登录信息。可以使用echo /var/log/wtmp等方式清空。重要提醒在真实的授权测试中是否进行痕迹清理需要与客户明确约定。有些客户希望看到完整的攻击路径和证据要求保留痕迹。因此行动前沟通至关重要。此外最有效的“隐身”是在攻击过程中就保持低调使用加密通信、减少不必要的扫描爆破、模仿正常用户行为这比事后清理要有效得多。7. 报告撰写与流程总结交付价值闭环提升渗透测试的最终产出不是拿到系统权限而是一份能够切实帮助客户提升安全水平的报告。报告的质量直接决定了这次测试的价值。一份专业的渗透测试报告通常包括以下几个部分执行摘要这是给管理层看的需要用非技术语言概括测试结果。包括测试时间、范围、发现的高危漏洞数量、整体风险评级如高、中、低以及最紧要的修复建议。一页纸内说清核心问题。测试详情这是报告的技术核心。需要为每个漏洞单独成节详细描述漏洞标题清晰明确如“SQL注入漏洞导致用户数据泄露”。风险等级参考CVSS评分标准或内部标准评定高、中、低。漏洞位置完整的URL和受影响参数。漏洞描述说明漏洞原理及可能造成的危害。复现步骤提供详细的步骤和截图让开发人员能按图索骥地复现问题。这是最关键的部分步骤必须清晰、可操作。修复建议给出具体、可落地的修复方案。不要只说“对输入进行过滤”而应说明“在XX接口的XX参数处使用预编译语句PreparedStatement替换字符串拼接”。附录可以包括测试所用的工具列表、IP地址、测试账户等信息以及一些技术细节的补充。回顾整个流程一次完整的渗透测试就像一场精心策划的特种作战信息收集是侦察绘制敌方地图漏洞探测与利用是制造突破口建立前沿阵地提权是巩固和扩大这个阵地内网穿透是向敌后穿插横向移动是扩大战果控制关键节点权限维持是建立隐蔽的补给线和观察哨而最后的报告则是将此次作战的全部情报和经验转化为提升整体防御能力的蓝图。这个过程没有一成不变的公式它需要你根据目标的实际情况灵活组合各种技术和工具。真正的能力不在于记住了多少个漏洞的EXP而在于面对一个复杂、陌生的系统时能否沉着冷静地运用这套系统化的思维一步步地深入其中。每一次测试无论成功与否都是对这套思维和技能的锤炼。