Skip to content
KitploitKITPLOIT
工具博客
Log in
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
pentest_teamcity — 使用 Metasploit 对 TeamCity 进行渗透测试 | Kitploit
工具/GitHubGitHub/kacperszurek/pentest_teamcity
漏洞利用框架Payload生成Web应用程序漏洞利用后渗透利用渗透测试红队
GitHubkacperszurek/pentest_teamcity

pentest_teamcity

使用 Metasploit 对 TeamCity 进行渗透测试

查看仓库
458138年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

使用 Metasploit 对 TeamCity 进行渗透测试

TL;DR: 从 JetBrains IDE(例如 IntelliJ 或 PyCharm)获取密码,然后在 TeamCity 持续集成服务器 中使用这些凭据,以利用 metasploit 在服务器和构建代理上获取 meterpreter 会话——作者 Kacper Szurek。

Jetbrains.rb 模块

服务器上的 shell

代理上的 shell

Windows 代理上的 shell

JetBrains 评论

以下是来自供应商(JetBrains TeamCity 团队)的评论,由 Yegor Yarko 提供:

本文的大部分内容描述了恶意用户如何在获得合理权限的情况下滥用 TeamCity。 例如,具有系统管理员角色(授予对服务器的完全控制权)的用户可以安装恶意的 TeamCity 插件或获取用于“超级用户”访问服务器的令牌。此外,具有项目管理员角色的用户可以在代理上运行任意代码或检索配置的存储库访问密码。这种行为是 TeamCity 作为产品所提供的功能的一部分。这些注意事项已在 TeamCity 文档的相关章节中描述。

所描述的问题说明了向恶意行为者授予高权限可能带来的危险。TeamCity 服务器管理员应定期审查用户权限,以避免向潜在的恶意用户授予任何可能被滥用的权限;如果启用了访客用户,请审查其权限。另一点是,在登录任何具有非平凡权限的位置时,不要将终端无人值守。

不过,文中也指出了两个实际的安全问题: 其一涉及发布恶意构建产物并诱使管理员用户在浏览器中查看它,另一个则是将运行自定义构建的权限升级为在 TeamCity 代理上执行任意代码。后者对大多数 TeamCity 安装的影响较小,因为拥有此权限的用户通常已经具备在代理上执行任何代码的能力。

尽管如此,我们将在最近的 TeamCity 版本中解决上述问题,并感谢您向我们提出这些问题。

介绍

假设你正在一家使用 JetBrains 技术栈的软件公司进行渗透测试。你正在使用 metasploit,并在开发者的计算机上获取到了 meterpreter 会话。

接下来你能做什么?关于 TeamCity 渗透测试,有一篇 2015 年由 Nikhil SamratAshok Mittal 撰写的文章。

在这篇文章中,我结合了安全注意事项和BugTrack中的多种技术,并将其整合到一个 Metasploit 模块中。

注意: 本文未使用任何 0 day 漏洞。所有操作都需要有效的 TeamCity 凭据。请参阅 JetBrains 评论。

对于此脚本造成的任何损害,我不承担任何责任。为了数据安全,请使用 set CLEANUP false。

已在 TeamCity 2017.2.1 (build 50732) 上测试通过。

目录

  • JetBrains 评论
  • 安装
  • 从 JetBrains IDE 获取密码
    • JetBrains metasploit 模块
  • 渗透测试 TeamCity 服务器
    • 服务器上的 shell
    • 构建代理上的 shell
    • Windows 构建代理上的 shell
    • 超级用户
    • 已保存的凭据
    • 利用 XSS 获取管理员账户
    • 访客用户
    • TeamCity metasploit 模块
  • 故障排除

安装

要解码 KeePass 数据库,我们需要 kdbx Ruby 库。

  1. 查找 gem 文件:find / -name "metasploit-framework.gemspec"
  2. 编辑该文件,例如 Kali Linux 上的路径为:vim /usr/share/metasploit-framework/metasploit-framework.gemspec
  3. 添加:spec.add_runtime_dependency 'kdbx', '0.2.0'
  4. cd /usr/share/metasploit-framework/ && bundle install

现在你可以:

  1. mkdir ~/.msf4/modules/exploits && mkdir ~/.msf4/modules/post
  2. 将 teamcity.rb 和 serverplugin.zip 复制到 ~/.msf4/modules/exploits
  3. 将 jetbrains.rb 复制到 ~/.msf4/modules/post
  4. 运行 Metasploit 控制台 msfconsole
  5. 重新加载插件 reload_all

从 JetBrains IDE 获取密码

TeamCity 可以通过插件轻松集成到所有 JetBrains IDE 中。

TeamCity 集成 - 登录窗口

如果使用了 记住我 选项,密码将使用 IntelliJ Platform Credentials Store API 存储。你可以在此处找到源代码:链接。

在 Windows 上的解密过程如下所示:

密码架构

  1. pdb.pw 文件使用 Windows CryptUnprotectData 进行解密。这意味着只有加密数据的用户才能解码它们。
  2. 数据块使用 AES-128-CBC 和静态密码进行解密。此密码不会更改,并且对所有产品和安装都是相同的。
  3. 现在可以使用步骤 2 中的主密码解密 c.kdbx KeePass 数据库。
  4. 密码使用 0xDFAA 进行异或操作。

默认情况下,主密码是随机的。可以在选项中更改:

更改主密码

但这并不会改变任何本质问题。

它只意味着 c.kdbx KeePass 数据库将使用不同的密码加密。本地用户仍然可以轻松地从 pdb.pw 文件中获取此密码。

JetBrains metasploit 模块

假设你有一个有效的 Meterpreter 会话,编号为 `#1```` use post/jetbrains set SESSION 1 exploit

输出看起来像这样:```
msf exploit(multi/handler) > use post/jetbrains
msf post(jetbrains) > set session 5
session => 5
msf post(jetbrains) > exploit

[*] Running as user 'WIN10\root'...
[*] Profile path: C:\Users\root\
[*] Found potential JetBrains dir: .PyCharm2017.2
[*] Found pdb file: C:\Users\root\.PyCharm2017.2\config\pdb.pwd
[*] Found kdbx file: C:\Users\root\.PyCharm2017.2\config\c.kdbx
[*] CryptUnprotectData successful
[*] IV length: 16
[*] Master password: yrEHFsgqLasoN87/fuH8TbME5Vn1OMmdRiTy+B05s9M
[*] TeamCity: http://my_teamcity_server.local
[*] Username: my_teamcity_login
[*] Password: my_teamcity_password
[*] Post module execution completed

Pentest TeamCity 服务器

现在您已拥有来自 JetBrains metasploit 模块 的 TeamCity 凭据。根据当前的用户角色,您可以:

简单授权模式

服务器 Shell构建代理 Shell超级用户已保存的凭据
管理员✔️✔️✔️✔️
适用于所有项目
已登录用户❌✖️
仅 Windows 代理
❌❌
访客用户❌❌❌❌

按项目授权模式:

服务器 Shell构建代理 Shell超级用户已保存的凭据
系统管理员✔️✔️✔️✔️
适用于所有项目
项目管理员❌✔️❌✔️
项目开发人员❌✖️
仅 Windows 代理
❌❌
项目查看者❌❌❌❌

请注意,metasploit 模块不支持自定义角色。

服务器 Shell

TeamCity 可以通过插件轻松扩展。

Plugins list

利用此功能,可以创建恶意插件来运行 meterpreter 会话。

下载工具