背景
某小型互联网公司,自述公司“专注于互联网领域,在互联网行业经过14年的发展,现已拥有一支强大的专业团队。” 但今天我们进行初步web渗透过程,发现存在严重安全漏洞,详细过程如下,大家一起来反思
一. 动态扫描网站入口
通过【企查查】查询该公司基本工商信息,通过官网发现与获取到其建设的SaaS平台URL,使用APPSCAN 初步快速扫描,获取相关信息
APPSCAN漏洞概要
发现一些服务器信息暴露, AppScan 扫描出中级与低级安全漏洞
二. 发现登录接口与风险
初步尝试,发现这个接口可以Replay attack, 基于弱口令探测
模拟请求
原因这个登录接口没有配置行为验证码机制。
风险与影响
- 暴力破解攻击
风险描述:
攻击者可以利用自动化工具,通过不断尝试不同的用户名和密码组合,对登录接口进行暴力破解。由于没有验证码的限制,攻击者可以无限制地发送登录请求,直到找到有效的凭据为止。
安全影响:
用户的账户安全受到严重威胁,一旦密码被破解,攻击者可以轻易地访问用户的敏感信息。
网站的整体安全性下降,可能导致大量用户账户被盗用。
- 资源耗尽攻击(DoS/DDoS)
风险描述:
攻击者可以通过反复请求登录接口,消耗服务器的大量计算资源和网络资源,从而引发拒绝服务攻击(DoS)或分布式拒绝服务攻击(DDoS)。
安全影响:
网站的可用性降低,正常用户可能无法访问网站。
服务器资源被耗尽,可能导致其他服务也受到影响。
- 账户锁定策略绕过
风险描述:
虽然有些网站会实施账户锁定策略,即当用户连续多次输入错误密码时,会暂时锁定账户。但是,如果没有验证码的限制,攻击者可以通过更换IP地址或使用代理服务器等方式绕过这一策略。
安全影响:
账户锁定策略的有效性降低,无法有效阻止暴力破解攻击。
攻击者可以持续尝试破解用户的密码,直到成功为止。
- 敏感信息泄露
风险描述:
在反复请求登录接口的过程中,如果网站没有妥善处理错误信息,可能会泄露敏感信息,如用户名是否存在等。这些信息可以被攻击者利用来进一步实施攻击。
安全影响:
用户的隐私泄露,攻击者可能通过获取的用户名列表来实施更有针对性的攻击。
网站的安全性进一步降低,可能导致更多用户账户被盗用。
防护措施建议
为了应对上述安全风险,网站可以采取以下防护措施:
实施验证码机制:在登录接口中添加验证码机制,要求用户输入验证码后才能进行登录尝试。这样可以有效防止自动化工具的暴力破解攻击。
限制登录尝试次数:设置合理的登录尝试次数限制,并在达到限制后暂时锁定账户。同时,可以记录用户的IP地址和登录尝试时间,以便后续分析和处理。
使用HTTPS协议:确保登录接口使用HTTPS协议进行通信,以保护用户输入的用户名和密码等敏感信息不被截获或篡改。
加强错误信息处理:
在处理登录请求时,避免泄露敏感信息,如用户名是否存在等。同时,可以统一错误信息提示,避免给攻击者提供额外的线索。
定期安全审计和漏洞扫描:定期对网站进行安全审计和漏洞扫描,及时发现并修复潜在的安全漏洞和弱点。同时,加强对网站的安全监控和日志记录工作,以便及时发现和应对安全威胁。
三. 通过Google搜索发现其源代码仓库暴露互联网
git仓库研发没有注意,访问权限设置为public, 可以下载代码,如下是上传gitee源代码仓库
源代码仓库暴露互联网
通过分析,了解到
1)前端基于Vue.js技术栈, Uni-app小程序
2)后端接口路径暴露
四. 存在匿名访问头像上传接口
通过阅读前面泄露的代码发现,如下片段
源代码解读
这段代码是用 Uni-app 编写的微信小程序中的一个方法 onChooseAvatar
,用于处理用户选择头像后的操作。具体来说,它将用户选择的头像上传到后端服务器。让我们逐步解析这段代码,并构建一个HTTP原始报文示例。
代码解析
- 事件触发:当用户选择了某个头像时,会触发此方法。
- 提取头像URL:从事件对象
e
中获取用户选择的头像的URL,存储在变量avatarUrl
中。 - 使用
wx.uploadFile
API 发起文件上传请求:
URL:
url
参数指定了上传文件的后端API地址。文件路径:
filePath
参数指定了要上传的文件路径(这里是用户选择的头像的URL)。文件字段名:
name
参数指定了表单中文件字段的名称,在服务器端可以通过这个名称来获取文件。额外的数据:
formData
参数可以用来发送额外的数据,这里发送了一个字段from
表示上传来源。成功回调:
success
回调函数会在上传成功后执行,解析服务器返回的数据,并根据返回的状态码进行相应处理。失败回调:
fail
回调函数会在上传失败时执行
我们模拟请求成功,成功上传图片
模拟请求成功
可以看出图片上传到某个OSS上,拼接URL得到
这个漏洞形成一个免费“ 图床”。
图床可能的安全漏洞
敏感信息泄露:图床在处理图片上传时,如果未对图片中的EXIF(Exchangeable Image File Format)信息或其他元数据进行处理,可能会泄露拍摄设备、位置等敏感信息。此外,如果图床系统存在配置不当或漏洞,攻击者可能通过上传包含恶意代码的图片来利用这些漏洞,进而获取更多敏感信息或执行未授权操作。
跨站脚本攻击(XSS):如果图床系统未对上传的图片内容或链接进行充分过滤和验证,攻击者可能通过上传包含恶意脚本的图片或链接,在用户浏览图片时触发XSS攻击,从而窃取用户信息、会话令牌等敏感数据。
文件上传漏洞:图床的核心功能之一是处理图片上传,如果上传功能存在漏洞,如未对文件类型、大小、内容等进行严格限制和验证,攻击者可能上传恶意文件(如Webshell、病毒等),进而控制服务器或执行其他恶意操作。
对标OWASP Top 10 2023,我们可以从以下几个方面来分析可能存在的漏洞:
敏感信息泄露(A3: Sensitive Data Exposure)
问题描述:图床在处理图片上传时,如果未对图片中的EXIF信息或其他元数据进行处理,可能会泄露拍摄设备、位置等敏感信息。此外,如果图床系统存在配置不当或漏洞,攻击者可能通过上传包含恶意代码的图片来利用这些漏洞,进而获取更多敏感信息。
对应OWASP Top 10 2023:这一漏洞直接对应于OWASP Top 10 2023中的A3(敏感数据泄露)。敏感数据泄露是Web应用程序中常见的安全风险之一,它可能导致个人隐私泄露、商业机密被窃取等严重后果。跨站脚本攻击(XSS)(A7: Cross-Site Scripting (XSS))
问题描述:如果图床系统未对上传的图片内容或链接进行充分过滤和验证,攻击者可能通过上传包含恶意脚本的图片或链接,在用户浏览图片时触发XSS攻击。XSS攻击允许攻击者在用户浏览器中执行恶意脚本,从而窃取用户信息、会话令牌等敏感数据。
对应OWASP Top 10 2023:这一漏洞直接对应于OWASP Top 10 2023中的A7(跨站脚本)。XSS是一种常见的Web安全漏洞,它利用Web应用程序对用户输入数据的不当处理,使得攻击者能够在用户浏览器中执行恶意脚本。文件上传漏洞(可能涉及A8: Insecure Deserialization 或 A9: Using Components with Known Vulnerabilities)
问题描述:图床的核心功能之一是处理图片上传,如果上传功能存在漏洞,如未对文件类型、大小、内容等进行严格限制和验证,攻击者可能上传恶意文件(如Webshell、病毒等),进而控制服务器或执行其他恶意操作。虽然文件上传漏洞本身没有直接对应的OWASP Top 10 2023项,但它可以视为一种特殊的输入验证问题,也可能由于使用了含有已知漏洞的组件(如文件处理库)而导致。
对应OWASP Top 10 2023:文件上传漏洞可能间接对应于A8(不安全的反序列化)或A9(使用含有已知漏洞的组件)。然而,更直接地,它可能被视为一种未受保护的输入验证问题,其严重性足以引起高度重视。在OWASP Top 10 2023中,虽然没有直接列出文件上传漏洞作为单独的项,但强调了输入验证和使用安全组件的重要性,这些都是防止文件上传漏洞的关键措施。访问控制不当(可能涉及A5: Broken Access Control)
问题描述:如果图床系统的访问控制机制存在漏洞,如权限设置不当、认证机制不完善等,攻击者可能绕过正常的访问控制流程,访问或修改未授权的资源。
对应OWASP Top 10 2023:这一漏洞可能间接对应于OWASP Top 10 2023中的A5(失效的访问控制)。失效的访问控制是Web应用程序中常见的安全风险之一,它可能导致未授权用户访问敏感数据或执行敏感操作。在图床系统中,如果访问控制不当,攻击者可能利用这一漏洞获取敏感信息或执行恶意操作。
四. 接口信息探测与嗅探
通过后台代码,发现视频上传接口,我们在浏览器访问如下Request GET,响应HTTP 405,证明这个接口路径是存的
接口信息探测
五. 服务端接口文档泄露
推测该公司是为了方便,接口文档防止互联网,但没有授权访问。与swagger.json暴露是相同安全漏洞
服务端接口文档泄露
风险与影响
1. 敏感信息暴露
风险描述:
服务端接口文档中可能包含大量敏感信息,如API的URL、请求参数、响应格式、错误代码以及业务逻辑细节等。这些信息如果被恶意利用,可能对网站的业务和数据安全造成重大威胁。
安全影响:
攻击者可以了解系统内部的工作流程和逻辑,进而发现并利用安全漏洞。
敏感信息的泄露可能导致业务数据被非法访问或篡改。
2. 非法访问和未授权操作
风险描述:
攻击者利用接口文档中的信息,可以构造恶意请求,尝试绕过系统的访问控制机制,实现非法访问和未授权操作。
安全影响:
攻击者可能访问或修改用户的敏感数据。
攻击者可能执行未授权的业务操作,如恶意下单、虚假交易等。
3. API滥用和过度消耗资源
风险描述:
攻击者可以利用接口文档中的信息,编写自动化脚本,对网站的服务端接口进行大规模请求,导致API被滥用和服务器资源被过度消耗。
安全影响:
服务器可能因负载过高而无法正常响应合法请求。
在极端情况下,服务器可能因资源耗尽而完全瘫痪。
4. 供应链攻击
风险描述:
如果泄露的接口文档包含了对第三方服务的调用信息(如API密钥、认证信息等),那么这些第三方服务也可能成为攻击的目标。一旦第三方服务被攻破,攻击者可以通过它们进一步攻击原始网站。
安全影响:
扩大了攻击面,增加了被攻击的风险。
可能导致多个系统和服务同时受到影响
5. 声誉损害和法律风险
风险描述:
服务端接口文档的泄露可能导致公众对网站安全性的质疑和信任度下降,从而对网站的声誉造成损害。此外,如果泄露的敏感信息中包含用户隐私数据或受法律保护的敏感信息(如个人信息、商业秘密等),网站还可能面临法律风险。
安全影响:
用户流失和市场份额下降。
面临罚款、诉讼等法律后果。
防护措施建议
为了降低服务端接口文档泄露带来的安全风险,网站可以采取以下防护措施:
严格访问控制:对接口文档实施严格的访问控制策略,确保只有授权人员才能访问。
使用强密码、双因素认证等安全措施来保护访问权限。
加密和脱敏处理: 对接口文档中的敏感信息进行加密或脱敏处理,以降低泄露后的风险。
最小化原则:遵循最小化原则,仅将必要的接口信息记录在文档中,避免包含过多的敏感信息。
定期审查和更新:定期对接口文档进行审查和更新,及时删除不再使用的接口信息,并修复可能存在的安全漏洞。
安全审计和监控:加强对接口文档的安全审计和监控工作,及时发现并处理异常访问和潜在的安全威胁。
培训和教育:加强对开发人员和安全人员的培训和教育,提高他们的安全意识和技能水平,确保他们能够正确处理接口文档和其他敏感信息。
案例分析
案例名称:XX科技公司源代码泄露导致的安全攻击事件
背景:
- XX科技公司是一家位于某沿海地区的知名科技公司,负责开发了多个重要的IT系统,包括医疗、教育等领域的系统。
- 该公司使用Git作为代码管理工具,但由于配置错误或疏忽,部分系统的源代码被意外上传到了公开的Git仓库中。
事件经过:
1)源代码泄露:
- XX科技公司的研发工程师在将代码上传至Git仓库时,未正确设置访问权限,导致包含敏感信息和潜在漏洞的源代码被公开。
2)漏洞发现与利用:
- 攻击者利用搜索引擎或专业的漏洞扫描工具,发现了这些公开的源代码仓库。
- 通过分析源代码,攻击者发现了多个未修复的安全漏洞,包括SQL注入、跨站脚本攻击(XSS)等。
- 攻击者利用这些漏洞,成功渗透了XX科技公司的系统,获取了敏感数据,并对系统进行了进一步的攻击和破坏。
3)影响:
- 泄露的源代码中包含了数据库连接信息、API密钥等敏感数据,导致大量用户信息和个人隐私数据被泄露。
- 公司系统遭受了严重的攻击,部分服务中断,给公司业务和客户带来了重大损失。
- 公司的声誉和信任度受到严重损害,合作伙伴和客户对公司的技术能力和数据安全能力产生了质疑。
后续处理:
- XX科技公司迅速响应,关闭了泄露的源代码仓库,并启动了应急响应机制。
- 公司对受影响的系统进行了全面的安全检查和修复,加固了系统的安全防护措施。
- 同时,公司加强了内部的安全培训和意识提升工作,防止类似事件再次发生。
注意事项
以上案例为框架性描述,实际事件可能更为复杂和多变。
源代码泄露是公司面临的一种严重安全风险,需要引起高度重视和警惕。
公司应建立完善的源代码管理制度和保密协议,确保源代码的安全性和保密性。
同时,公司应定期进行代码审查和漏洞扫描工作,及时发现和修复潜在的安全漏洞
结论
通过以上暴露出该公司研发安全过程缺失,重要源头从研发工程师把源代码上传互联网公开代码GIT仓库安全风险。
风险主要可以归纳为以下几个方面:
1. 技术秘密泄露
- 核心算法和业务逻辑暴露:源代码中可能包含公司的核心算法、业务逻辑和独特的技术实现,这些信息的公开将直接威胁到公司的技术优势和竞争力。
- 知识产权侵犯:源代码的公开可能导致公司面临知识产权被侵犯的风险,包括著作权和专利权的争议。
2. 敏感信息泄露
- 数据库连接信息:源代码中可能包含数据库的连接字符串、用户名和密码等敏感信息,这些信息一旦被泄露,将给公司的数据安全带来严重威胁。
- API密钥和凭据:API密钥、OAuth令牌等敏感凭据也可能被包含在源代码中,它们的泄露将使得攻击者能够未经授权地访问公司的服务或数据。
- 客户数据:如果源代码中包含了处理客户数据的逻辑,那么客户数据的隐私和安全也将受到威胁。
3. 网络安全事件
- 恶意代码注入:公开的代码仓库可能成为恶意代码注入的温床,攻击者可以在代码中植入恶意代码,通过更新或依赖关系传播到使用这些代码的项目中。
- 漏洞利用:源代码的公开使得潜在的漏洞更容易被发现和利用,攻击者可以利用这些漏洞对公司系统进行攻击。
4. 法律和合规风险
- 违反保密协议:研发工程师可能与公司签订了保密协议,将源代码上传至公开仓库将违反这些协议,导致公司面临法律诉讼和罚款的风险。
- 数据保护法规:如果源代码中包含了受数据保护法规(如GDPR、CCPA等)保护的个人数据,那么公开源代码将违反这些法规,给公司带来严重的法律后果。
5. 声誉和信任损失
- 客户信任下降:源代码的泄露可能导致客户对公司技术能力和数据安全能力的信任下降,进而影响公司的业务和市场地位。
- 合作伙伴关系受损:如果源代码中包含了与合作伙伴共享的技术或数据,那么泄露将损害与合作伙伴的关系,甚至导致合作关系的破裂。
应对措施
为了降低这些安全风险,公司可以采取以下措施:
- 签署保密协议:与员工签署保密协议,特别是关键岗位和特别权限的员工,应签署更为严格的保密协议。
- 建立保密制度:在公司内部建立完善的商业秘密管理制度,明确源代码等敏感信息的保护要求和责任。
- 定期培训和意识提升:定期与员工进行保密培训,分享典型案例,提升员工的保密意识和安全素养。
- 代码审查和监控:建立代码审查和监控机制,对源代码的上传和共享进行严格把关,防止敏感信息泄露。
- 使用私有仓库:对于敏感项目的源代码,应使用私有仓库进行存储和管理,限制访问权限和范围