web漏洞初认识(上)

学习内容纯属个人见解,若有错误,请君斧正,谢谢😗

什么是OWASP TOP 10

owasp :open web application security project 官网传送门
一个开放的web应用安全的论坛或者组织,具有较强的公信力。

owasp top 10该组织给Web 应用程序安全漏洞进行归类,总结,得出每年度web层面最严重的安全漏洞类型前10名

2020 owasp top 10

  • 注入
  • 失效身份验证和会话管理
  • 敏感信息泄露
  • XML外部实体注入攻击(XXE)
  • 失效访问控制
  • 安全性错误配置
  • 跨站脚本攻击(XSS)
  • 不安全的反序列化
  • 使用具有已知漏洞的组件
  • 日志记录和监控不足

NO.1 注入

1.1 什么是注入

注入:攻击者向应用程序提交,通过构造恶意的sql语句,最终改变开发者定义的sql查询语句的语法和功能

因为注入类型多且杂,无法在本文中详述。

SQL注入的主要原因是程序没有严格过滤用户输入的数据,导致非法数据侵入系统.

1.2 防范措施
  • 严格过滤用户输入字符,例如’、’’、<、>、/、*、;、+、-、&、|、(、)、and、or、select、union等。
  • 设置数据库权限的严格划分,该数据库下的应用不能调用其余数据库。
  • web应用连接数据库的用户,不应具有web目录下的权限
  • 采用参数化查询1,避免未经过滤的语言直接拼接到sql语句中

NO.2 失效身份验证和会话管理

2.1 什么是身份验证和会话

失效的身份验证大致分三类:

  • 在身份验证处,没有身份认证,安全性较差的身份认证,身份认证可以被绕过,弱密码,均可能暴力破解。
  • 在身份信息传输中,没有加密或者采用弱加密,导致身份信息泄露,被进一步利用。
  • 在身份恢复处,存在逻辑问题,可能导致可以修改任意用户身份信息。

会话管理:

  • 公开会话id或者会话id生成机制过于简单,导致猜出机制或者直接得到id,获得对应权限。
  • 会话凭证存在用户退出未被销毁或者会话超时时间过长,导致用户权限被获取。
  • 用户权限发生变更时,会话凭证,并没有更新,导致会话信息重用风险。
2.2 防范措施
  • 采用强加密和安全的验证机制和找回机制,甚至采取双因子认证。
  • 进行弱口令的基线检查,限制登录失败次数,必要时,封禁IP,防止暴力爆破。
  • 对于会话凭证应及时销毁,不要将明文会话id暴露数据包中。生成的新的会话id建议采用随机数和时间戳结合加密,以保证无法猜测出来。

NO.3 敏感信息泄露

3.1 什么是敏感信息

敏感信息:通常是指:框架,中间件,语言,系统等版本信息,登录信息(用户名,账号,密码,cookie,私钥等),源代码残留(.git,.svg等),敏感页面残留(测试页面,后台或者高权限用户登录页面等),个人敏感信息(身份证号,交易凭证,银行卡号,电话号码等)

危害:存在该漏洞均可能会被不同程度的利用。

3.2 防范措施
  • 删除不必要的文件和页面
  • 保证密码密钥的存储可靠
  • 减少或者不回显敏感版本信息
  • 敏感信息加密传输

NO.4 XML外部实体注入攻击(XXE)

4.1 什么是XML

XML (extensible makeup language):可扩展标记语言,主要用来进行数据传输和存储。
XML文档是由XML声明,DTD,XML文档元素三部分组成
当然在XML中还需要介绍一下实体
实体分为:

  • 外部一般实体
  • 外部参数实体
  • 内部一般实体
  • 内部参数实体
    合计:四种实体类型
    具体实例详见XXE漏洞学习
4.2 什么是XXE

XXE 是指:XML外部实体注入 主要作用于外部实体
XXE利用:

  • 文件读取
  • 命令执行
  • SSRF
  • 内网端口嗅探
  • 目录遍历
4.3 防御措施
  • 禁用外部实体
  • 编译或者禁用特殊参数 like:ENTITY SYSTEM等

NO.5 失效访问控制

5.1 什么是失效访问控制

未对通过身份验证的用户实施恰当的访问控制。攻击者可以利用这些缺陷访问未经授权的功能或数据,例如:访问其他用户的帐户、查看敏感文件、修改其他用户的数据、更改访问权限等2

5.2 漏洞场景
  • 水平越权 :
    用户能够访问到相同权限下的其余用户才能访问的信息。

  • 垂直越权:
    低权限用户能够使用或者使用或者访问到高权限用户的接口或信息。

  • 未授权访问:
    任意用户均可不经授权使用敏感功能或者信息

5.3 防范措施
  • 在功能调用时,验证用户是否具备相对应的权限。

  • 对用户的输入,及其可控参数进行检查和对恶意输入进行过滤。

PS:接下来开始以上漏洞的实验
介于当前个人问题,暂时学习web漏洞,谢谢


  1. 参数化查询,利用PreparedStatement对象的set方法给参数赋值。参数化查询强制要求给每个参数定义类型,这种方式使得数据库能够区分出哪些属于代码段哪些属于数据段。 ↩︎

  2. 引用于https://www.cnblogs.com/pengdai/p/12169534.html#_label1 ↩︎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值