Web服务端漏洞

  • SQL注入攻击
    • 名词解释

      SQL注入攻击(SQL Injection),简称注入攻击、SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞。由于在设计程序时,忽略了对输入字符串中夹带的SQL指令的检查,被数据库误认为是正常的SQL指令而运行,从而使数据库受到攻击,可能导致数据被窃取、更改、删除,甚至执行系统命令等,以及进一步导致网站被嵌入恶意代码、被植入后门程序等危害。

    • 常见发生位置
      • URL参数提交,主要为GET请求参数。
      • 表单提交,主要是POST请求,也包括GET请求。
      • Cookie参数提交。
      • HTTP请求头部的一些可修改的值,例如Referer、User_Agent等。
      • 一些边缘的输入点,例如mp3、图片文件的一些文件信息等。
    • 防御措施
      • 使用预编译语句。一般来说,防御SQL注入的最佳方式,就是使用预编译语句,绑定变量,但对现有代码的改动量较大。
      • 使用存储过程。使用安全的存储过程可在一定程度上对抗SQL注入,但要注意此种方法并不是100%安全。
      • 严格检查用户数据。对用户传入的数据类型及内容进行严格的检查。对数据类型检查,如利用ID查询时判断是否为整型,输入邮箱时判断邮箱格式,输入时间、日期等必须严格按照时间、时期格式等;对数据内容进行检查,如严格检测用户提交数据中是否包含敏感字符或字符串,是否匹配某种注入规则,严格转义特殊字符等。注意此种方法虽然便于实施,但容易产生误报和漏报,且容易被绕过。
      • 其他。使用安全的编码函数、统一各数据层编码格式(如统一使用UTF-8等)、严格限制数据库用户权限、定期进行代码黑盒白盒扫描、避免将错误信息显示到页面等。
  • 文件上传
    • 名词解释

      文件上传漏洞是指由于程序代码未对用户提交的文件进行严格的分析和检查,导致攻击者可以上传可执行的代码文件,从而获取Web应用的控制权限(Getshell)。

    • 常见发生位置
      • 所有使用到上传功能的位置。
      • 用户可自定义的头像、背景图片等。
      • 富文本编辑器中的文件上传功能。
    • 防御措施
      • 上传目录设置为不可执行。
      • 严格判断文件类型,使用白名单而不是黑名单(注意大小写问题)。需要注意的是一些与Web Server相关的漏洞所造成的问题,如Apache、IIS、Nginx等的文件解析漏洞。
      • 使用随机数改写上传后的文件名和文件路径。
      • 单独设置文件服务器及域名。
  • 权限漏洞