原文: https://owasp.org/Top10/zh_TW/
1. 权限失效
- 横向越权 A用户能查看,编辑B用户的数据
- 纵向越权,特权提升 租户能看到管理员的数据,普通用户能看到租户的数据,未登录的用户能看到登录用户的功能
- 通过修改URL,应用状态,不应该访问到的页面可以被访问到,通过API攻击工具,绕过页面鉴权
- CROS配置错误,可以让未经授权的API存取
2. 加密机制失效
- 使用了老旧的加密算法
- 密码多系统重复使用
- 明文存储密码
- 以http smtp fpt 等协议明文传输
- 使用默认密码
- 密码过期机制
- 密码没有被加盐加密存储
3. 注入攻击
- 使用者提供的数据应该被处理,验证,过滤后保存
- 查询参数没有被转义,尽量做到无参数调用
- ORM 对象查询参数注入
- SQL注入
4. 不安全设计
- 使用安全问题找回密码,可能问题不止本人一个人知道
- 预定团体票折扣,没有设置最大人数限制,而且押金只需要支付15人。被人恶意一次性订购了600张电影票,或者全部的电影票
- 订票软件没有防机器人抢票,票都被黄牛抢了
5. 安全配置错误
- 启用或安装了不必要的功能(例如,不必要的端口、服务、页面、帐户或权限)。
- 启用了默认账户密码,且未被修改
- 云服务配置错误
- 错误堆栈直接暴露到客户端,比如默认的500返回
- 对于已升级的新系统,最新的安全功能处于禁用状态或未安全配置。
- 应用程序服务器、应用程序框架(例如,Struts、Spring、ASP.NET)、库、数据库等中的安全性设置未设置为安全值。
- 服务器不发送安全标头或指令,或者它们未设置为安全值。
6. 危险或过时的组件
- 定期升级,维护软件依赖
- 删除未使用的依赖项
- 测试软件升级后的兼容性
- 使用官方安全来源获取组件
- 订阅使用组件的安全漏洞的邮件警报
7. 认证和验证机制失效
- 密码被暴力破解,自动攻击
- 默认密码、弱密码、
- 在url中公开会话标识符
- 成功登录后重用会话标识符
- 会话失效后,SSO没有注销登录
8. 软件及数据完整性失效
使用三方CDN,不安全的CI/CD管道,但是三方依赖被修改了,使用数字签名来避免
npm Maven 使用受信赖的源
使用软件供应链安全工具 OWASP CycloneDX
代码检查
CI/CD过程的权限控制,隔离控制,比如特定程序才有执行权限,目录权限
未被签名或者未被加密的序列化数据发送到不受信任的客户端(比如使用了云服务的静态资源托管,上传完成后应该把文件签名保存下来,下载之前应该比对签名后,再发送到客户端)
9. 安全日志记录及监控失效
确保所有登录、访问控制和服务器端输入验证失败都可以使用足够的用户上下文进行记录,以识别可疑或恶意帐户,并保留足够的时间以允许延迟取证分析。
确保以日志管理解决方案可以轻松使用的格式生成日志。
确保对日志数据进行正确编码,以防止对日志记录或监视系统进行注入或攻击。
确保高价值事务具有具有完整性控制的审计跟踪,以防止篡改或删除,例如仅追加数据库表或类似内容。
DevSecOps 团队应建立有效的监视和警报,以便快速检测和响应可疑活动。
建立或采用事件响应和恢复计划,例如美国国家标准与技术研究院 (NIST) 800-61r2 或更高版本。
10.服务器端请求伪造(SSRF)
服务器A与服务器B在内网连接,服务器A对外提供服务,且有SSRF漏洞,攻击者通过服务器A获取服务器B的相关信息。
危害
- 利用file协议读取本地文件
- 对服务器所在内网、本地进行端口扫描,获取一些服务的banner信息
- 攻击运行在内网或本地的应用程序
- 对内网web应用进行指纹识别,识别企业内部的资产信息
- 攻击内外网的web应用,主要是使用HTTP GET请求就可以实现的攻击
协议
file协议: 只能读取当前被攻击机的文件,内网机器文件不能读取
dict协议:泄露安装软件版本信息,查看端口,操作内网redis服务等
gopher协议:gopher支持发出GET、POST请求。可以先截获get请求包和post请求包,再构造成符合gopher协议的请求。gopher协议是ssrf利用中一个最强大的协议(俗称万能协议)。可用于反弹shell
http/s协议:探测内网主机存活
v1.5.2