渗透测试——安全漏洞修复解决方案Java版 (持续更新中20210527)

渗透测试——安全漏洞修复解决方案Java版 (持续更新中20210527)

项目背景描述

背景: 由于公司的项目上线需要符合安全标准。为平滑支撑项目业务上的持续发展,通过咨询和技术的手段推动信息安全的深入,通过渗透测试挖掘潜在问题,保障业务不会受到恶意攻击,从而提高核心化的信息竞争力。对本项目进行了渗透测试。测试结果存在的漏洞包括:

  • 敏感信息泄露
  • 未授权访问
  • 越权访问(水平越权和垂直越权)
  • 请求重放
  • url中含有回话令牌
  • XSS跨站脚本攻击
  • CSRF跨站请求伪造
  • 短信轰炸
  • 短信验证码暴力破解
  • 用户可枚举
  • jQuery版本漏洞

下面将记录对以上几个类型的漏洞的修复的具体方案,持续更新(上班划水)…

项目没有申请HTTPS证书,几乎是从零开始搭建的,初始设计只是为了尽可能完成业务开发,犯了接口没有统一规范等毛病,可以说是安全问题中的几个大类全都踩坑了一遍→_→。

项目: 本项目主要是基于JSP+Servlet+SSM架构开发的小型Java项目。定义为面向兼容Android和IOS的各款手机的页面开发,对开发者而言:一次编写,各端运行;一套代码,套个壳子跨平台,所以项目中有不少的对接原生安卓的接口与调用,目前这里不作详细描述。

敏感信息泄露

漏洞描述

  1. 暴露用户名和明文密码;
  2. 请求响应报文中包含了完整的sql语句,暴露了详细数据库表的信息。
  3. 暴露了隐藏的登录页面
  4. 敏感数据包括不限于:口令、密钥、证书、会话标识、License、隐私数据(如短消息内容)、授权凭据、个人数据(如姓名、住址、电话等)等,在程序文件、配置文件、日志文件、备份文件及数据库中都有可能包含敏感数据

通用解决方案

  1. 需要加密账号密码、手机号等敏感信息;
  2. 删除详细的报错信息,用统一模糊提示代替错误信息
  3. 删除非必要的页面,减小攻击面

修复过程
总而言之就是,项目所有接口都没有经过加密,请求与响应的数据都是明文传输,请求可能被截获导致数据泄露。
考虑到整个项目组开发统一原则,采用AES加密的方式对前后端数据传输(Base64编码)、接口对接Android客户端(字节流)进行加解密。
下面给出详细Demo与修复注意事项

有时间再更新20210527。。。

### 渗透测试与安全测试的区别 #### 1. **定义** 渗透测试是一种模拟真实攻击者行为的技术评估活动,旨在发现目标系统的潜在漏洞并验证其可利用性[^2]。而安全测试则是一个更广泛的术语,涵盖了多种技术和方法来识别软件或系统中的安全隐患。 #### 2. **目的** 渗透测试的主要目的是通过模拟黑客攻击的方式,检测和验证系统中存在的高危漏洞,并提供修复建议[^3]。相比之下,安全测试的目标更为广泛,不仅关注已知漏洞的检测,还包括合规性检查、安全性配置审查等多方面内容。 #### 3. **范围** 渗透测试通常聚焦于特定环境下的深入分析,例如 Web 应用程序、网络基础设施或其他关键资产的安全状况评估。它往往涉及更高层次的社会工程学尝试和技术手段的应用。相反,安全测试覆盖整个开发生命周期内的各个层面,从代码审计到运行时监控都有所涉猎[^4]。 #### 4. **执行方式** - **渗透测试**: 需要具备较强实战经验的专业人员操作复杂工具完成任务,如 Metasploit Framework 或 Burp Suite Pro 等高级框架。 - **安全测试**: 可能依赖自动化扫描仪快速查找常见缺陷,同时也支持手动复查重要区域,但整体难度低于前者。 #### 5. **输出结果** 两者都会生成详细的报告文档供利益相关方审阅决策之用。不过,在渗透测试中,除了列举发现的问题外,还会重现入侵路径展示实际风险程度;而在常规意义上的安全评测里,则更多强调预防措施指导方针而非具体演示危害场景再现过程。 --- ### 方法论对比 | 方面 | 渗透测试 | 安全测试 | |--------------|---------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------| | 主动性 | 更加主动,模仿恶意用户的行动模式 | 较被动,主要依据既定标准进行核查 | | 技术深度 | 要求深入了解操作系统原理、编程语言特性及其相互作用 | 基础层面上的功能性和结构性检验 | | 时间投入 | 执行周期较长,因为需要精心策划每一步骤 | 相对较短时间即可得出结论 | --- ### 使用工具列表比较 对于渗透测试而言,常用的工具有但不限于以下几种: ```bash nmap -sV --script=vuln scanme.nmap.org ``` 上述命令展示了如何运用 NMAP 进行本探测以及漏洞脚本扫描的一个简单例子[^1]。 而对于一般性的安全测评工作来说,静态应用安全测试(SAST) 和动态应用安全测试(DAST) 平台显得尤为重要: - SAST 工具像 Fortify Source Code Analyzer 就可以直接嵌入开发环境中去捕捉源码里的隐患; - DAST 解决方案例如 Acunetix 则侧重外部视角下网页交互过程中可能出现的数据泄露或者注入类威胁监测。 --- ### 实施流程差异 尽管二者都遵循类似的逻辑链条——即先搜集基本信息再逐步推进直至最后撰写总结材料上传达给管理层知晓情况进展,但在细节处理上存在明显区别: - **渗透测试** 的各阶段更加细化且充满挑战性,特别是在后期提权与驻留控制节点建立等方面尤为突出。 - **安全测试** 往往按照预定计划表严格执行各项指标考核项目清单上的条款规定,相对机械化一些。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值