渗透测试笔记
报告小抄。
渗透测试笔记
代码漏洞
XSS
存储型XSS
技巧
- PDF解析导致XSS攻击。
漏洞描述
- 利用跨站脚本漏洞欺骗用户,收集Cookie等相关数据并冒充其他用户。通过精心构造的恶意代码,可以让访问者访问非法网站或下载恶意木马。
- 网站在解析PDF时未进行安全检测,容易引起跨站脚本攻击的风险。
修复建议
- 在服务器端对传入的参数进行验证,过滤包含HTML的特殊字符。
- 对传入数据中的HTML特殊字符进行转义处理。
- 排查涉及PDF解析的所有功能,对PDF中的js脚本进行安全检测。
- 限制PDF执行js脚本。
反射型XSS
技巧
暂无
漏洞描述
- 利用跨站脚本漏洞欺骗用户,收集Cookie等相关数据并冒充其他用户。通过精心构造的恶意代码,可以让访问者访问非法网站或下载恶意木马。
修复建议
- 在服务器端对传入的参数进行验证,过滤包含HTML的特殊字符
- 对传入数据中的HTML特殊字符进行转义处理
文件上传
任意文件上传
技巧
暂无
漏洞描述
- 在上传文件时,存在任意文件上传。
- 头像上传功能仅支持上传和检验jpg、png等图片格式,但是仅在前端进行了校验,通过抓包修改的方式可上传php、jsp、asp、txt等多种类型文件,存在被攻击者利用的风险。
修复建议
- 排查所有涉及文件上传的功能接口,对上传的文件类型进行限制。
- 校验功能应在后端进行,防止前端校验被绕过。
- 前后端校验应保持一致,后端仅支持上传jpg、png等图片格式。
文件读取
任意文件读取
技巧
暂无
漏洞描述
- 服务端未对filePath参数进行验证和过滤,导致攻击者可以访问服务器上任意文件。
修复建议
- 验证和过滤传入参数的合法性
- 固定目录前缀,限制用户只能访问固定目录下的文件
信息泄露
敏感信息泄露
前端密码加密逻辑泄露
技巧
暂无
漏洞描述
- 前端js中存在密码的加密逻辑
修复建议
- 建议将加密逻辑进行隐藏或删除。
后台地址泄露
技巧
暂无
漏洞描述
- 在登录账号的时候会返回一个带有路径的数据包,进行拼接可以直接访问该账号没有的功能,且可以进行操作。
修复建议
- 将敏感的数据进行删除或者隐藏,防止泄露。
不安全的错误信息
技巧
暂无
漏洞描述
- Web应用程序在处理请求时,可能会将服务器端的错误信息、堆栈跟踪或敏感的调试信息直接返回到用户浏览器的前端。这种泄露可以暴露系统的内部工作机制,提供给攻击者关于系统架构、使用的技术栈、潜在的弱点等信息。
- 在访问某些接口时会返回服务端数据库报错信息,泄露了相关SQL查询语句。
修复建议
- 定义错误页面:为常见的HTTP状态码(如404、500等)设置自定义的错误页面,隐藏具体的服务器错误信息。
- 错误信息归一化:确保所有的错误响应都返回统一的、不包含敏感信息的响应消息。
- 日志记录:将详细的错误信息记录在服务器端的日志中,而不是返回给客户端。
- 对SQL语句进行过滤和检查。
- 不对前端返回详细报错信息。
不安全的http方法
技巧
暂无
漏洞描述
- 网站使用了trace,options等不安全的HTTP方法。
修复建议
- 后端限制除post和get方法之外的请求方式
版本信息泄露
技巧
暂无
漏洞描述
- 返回包中存在版本信息。
修复建议
- 建议将版本信息进行隐藏或删除。
前端源码泄露
技巧
暂无
漏洞描述
- Vue使用webpack(静态资源打包器)的时候,如果未进行正确配置,会产生一个js.map文件,而这个js.map可以通过工具来反编译还原Vue源代码,产生代码泄露。
修复建议
- 在项目路径下修改config/index.js中build对象productionSourceMap: false。
- 建议删除或禁止访问正式环境中的js.map文件。
默认密码泄露
技巧
暂无
漏洞描述
- 前端文件中泄露账号的初始默认密码
修复建议
- 删除前端文件中的敏感信息
Actuator泄露
技巧
暂无
漏洞描述
网站使用的spring actuator组件引发信息泄露,容易被攻击者进行针对性利用
Spring Boot Actuator 模块提供了健康检查,审计,指标收集,HTTP 跟踪等,是帮助我们监控和管理Spring Boot 应用的模块。这个模块采集应用的内部信息,展现给外部模块,可以查看应用配置的详细信息,例如自动化配置信息、创建的Spring beans信息、系统环境变量的配置信息以及Web请求的详细信息等。
其中heapdump作为Actuator组件最为危险的Web端点,heapdump因未授权访问被恶意人员获取后进行分析,可进一步获取敏感信息。
修复建议
对接口进行权限控制
对用户权限进行细化区分
对数据进行权限划分
限制接口访问,可使用Spring Boot提供的安全限制功能。比如要禁用/env /heapdump接口,则可设置yml如下:
# Tomcat
server:
port: 8080
management:
endpoint:
heapdump:
enabled: false # 启用接口关闭
env:
enabled: false # 启用接口关闭
swagger未授权访问
技巧
暂无
漏洞描述
- 该功能点仅在前端对上传文件的后缀进行了校验,攻击者可利用漏洞上传任意文件。
修复建议
- 在服务端对文件进行校验,采用白名单进行校验。
逻辑漏洞
业务安全
垂直越权
技巧
暂无
漏洞描述
- 低权限用户没有该功能点,但能调用该接口
- 任意用户可直接调用非本用户权限的接口,导致越权。
修复建议
- 对接口进行鉴权
- 加强token验证,防止非账户信息访问功能。
- 将敏感的数据进行删除或者隐藏,防止泄露。
水平越权
技巧
- 重点查看包中包含有id的参数。
漏洞描述
- 网站未对sessionID做权限管理,导致任意用户可直接调用非本用户权限的接口,导致越权。
修复建议
- 对接口进行鉴权
数据篡改
技巧
暂无
漏洞描述
- 通过修改其中的参数数值即可实现不可修改或者不可执行的权限或者功能
修复建议
- 加强身份校验,校验路径下的代码参数和用户cookie相匹配,防止只通过修改个别参数的方式,实现不可修改数据进行修改或越权操作。
交易流水号可爆破
技巧
暂无
漏洞描述
- 该功能未对访问进行限制,且使用明文传输有明显提示词,攻击者可利用此漏洞对交易流水号进行爆破。
修复建议
- 对接口进行访问限制,如一分钟内仅可访问5次。
- 模糊返回提示,如查询错误。
身份验证漏洞
用户名枚举
技巧
暂无
漏洞描述
- 在登录页面中,当输入错误的用户名信息时,应用程序反馈“用户名或密码不正确”的提示,当输入正确的用户名信息时,应用程序反馈“用户名或密码不正确,您还有4次机会,超过该次数账户将被锁定”攻击者可通过该提示为依据对用户名进行枚举,猜解出已存在于应用系统的用户名信息,最终攻击者再对已有用户的密码进一步猜解,从而降低暴力破解的成本
修复建议
- 对接口重置密码页面的判断回显提示信息修改为一致,例如:账号或密码错误(模糊提示)。
- 增加动态验证码机制,避免被探测工具批量枚举用户名。
用户密码爆破
技巧
暂无
漏洞描述
- 登录位置可以通过对错误信息的提示进行用户名密码爆破。
修复建议
- 修改错误提示,如用户名或密码错误。
会话管理漏洞
会话重用
技巧
暂无
漏洞描述
- 账号退出后,服务端未对当前sessionID做销毁处理,在用户下一次登录时,上次的sessionID也能正常使用。如果用户的凭证泄露,攻击者可能利用会话重用漏洞绕过认证机制,导致用户信息数据被篡改或泄露。
修复建议
- 定期重置会话标识符,尤其是在重要操作后,例如登出,权限更改等。
- 用户登出时,立即失效会话标识符。
注销后会话未失效
技巧
暂无
漏洞描述
- 用户退出系统后,服务器端token未失效,攻击者可利用此token向服务器继续发送服务请求。
修复建议
- 用户注销登录之后,让cookie、Token等字段失效。
中间件配置
错误页面自定义
错误页面泄露地址
技巧
暂无
漏洞描述
- 通过输入错误的信息或者传递错误的数据,返回包中包含路径地址。(可能会返回主机的绝对路径造成信息泄露)
修复建议
- 统一返回错误的页面,将不应该出现的信息进行删除。
管理安全
弱口令漏洞
默认密码弱口令
技巧
暂无
漏洞描述
- 系统新建用户时,初始密码默认设置为弱口令,存在被暴力破解的风险
修复建议
- 更改默认密码为安全系数更高的口令