0%

常见漏洞及拦截方式

SQL注入

  • 原理
    用户在输入中混入SQL命令,改变SQL语句本来的逻辑。

  • 防御

    • 匹配用户输入(长度,关键字,逻辑逻辑改变)
    • 检查语句规范,拦截异常SQL语句
    • 记录数据库异常
    • 正则表达式算法

SSRF

  • 原理
    服务器从其他服务器应用获取数据但没有对目标地址做过滤与限制,攻击者可以伪造服务端发起请求,对服务器进行攻击。(内网)

  • 防御

    • 输入参数来自用户,且为内网IP,判定为SSRF攻击
    • 检查常见探测域名
    • 检测私有地址
    • 检查混淆(如:改变进制)
    • 检查特殊协议

url重定向

  • 原理
    通过url重定向使用户访问其他网站,常用于钓鱼。

防御同SSRF

文件下载

  • 防御
    • 用户输入匹配
    • 用户输入匹配+http协议
    • 拦截异常协议
    • 禁止访问项目外文件
    • 文件探针

文件写入

  • 防御
    • 拦截NTFS::$DATA写入操作
    • 拦截脚本文件写入操作
    • 拦截通过反射、反系列化执行的文件写入操作

文件删除

  • 原理
    服务器未对用户输入进行限制,用户可以输入服务器文件路径,服务器对其进行解析后会删除服务器中的文件。

  • 防御

    • 用户输入匹配,禁止../

文件重命名

  • 防御
    • 通过重命名方式获取WebShell

文件管理器(文件目录?)

  • 防御
    • 用户输入匹配
    • 通过反射调用查看目录
    • 查看敏感目录

文件包含

  • 原理
    利用一些文件包含函数(如includerequire等)读取其他文件。

  • 利用方式

    • 读取服务器文件
    • 包含远程文件对服务器进行攻击
  • 防御

    • 用户输入匹配
    • 检查特殊协议

文件上传

  • 原理
    利用服务器对文件上传漏洞或者服务器对文件的解析规则漏洞,用户可以通过向服务器上传攻击性的文件,服务器对其解析后执行文件。

  • 常见绕过审核方式

    • 改文件后缀名绕过检查
    • 上传正常拓展名文件后对数据抓包进行修改
    • 在正常文件内容中嵌入攻击语句
    • 0x00截断
    • 多个filename属性混淆
  • 防御措施

    • 通过COPY/MOVE方式上传脚本
    • Multipart方式上传脚本HTML/JS/DLL/EXE等文件

XXE

  • 原理
    在DTD中引用外部XML实体构造恶意内容,可以进行读取文件内容或执行恶意命令等一系列攻击行为。

  • 防御

    • 禁用外部实体加载
    • 使用异常协议加载外部实体
    • 使用file协议读取内容
    • 过滤关键字<!DOCTYPESYSTEM

命令注入

  • 原理
    程序中不安全使用命令执行函数(如:execsystempassthrueval等),用户可以用来执行攻击语句。

  • 防御

    • 通过反射执行命令
    • 匹配用户输入
    • 识别常用渗透命令(探针)
    • 查找语法错误和敏感操作
    • 记录或拦截所有命令执行操作

XSS

  • 原理
    用户将恶意代码写入网页,可以获取被攻击者在目标网站上的cookie等重要信息。

  • 类型

    • 反射型
      写入攻击代码,一次性攻击。
    • 存储型
      将攻击代码储存到服务器文件或数据库中,每次重新请求页面时都会执行攻击代码。
  • 防御

    • 拦截输出在响应里的反射XSS
    • (PHP)禁止直接输出GPC参数
    • (PHP)拦截PHP[中国菜刀|命令执行|文件上传|array_map/walk/filter|LD_PRELOAD]后门