Fortra GoAnywhere MFT CVE-2025-10035 漏洞分析工具
项目概述
本项目是针对Fortra GoAnywhere MFT中CVE-2025-10035漏洞的分析与利用工具。该漏洞存在于License Servlet组件中,由于不安全的Java对象反序列化机制,攻击者可以通过提交带有有效签名的伪造许可证响应来执行远程代码。
漏洞严重性:🔴 严重(CVSS 3.1: 10.0)
影响:远程代码执行(预认证)
状态:🧩 已被积极利用 - 已列入CISA KEV
受影响产品:Fortra GoAnywhere MFT(License Servlet组件)
发现时间:2025年9月11日
公开披露:2025年9月18日
功能特性
- 漏洞检测:自动化检测GoAnywhere MFT系统中的CVE-2025-10035漏洞
- 影响分析:识别受影响版本(≤7.8.3,≤7.6.2)和安全版本(7.6.3,7.8.4)
- 利用演示:提供漏洞利用的示例代码和攻击向量分析
- 安全评估:帮助安全团队评估系统风险并制定缓解策略
- 集成支持:支持与Nuclei等安全扫描工具集成
安装指南
系统要求
- Python 3.6+
- Nuclei安全扫描工具(可选,用于自动化检测)
- Java运行环境(用于理解反序列化机制)
安装步骤
克隆项目仓库:
gitclone<repository-url>cdgoanywhere-cve-2025-10035安装Python依赖(如果有requirements.txt):
pipinstall-r requirements.txt配置检测目标:
- 准备目标系统列表文件(如GoAnywhere-MFT.txt)
- 确保有合法的测试权限和授权
平台注意事项
- 该工具主要在Linux环境下测试
- 需要网络访问权限来连接目标GoAnywhere MFT系统
- 建议在隔离的测试环境中使用
使用说明
基础使用示例
使用Nuclei进行漏洞检测:
sudonuclei -l GoAnywhere-MFT.txt -t CVE-2025-10035.yaml输出示例:
__ _ ____ __ _______/ /__ (_) / __ \/ / / / ___/ / _ \/ / / / / / /_/ / /__/ / __/ / /_/ /_/\__,_/\___/_/\___/_/ v3.4.10 projectdiscovery.io [INF] Your current nuclei-templates are outdated. Latest is v10.3.1 [INF] Supplied input was automatically deduplicated (1 removed). [INF] Current nuclei version: v3.4.10 (latest) [INF] Current nuclei-templates version: (outdated)典型使用场景
安全评估:
- 扫描企业内部部署的GoAnywhere MFT系统
- 识别存在漏洞的系统版本
渗透测试:
- 在授权的渗透测试中验证漏洞存在性
- 演示攻击者可能利用的攻击路径
应急响应:
- 在发生安全事件后快速识别受影响系统
- 验证补丁安装的有效性
API概览(如果适用)
如果项目包含API接口,这里会描述:
- 漏洞检测接口
- 版本识别接口
- 风险评估接口
核心代码
漏洞检测脚本示例
#!/usr/bin/env python3""" CVE-2025-10035漏洞检测脚本 用于识别Fortra GoAnywhere MFT中的不安全反序列化漏洞 """importrequestsimportsysimportrefromurllib.parseimporturljoinclassGoAnywhereScanner:def__init__(self,target_url):""" 初始化扫描器 :param target_url: 目标GoAnywhere MFT系统URL """self.target_url=target_url self.session=requests.Session()self.session.headers.update({'User-Agent':'Mozilla/5.0 (Security Scanner)'})defcheck_license_servlet(self):""" 检查License Servlet端点是否存在漏洞 :return: 布尔值,表示是否可能存在漏洞 """license_endpoint=urljoin(self.target_url,'/goanywhere/license')try:response=self.session.get(license_endpoint,timeout=10)# 检查响应特征ifresponse.status_code==200:# 检查是否包含反序列化相关特征if'serialVersionUID'inresponse.textor'ObjectInputStream'inresponse.text:returnTrue# 检查版本信息version_pattern=r'GoAnywhere MFT v?(\d+\.\d+\.\d+)'match=re.search(version_pattern,response.text)ifmatch:version=match.group(1)ifself.is_vulnerable_version(version):returnTruereturnFalseexceptrequests.RequestExceptionase:print(f"检查失败:{e}")returnFalsedefis_vulnerable_version(self,version):""" 判断版本是否受CVE-2025-10035影响 :param version: 版本字符串 :return: 布尔值,表示是否易受攻击 """try:major,minor,patch=map(int,version.split('.'))# 主要版本7.8.x且小于等于7.8.3ifmajor==7andminor==8andpatch<=3:returnTrue# 持续支持分支7.6.x且小于等于7.6.2ifmajor==7andminor==6andpatch<=2:returnTruereturnFalseexceptValueError:returnFalsedefscan(self):""" 执行完整扫描 :return: 扫描结果字典 """results={'target':self.target_url,'vulnerable':False,'version':None,'details':[]}print(f"[*] 开始扫描:{self.target_url}")# 检查License Servletprint("[*] 检查License Servlet端点...")ifself.check_license_servlet():results['vulnerable']=Trueresults['details'].append("License Servlet端点存在反序列化风险")# 输出结果ifresults['vulnerable']:print(f"[!] 发现漏洞:{self.target_url}可能受CVE-2025-10035影响")print(f"[!] 建议立即升级到7.8.4或7.6.3版本")else:print(f"[+] 未发现CVE-2025-10035漏洞迹象")returnresultsif__name__=="__main__":iflen(sys.argv)!=2:print("用法: python3 scanner.py <目标URL>")sys.exit(1)scanner=GoAnywhereScanner(sys.argv[1])scanner.scan()Nuclei检测模板示例
id:CVE-2025-10035info:name:Fortra GoAnywhere MFT Unsafe Deserializationauthor:security-research-teamseverity:criticaldescription:|Remote Code Execution in Fortra GoAnywhere MFT via unsafe Java object deserialization in the License Servlet component (CVE-2025-10035).reference:-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-10035-https://www.fortra.com/security/advisorytags:cve,cve2025,goanywhere,rce,deserializationrequests:-method:POSTpath:-"{{BaseURL}}/goanywhere/license/validate"headers:Content-Type:"application/x-java-serialized-object"body:|<!-- 反序列化Payload示例 --> rO0ABXNyABFqYXZhLmxhbmcuUnVudGltZQAAAAAAAAAAAAAA AAAAAPAAAEMAAANyAA5qYXZhLmxhbmcuQ2xhc3OuQ6Hf6hPm AgACSgAObnVtUHVibGljTWV0aG9kc0wADWNsYXNzTG9hZGVy dAAWTGphdmEvbGFuZy9DbGFzc0xvYWRlcjt4cAAAAAN0AAhj b21tYW5kc3IAEWphdmEubGFuZy5TdHJpbmfV7Wq1P1JGAwAA eHB3BAAAAAF0AAh3aG9hbWl0eA==matchers-condition:andmatchers:-type:statusstatus:-200-type:wordwords:-"java.io.ObjectInputStream"-"serialVersionUID"condition:or-type:regexregex:-"GoAnywhere MFT.*(7\\.8\\.[0-3]|7\\.6\\.[0-2])"condition:orextractors:-type:regexname:versionregex:-"GoAnywhere MFT v?(\\d+\\.\\d+\\.\\d+)"版本检查工具
#!/usr/bin/env python3""" GoAnywhere MFT版本检查工具 用于快速识别受CVE-2025-10035影响的系统版本 """VULNERABLE_VERSIONS=["7.8.0","7.8.1","7.8.2","7.8.3","7.6.0","7.6.1","7.6.2"]FIXED_VERSIONS=["7.6.3",# Sustain branch patch"7.8.4"# Mainline patch release]defcheck_version(version_string):""" 检查指定版本是否受CVE-2025-10035影响 Args: version_string (str): 版本号字符串 Returns: dict: 包含检查结果和详细信息 """results={'version':version_string,'vulnerable':False,'status':'unknown','recommendation':'Unable to determine','fixed_in':None}# 清理版本字符串version_clean=version_string.strip().lower()# 提取版本号(支持多种格式)importre version_match=re.search(r'(\d+\.\d+\.\d+)',version_clean)ifnotversion_match:results['status']='invalid_version'results['recommendation']='无法解析版本号,请检查输入格式'returnresults version=version_match.group(1)# 检查是否在受影响版本列表中ifversioninVULNERABLE_VERSIONS:results['vulnerable']=Trueresults['status']='vulnerable'results['recommendation']='立即升级到安全版本'# 确定相应的修复版本ifversion.startswith('7.6.'):results['fixed_in']='7.6.3'elifversion.startswith('7.8.'):results['fixed_in']='7.8.4'# 检查是否在已修复版本列表中elifversioninFIXED_VERSIONS:results['vulnerable']=Falseresults['status']='patched'results['recommendation']='版本已修复,建议保持更新'# 检查是否为新版本else:# 解析版本号进行比较try:major,minor,patch=map(int,version.split('.'))# 7.6.x分支的更新版本ifmajor==7andminor==6andpatch>=3:results['vulnerable']=Falseresults['status']='likely_patched'results['recommendation']='版本可能已修复,请确认补丁状态'# 7.8.x分支的更新版本elifmajor==7andminor==8andpatch>=4:results['vulnerable']=Falseresults['status']='likely_patched'results['recommendation']='版本可能已修复,请确认补丁状态'# 其他版本(如7.9.x等)elifmajor==7andminor>=9:results['vulnerable']=Falseresults['status']='newer_version'results['recommendation']='新版本,但仍建议检查安全公告'# 其他情况else:results['status']='unknown'results['recommendation']='版本状态未知,建议联系供应商确认'exceptValueError:results['status']='parse_error'results['recommendation']='版本号解析错误'returnresultsdefmain():"""主函数:演示版本检查功能"""test_versions=["GoAnywhere MFT v7.8.3","7.6.2","7.6.3","7.8.4","7.9.0","invalid-version"]print("CVE-2025-10035 版本检查工具")print("="*50)fortest_verintest_versions:result=check_version(test_ver)print(f"\n版本:{result['version']}")print(f"状态:{result['status'].upper()}")ifresult['vulnerable']:print(f"⚠️ VULNERABLE - 建议升级到:{result['fixed_in']}")elifresult['status']=='patched':print(f"✅ PATCHED -{result['recommendation']}")else:print(f"ℹ️{result['recommendation']}")if__name__=="__main__":main()以上代码提供了完整的漏洞检测和版本分析功能,帮助安全专业人员识别和评估CVE-2025-10035漏洞的风险。
6HFtX5dABrKlqXeO5PUv/84SoIo+TE3firf/5vX8AZ7FdblmAC4hpCuHmfAZuq8q
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)