【Web安全攻防从入门到精通】Web安全入门

Web安全入门

漏洞分类

  • SQL注入
  • XSS漏洞
  • CSRF漏洞
  • SSRF漏洞
  • XXE漏洞
  • 反序列化漏洞
  • 文件上传漏洞
  • 任意文件下载漏洞
  • 远程代码执行漏洞
  • 越权漏洞

SQL注入漏洞

原理

没有对浏览器提交的参数进行严格的过滤和判断。用户可以修改构造参数,提交sql语句,并传递到服务端,获取敏感信息,甚至执行危险代码或系统命令

危害

  • 获取敏感信息
  • 修改信息
  • 数据库备份
  • 上传webshell
  • 执行命令

防御

  • 参数化查询
  • 使用安全的API
  • 使用白名单来规范化输入验证方法
  • 输入的字符进行Escape转义处理

XSS漏洞

原理

通过破坏HTML结构,注入JavaScript代码执行恶意命令

类型

  • 反射型
  • 存储型
  • DOM型

防御

  • 对用户输入的数据进行合法性检查
  • 使用filter过滤敏感字符或者进行编码转义
  • 支队特定类型数据进行格式检查
  • 对输出内容进行编码转义

CSRF漏洞

原理

让受害者在不知情的情况下做出攻击者期望的操作。在已经登陆A的情况下,访问恶意网站B,带着A的Cookie进行操作。

防御

  • 验证请求的Referer是否来自本网站,但可被绕过
  • 请求中加入不可伪造的Token,在服务端检查Token是否一致或者正确,不正确则丢弃拒绝服务

SSRF漏洞

原理

Web提供了获取外网资源的功能,并且URL可控。攻击者能够通过修改URL获取服务器内的敏感信息,对外网、服务器所在内网、本地进行端口扫描,获取一些服务的banner信息,也可以利用file协议读取本地文件

防御

  • 禁止跳转
  • 限制协议
  • 内外网限制
  • URL限制

XXE漏洞原理

原理

属于注入类,注入的是XML语句。弱配置的XML解析器处理包含对外部实体引用的XML输入时,就会发生此攻击。可能会导致泄露机密数据、拒绝服务、SSRF,以及从解析器所在的计算机角度进行端口扫描等系统影响。

防御

  • 打开php的libxml_disable_entity_loader(true),不允许加载外部实体
  • 过滤用户提交的xml数据,如ENTITY、SYSTEM

反序列化漏洞

原理

序列化是为了减少传输内容大小的一种压缩方法。反序列化就是将含有类信息序列化过的字符串“解压缩”还原成类。而当Web应用对反序列化对应的输入没有做严格限制,就会产生反序列化漏洞。

防御

禁止把用户的输入或用户可控的参数值直接放入反序列化的操作中

文件上传漏洞

原理

网站没有对可上传文件类型做阉割的检查,或者存在中间件配置问题,又或者是检查代码写的不够严格,导致攻击者可以上传恶意脚本,借以植入后门进入服务器

防御

  • 配置白名单限制文件后缀名和文件类型
  • 限制上传文件的大小
  • 对上传文件进行重命名操作

任意文件下载漏洞

原理

网站提供文件下载功能,但没有对用户下载的文件做限制,则恶意用户能够查看或下载任意敏感文件

防御

  • 过滤../等敏感字符,使用户在URL中不能回溯上级目录
  • 文件下载时判断输入的路径,最好的方法是文件应该在数据库中进行一一对应,避免通过输入绝对路径来获取文件
  • php.ini配置open_basedir限制文件访问范围

远程代码执行漏洞

原理

在Web应用上执行自己的恶意代码达到攻击效果。有时为了Web效果的灵活性,会在代码中使用exec、system等函数,如果过滤不当,就会产生此漏洞。

防御

  • 尽量少用执行命令的函数或者直接禁用
  • 参数值尽量使用引号包括,并在拼接前调用addslashes函数进行转义
  • 在使用动态函数之前,确保使用的函数是指定的函数之一

越权漏洞

原理

  • 水平越权:统计用户的越权操作,如查看用户信息
  • 垂直越权:低等级执行高等级操作,如增删改。

只要对权限的检测不到位,就有可能发生越权漏洞

防御

  • 前后端同时对用户输入信息进行校验,设置双重验证机制
  • 执行关键操作前必须验证用户身份,验证用户是否具备操作数据的权限
  • 直接引用对象的加密资源ID,防止攻击者枚举ID,敏感数据特殊化处理
posted @ 2022-10-26 16:30  灰心爷爷  阅读(597)  评论(0编辑  收藏  举报