SolarWinds Serv-U目录遍历漏洞CVE-2024-28995深度剖析与实战复现

📅 2026/7/4 20:08:07
SolarWinds Serv-U目录遍历漏洞CVE-2024-28995深度剖析与实战复现
1. 项目概述最近在安全圈里SolarWinds Serv-U 又因为一个目录遍历漏洞CVE-2024-28995被推上了风口浪尖。这个漏洞允许未经身份验证的攻击者直接读取服务器上的任意文件危害等级被评定为高危。我注意到官方给出的修复方案是升级到 Serv-U 15.4.2 Hotfix 2 版本。对于很多运维和安全工程师来说仅仅知道“要打补丁”是远远不够的。我们更想知道这个漏洞到底是怎么产生的攻击者是如何利用的升级这个Hotfix 2到底修复了什么我们自己能否在可控的环境下复现它以真正理解其风险这就是我写这篇长文的初衷。我不想只给你一个冷冰冰的升级命令而是想带你走一遍完整的“漏洞认知闭环”从原理分析、环境搭建、漏洞复现再到修复验证。通过亲手操作一遍你不仅能深刻理解CVE-2024-28995的威胁更能掌握处理此类安全事件的通用方法论。无论你是负责企业Serv-U服务的运维还是对漏洞研究感兴趣的安全爱好者这篇文章都能给你提供一套可直接上手、步步为营的实战指南。2. 漏洞原理深度剖析2.1 CVE-2024-28995 漏洞本质CVE-2024-28995被归类为目录遍历Directory Traversal漏洞也叫路径遍历。这是一种非常经典且危险的Web安全漏洞。它的核心问题在于应用程序在处理用户输入的路径或文件名参数时没有进行充分的安全校验和净化导致攻击者能够使用包含特殊序列如../或..\的输入“穿越”出应用程序设定的安全目录访问到本不该被访问的文件系统位置。在Serv-U的具体上下文中这个漏洞通常出现在某个文件处理或访问的HTTP端点。攻击者可以构造一个特殊的HTTP请求其中包含类似于../../../../etc/passwd或..\..\..\Windows\System32\drivers\etc\hosts这样的路径参数。如果Serv-U服务器端代码没有正确过滤这些..父目录指示符就会错误地解析这个路径并返回目标系统上的敏感文件内容。注意目录遍历漏洞的危害极大因为它直接威胁到服务器的“机密性”。攻击者可能窃取配置文件包含数据库密码、日志文件包含敏感操作记录、甚至源代码。在Linux系统上/etc/passwd和/etc/shadow是常见目标在Windows上C:\Windows\win.ini或 SAM 数据库相关文件可能被窥探。2.2 Serv-U 受影响版本与组件范围根据官方安全公告受此漏洞影响的版本非常明确SolarWinds Serv-U FTP Server 15.4.2 Hotfix 1SolarWinds Serv-U Gateway 15.4.2 Hotfix 1SolarWinds Serv-U MFT Server 15.4.2 Hotfix 1这里需要特别留意“Hotfix”这个版本标识。在软件版本管理中主版本号如15.4、次版本号如.2之后的热修复补丁包通常只包含紧急的问题修复尤其是安全补丁。这意味着如果你正在运行15.4.2版本但没有安装Hotfix 1之后的补丁即你可能是干净的15.4.2或者是15.4.2 Hotfix 1那么你的系统就处于风险之中。官方也明确指出15.3.2及更早的版本已经或即将终止支持。虽然这些旧版本可能也受影响但安全修复通常只提供给受支持的版本。因此将服务升级到受支持的、已修复的版本是唯一正确的长期选择。2.3 Hotfix 2 更新内容推测SolarWinds官方发布的 Hotfix 2其核心任务就是修复CVE-2024-28995。虽然我们无法看到其源代码但可以根据此类漏洞的通用修复模式进行合理推测输入验证强化修复很可能集中在负责解析用户请求的代码模块。开发人员会添加或加强路径规范化Canonicalization和验证逻辑。例如在处理任何文件路径参数前先将路径转换为绝对路径然后严格检查该绝对路径是否位于Serv-U服务允许访问的根目录例如Web根目录或FTP根目录之下。任何试图跳出此根目录的路径都会被立即拒绝。黑名单/白名单过滤可能会增加对特定字符序列如../,..\,%2e%2e%2f等URL编码形式的过滤。但更健壮的做法是采用“白名单”机制只允许符合预期格式的路径字符。上下文安全修复漏洞可能存在于特定的功能接口比如文件管理界面、日志下载接口或文件共享链接生成功能。Hotfix会针对这些具体的接口上下文修补其路径处理逻辑。理解修复内容有助于我们在升级后进行有效性验证而不是盲目地相信“升级了就一定安全了”。3. 实验环境搭建与准备3.1 目标版本安装以Windows为例为了复现漏洞我们首先需要搭建一个存在漏洞的Serv-U环境。强烈建议所有操作在隔离的虚拟机如VMware Workstation或VirtualBox中进行切勿在生产环境或连接公司内网的机器上尝试。获取安装包你需要寻找 SolarWinds Serv-U 15.4.2 或 15.4.2 Hotfix 1 版本的安装程序。这可能需要你拥有合法的SolarWinds账户和订阅或者从软件存档库中寻找。请务必确保软件的来源合法合规。安装过程安装过程相对简单。运行安装程序通常只需点击“下一步”接受许可协议选择安装目录例如C:\Program Files\SolarWinds\Serv-U并设置管理员的初始密码。安装完成后Serv-U服务会自动启动并且管理控制台会通过默认的Web端口通常是9443提供服务。基本配置安装后通过浏览器访问https://localhost:9443进入管理控制台。你需要完成初始向导创建一个域Domain并在域下至少创建一个用户账户和一个共享目录。这个目录将作为我们后续测试的“合法”访问区域。3.2 辅助工具准备工欲善其事必先利其器。复现和验证漏洞需要一些基本的工具Burp Suite / OWASP ZAP这是Web安全测试的“瑞士军刀”。我们将用它来拦截、查看和修改浏览器发送给Serv-U的HTTP请求。社区版Burp Suite完全够用。你需要配置浏览器的代理使其流量经过Burp。cURL / PowerShell Invoke-WebRequest命令行HTTP客户端用于快速发送构造好的攻击请求并查看原始响应。这对于编写自动化验证脚本或在不方便使用GUI工具时非常有用。文本编辑器用于记录和构造攻击载荷Payload。虚拟机快照在安装完漏洞版本后务必为虚拟机创建一个快照。这样在复现漏洞导致服务异常或想重置环境时可以瞬间回滚到干净状态极大提升实验效率。实操心得在配置Burp Suite时经常会遇到它无法拦截本地HTTPS流量的问题。这是因为Serv-U管理端使用自签名证书。解决方法是在浏览器中访问http://burp下载Burp的CA证书并安装到系统的受信任根证书颁发机构中。对于测试用的虚拟机这个操作是安全的。4. 漏洞复现实战步骤现在我们进入最关键的动手环节。请注意以下复现过程是基于公开的漏洞原理和常见利用方式进行模拟构建旨在教育目的帮助你理解风险。4.1 信息收集与端点发现首先我们需要找到可能存在漏洞的接口。Serv-U的管理界面和文件访问功能会提供多个API端点。正常操作抓包使用Burp Suite开启代理拦截。在浏览器中正常登录Serv-U管理后台进行一些常规操作例如浏览服务器上的文件列表。通过管理界面下载某个日志文件。查看或编辑某个配置文件。分析HTTP请求在Burp的Proxy - HTTP history标签页中仔细观察这些操作的HTTP请求。你需要关注URL路径是否存在包含文件路径或文件名的参数例如/webui/../api/file?path...或/download?file...这样的端点。请求参数GET请求的查询字符串如?filenameserver.log或POST请求的表单数据、JSON体如{filePath: C:\\Serv-U\\Logs\\access.log}中是否有明显的文件路径参数。Cookie与认证注意请求头中的Cookie或Authorization字段确认请求是在已认证的会话中发出的。但根据漏洞描述CVE-2024-28995是未经身份认证可利用的所以我们最终的目标是找到一个无需登录即可访问的、且存在缺陷的端点。4.2 构造并发送恶意请求假设通过分析我们发现了一个疑似端点/api/v1/log/download?namelatest.log。基础遍历测试我们尝试修改name参数插入目录遍历序列。原始请求GET /api/v1/log/download?namelatest.log HTTP/1.1修改请求GET /api/v1/log/download?name../../../../windows/system32/drivers/etc/hosts HTTP/1.1这里我们尝试穿越多层目录去读取Windows系统的一个标准文件hosts。使用Burp Repeater模块在Burp的History中找到目标请求右键选择 “Send to Repeater”。在Repeater标签页中你可以方便地修改请求并反复发送。观察响应发送修改后的请求。重点关注响应状态码如果返回200 OK这是一个危险信号。响应内容类型查看Content-Type响应头。如果是text/plain、application/octet-stream或具体的文件类型如text/x-ini且内容正是hosts文件的内容那么漏洞复现成功响应体直接查看返回的数据确认是否包含了目标系统文件的内容。尝试多种编码和绕过技巧有时简单的../会被过滤。可以尝试URL编码、双重编码、甚至使用不同操作系统的路径分隔符进行绕过。URL编码../-%2e%2e%2f双重编码../-%252e%252e%252fWindows路径..\..\..\..\windows\system32\drivers\etc\hosts4.3 复现结果验证与影响评估如果复现成功你将能看到类似以下的响应HTTP/1.1 200 OK Content-Type: text/plain Content-Length: 824 # Copyright (c) 1993-2009 Microsoft Corp. # # This is a sample HOSTS file used by Microsoft TCP/IP for Windows. # # This file contains the mappings of IP addresses to host names. Each # entry should be kept on an individual line. The IP address should # be placed in the first column followed by the corresponding host name. # The IP address and the host name should be separated by at least one # space. # # Additionally, comments (such as these) may be inserted on individual # lines or following the machine name denoted by a # symbol. # # For example: # # 102.54.94.97 rhino.acme.com # source server # 38.25.63.10 x.acme.com # x client host 127.0.0.1 localhost ::1 localhost这证实了攻击者确实可以无认证读取系统任意文件。你可以进一步尝试读取其他敏感文件以评估最大危害C:\Program Files\SolarWinds\Serv-U\ServUDaemon.ini可能包含Serv-U的配置和密码哈希。C:\Windows\Panther\unattend.xml可能包含Windows部署的自动应答文件其中有凭证信息。C:\Users\[用户名]\AppData\Local\Google\Chrome\User Data\Default\Login Data如果服务器上还跑了浏览器甚至可能窃取保存的密码。注意事项在实验环境中读取hosts文件是安全的证明方式。切勿在非授权系统上尝试读取真正敏感的文件如/etc/shadow或包含商业秘密的文档这不仅是非法的也可能对系统造成意外影响。5. 安全更新实施与验证成功复现漏洞让我们真切感受到了威胁接下来就是将其修复。5.1 获取并安装 Hotfix 2官方渠道下载访问 SolarWinds 官方支持门户或信任中心登录你的账户找到 Serv-U 15.4.2 Hotfix 2 的补丁包或完整安装包。通常对于已安装的版本提供的是增量更新包Hotfix installer。备份关键数据在安装任何更新之前这是铁律。备份你的 Serv-U 配置文件如ServUDaemon.ini、用户账户信息、以及所有通过Serv-U管理的业务数据。执行安装在Serv-U服务器上停止Serv-U相关服务。运行Hotfix 2安装程序。安装过程一般会自动检测现有版本并进行升级通常无需复杂配置。按照向导完成即可。重启服务安装完成后重新启动Serv-U服务并通过管理控制台确认版本号已更新为15.4.2 Hotfix 2。5.2 修复有效性验证升级完成不代表万事大吉我们必须验证漏洞是否真的被堵上了。重复攻击测试使用与第4节完全相同的攻击Payload和请求再次发送给升级后的Serv-U服务器。分析防御响应一个有效的修复应该返回与之前截然不同的结果。常见的正确防御响应包括HTTP 403 Forbidden服务器理解请求但拒绝执行因为路径非法。HTTP 400 Bad Request服务器认为请求语法无效例如检测到非法路径序列。HTTP 404 Not Found服务器将恶意路径规范化为一个不存在的安全路径然后返回未找到。注意单纯的404有时可能被绕过需要结合其他测试。返回错误信息或空内容返回一个通用的错误页面而不是目标文件的内容。多维度测试不要只测试一种Payload。应使用之前提到的各种编码和绕过手法进行测试确保修复是全面的。功能回归测试确保修复没有破坏正常功能。测试正常的文件下载、日志查看等功能是否依然工作。例如正常请求/api/v1/log/download?namelatest.log应该能成功下载到正确的日志文件。5.3 加固建议与长期维护打补丁是“治标”建立好的安全习惯才能“治本”。最小权限原则运行Serv-U服务的操作系统账户不应具有超出其功能所需的权限。避免使用SYSTEM或Administrator等高权限账户运行服务。专门创建一个低权限账户来运行Serv-U。网络隔离将Serv-U服务器部署在内部网络区域严格限制从互联网直接访问其管理端口如9443。如果必须对外提供FTP/SFTP服务应通过防火墙策略只开放必要的服务端口如21 22 990 443等并限制源IP。定期更新与订阅订阅SolarWinds的安全通告。像SolarWinds这样的公司其产品曾是高级供应链攻击的目标因此对其产品的安全更新保持高度警惕至关重要。建立流程定期检查并应用安全更新。日志与监控启用Serv-U的详细访问日志和审计日志并集中收集到SIEM安全信息和事件管理系统中。设置告警规则监控异常访问模式例如短时间内大量尝试访问不同路径的请求这可能是自动化漏洞扫描或攻击的迹象。6. 常见问题与排查技巧实录在实际操作中你可能会遇到一些坑。这里记录了我遇到过的一些典型问题及解决方法。6.1 复现环境搭建问题问题1安装旧版本Serv-U时安装程序提示“此应用无法在此设备上运行”或类似的不兼容错误。排查思路这通常是由于操作系统版本过高如Windows 11或最新版Windows Server与旧版安装程序的兼容性导致的。也可能是因为缺少某些运行库。解决方案兼容性模式右键点击安装程序选择“属性” - “兼容性”选项卡勾选“以兼容模式运行这个程序”并尝试选择较旧的Windows版本如Windows 8或Windows 7。以管理员身份运行确保使用管理员权限执行安装程序。检查系统架构确认你下载的安装包32位或64位与你的操作系统匹配。寻找离线安装包有时网络安装器会出问题尝试寻找完整的离线安装包ISO或大型EXE。问题2Burp Suite无法拦截到Serv-U管理页面的HTTPS流量。排查思路Serv-U使用自签名证书浏览器和Burp之间需要进行证书信任协商。解决方案确保Burp Suite的代理监听器正在运行默认127.0.0.1:8080。在浏览器中访问http://burp下载Burp Suite的CA证书。将下载的证书导入到操作系统的“受信任的根证书颁发机构”存储中。具体步骤因操作系统而异搜索“如何安装Burp CA证书到 [你的系统]”即可找到教程。重启浏览器再次访问https://localhost:9443此时Burp应该可以成功拦截和解密流量。6.2 漏洞复现与验证问题问题3发送了目录遍历Payload但服务器返回的是404如何判断是漏洞不存在还是Payload不对排查思路404响应很模糊。可能是路径不对也可能是修复生效后服务器将恶意路径解析到了一个不存在的安全位置。排查技巧基线测试首先发送一个肯定合法的请求如namelatest.log确认接口本身是正常工作的返回200。渐进式测试不要一开始就用../../../../etc/passwd。尝试小幅度穿越比如name../latest.log。观察响应是变成了404可能被拦截还是返回了上一层目录的latest.log如果存在的话说明漏洞存在。错误信息差异对比合法请求返回404例如请求一个不存在的合法文件和恶意请求返回404的响应体。有时服务器会在错误信息中透露更多线索。尝试绝对路径有些漏洞表现形式是允许绝对路径访问。尝试nameC:\windows\system32\drivers\etc\hostsWindows或name/etc/passwdLinux。问题4升级到Hotfix 2后正常文件下载功能也出错了。排查思路这属于修复可能引入的回归缺陷Regression Bug。可能是新的安全校验规则过于严格误伤了合法请求。解决方案检查请求格式确认你的正常请求中文件路径参数是否符合规范。例如是否意外包含了空格、特殊字符或多余的斜杠。查看服务器日志Serv-U的应用日志或Windows事件查看器中可能会有更详细的错误信息指明请求被拒绝的具体原因。回滚与报告如果确认是补丁问题在测试环境中可以先回滚到之前版本利用快照并通过SolarWinds官方支持渠道反馈此问题。同时评估是否可以通过调整请求方式如对参数进行URL编码来临时规避。6.3 安全更新实施问题问题5生产环境升级窗口期短如何最小化业务影响实操心得对于关键业务系统直接在生产服务器上安装更新是有风险的。推荐流程搭建镜像测试环境使用虚拟机克隆或备份恢复的方式搭建一个与生产环境尽可能一致的测试环境。在测试环境验证严格按照上述第5节的步骤在测试环境完成Hotfix 2的安装和全面验证包括漏洞修复验证和功能回归测试。制定回滚方案明确如果升级失败或出现严重问题如何快速回退到旧版本。通常包括备份当前完整系统和数据记录旧版本安装包的确切版本号和来源准备好回滚操作步骤手册。选择业务低峰期在审批的变更窗口内执行升级。分阶段实施如果有多台Serv-U服务器做负载均衡可以逐台进行升级每次升级后观察一段时间确认无误后再进行下一台。通过这一整套从原理到实践从攻击到防御的完整流程走下来你应该对CVE-2024-28995这类目录遍历漏洞有了立体而深刻的认识。安全运维不仅仅是点击“更新”按钮更重要的是理解风险从何而来补丁如何生效以及如何验证防护的有效性。下次再遇到类似的安全通告你就可以更有信心、更有方法地去应对了。记住在安全领域亲手验证过的知识才是真正属于你的。