该仓库似乎是一个概念验证研究项目,用于在受控实验室中验证 SharePoint 风格的反序列化和工具窗格处理问题。它包含一个 Python 驱动脚本、一个模拟的易受攻击应用程序,以及用于隔离测试的容器资源。
[!WARNING] 此项目仅可用于您拥有或获得明确授权测试的系统、容器或网络。未经书面许可,请勿针对公共基础设施、第三方服务、生产环境或任何目标运行此代码。未经授权的安全测试可能违反法律、合同、政策或可接受使用条款。
本仓库的内容应被视为敏感的安全研究材料。如果您将此项目用于评估工作,请保持执行隔离、记录所有活动,并在测试前与系统所有者协调。
该仓库目前包含:
sploit.py:异步 Python 驱动脚本,用于向 ToolPane 端点提交精心构造的请求。lab/mock_vulnerable_app.cs:模拟的 ASP.NET 应用程序,可回显验证标记,并且在其当前形式下,能够在实验室容器内执行所提供的命令。lab/docker-compose.yml:本地双容器实验室,将模拟目标与攻击者终端分离。lab/Dockerfile:多阶段 .NET 构建,将模拟的易受攻击应用程序发布到更小的 ASP.NET 运行时镜像中,并以非 root 用户身份运行。lab/attacker.Dockerfile:Python 攻击者容器定义,预安装了实验室终端所需的脚本依赖集。lab/vulnerable.csproj:模拟易受攻击应用程序的 .NET 6 Web 项目文件。lab/genGadget.py:辅助脚本,用于生成压缩的 Base64 载荷,仅供实验室反序列化测试使用。此工作流仅适用于本地实验室。
先决条件:
从 lab/ 目录启动实验室:
cd lab
docker-compose up --build -d
如果您的 Docker 配置需要提升权限,请使用 sudo 运行相同的命令。
确认两个容器都在运行:
docker-compose ps
遇到问题或进行漏洞利用验证时的日志查看:
docker logs sp_attacker
docker logs sp_vulnerable_lab
该实验室特意进行了隔离:
lab_net 网络上运行;在攻击者容器中打开 shell:
docker exec -it sp_attacker bash
在攻击者容器内部,您可以执行实验室安全检查,例如确认目标可达,并以验证模式针对模拟目标测试脚本:
python3 sploit.py http://sp_vulnerable_lab/
# If service-name DNS resolution fails in your environment, use the lab IP:
# python3 sploit.py http://10.10.10.5
# If you wish to go past base validation you can include wanted commands.
python3 sploit.py http://sp_vulnerable_lab whoami
本地模拟环境中的预期行为:
http://sharepoint-target 地址可达;操作注意事项:
停止并移除实验室容器和网络:
cd lab
docker-compose down
如果您还想删除已构建的镜像:
docker-compose down --rmi local
如果您想要完全重置实验室工作区工件,请在关闭后删除任何生成的结果文件:
rm -f vuln.lst
每次演练后推荐进行的清理操作:
docker-compose down 关闭实验室;作为本地研究实验室,该项目在结构上是有效的,但其当前形式不应被视为生产级安全的验证工具。
目前正常工作的部分:
需要谨慎的部分:
vuln.lst,这可能会产生不必要的残留敏感数据。仅将此项目用于受控的检测与暴露验证,而非实际利用。
推荐的方法论:
对于真实世界的评估工作,更安全的标准是用以下一项或多项替代漏洞利用式验证:
如果目标确实容易受到特权应用程序组件中反序列化缺陷的影响,潜在影响可能非常严重:
即使在实验室中,命令执行语义也会显著提高风险,因为它们将本应保留给严格受控、经授权的调查的工作流常态化。
正确的缓解路径是防御性的、分层进行的。
立即采取的行动:
加固行动:
/_layouts/15/ToolPane.aspx 及相邻管理路径的可疑请求启用集中式日志记录和告警。研究实验室特定的缓解措施:
本 README 不提供利用活动系统的说明。它将该仓库记录为受控的研究工件,并概述了更安全的验证和缓解实践。