常见的安全漏洞包括 XSS (跨站脚本攻击)、CSRF (跨站请求伪造)、SQL 注入、目录遍历、参数修改等等

1、参数修改

1.1 漏洞描述

参数修改常见的有2种方式:直接 URL 参数修改、拦截请求参数修改
例如:某网站 url 格式如下:http://xxx.com/FYBXSQ/imagelist.aspx?Id=xxxx&wyz=xxxx 在修改 Id 参数后,可以直接查看他人发票/身份证信息(逻辑上本不允许)。那么遍历这些 Id,就可以收集很多敏感的信息

1.2 如何防范?

参数修改防范:

  • 双向验证,客户端验证,服务器端验证
  • 传参加密
  • 关键信息保存到数据库,不要保存到前端和cookie,session中

暴力攻击防范:

  • 使用验证码
  • 对频繁请求,拒绝链接
  • 密码输入错误,锁定账号
  • 避免报错信息显示敏感信息,报错信息不要太明确(比如:用户名或密码错误)

    2、目录遍历

    2.1 漏洞描述

    程序没有充分过滤用户输入的 ../ 之类的目录跳转符,导致用户可以通过提交目录跳转来遍历服务器上的任意文件。使用多个 .. 符号,不断向上跳转,最终停留在根 /,通过绝对路径去读取任意文件。
    危害:读取敏感配置文件信息(数据库文件等)、可能造成源码文件泄露(一些管理员可能整站打包成 zip)
    图片2.png

    2.2 如何防范?

  • 对用户的输入进行验证,特别是路径替代字符如“../”和“~/”

  • 尽可能采用白名单的形式,验证所有的输入
  • 合理配置 Web 服务器的目录权限
  • 当程序出错时,不要显示内部相关配置细节
  • 对用户传过来的文件名参数进行统一编码,对包含恶意字符或者空字符的参数进行拒绝

    3、SQL注入

    3.1 漏洞描述

    SQL 注入即是指 web 应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在 web 应用程序中事先定义好的查询语句的结尾上添加额外的 SQL 语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息

    3.1.1 危害

  1. 数据库信息泄漏:数据库中存放的用户的隐私信息的泄露
  2. 网页篡改:通过操作数据库对特定网页进行篡改
  3. 网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击
  4. 数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被窜改

    3.2 如何防范?

  • 对进入数据库的特殊字符(单双引号 尖括号等)进行编码转换
  • 不要使用动态拼装 SQL,使用参数化 SQL
  • 不要使用管理员权限的数据连接,最好为每个应用使用单独的数据库连接
  • 应用异常信息尽量给出少的提示,最好自定义报错信息对原始报错信息进行包装

    4、安全测试工具

    使用工具可以粗略找到 app 中的安全问题,找到常见的易发现的安全问题,对测试人员的技能要求比较低。但是工具可能存在误报,也需要人为去验证

    4.1 WebGoat

    WebGoat 是 OWASP 组织研制出的用于进行 web 漏洞实验的应用平台,用来说明 web 应用中存在的安全漏洞
    WebGoat 运行在带有 java 虚拟机的平台之上,当前提供的训练课程有30多个,其中包括:跨站点脚本攻击(XSS)、访问控制、线程安全、操作隐藏字段、操纵参数、弱会话 cookie、SQL 盲注、数字型 SQL注入、字符串型 SQL注入、web 服务、Open Authentication 失效、危险的 HTML 注释等等。

    4.2 BurpSuite

    Burp Suite 是用于攻击 web 应用程序的集成平台,包含了许多工具。Burp Suite 为这些工具设计了许多接口,以加快攻击应用程序的过程