*sql注入

  • 四种方法

    1. 联合注入
    2. 基于错误的注入
    3. 布尔盲注
    4. 延时注入
  • 联合注入

    • 要求:联合的两张表有相同的列数和相同的数据类型
    • 步骤:首先用order by确定列数,再构造union 查询(如union select 1,database(),version() --+)获取,通过返回值确定目标点获取的是哪些列的值,再将这些列做替换获取目标数据库名、表名、列名等
  • 基于错误的注入

    • 原理:通过报错返回的结果确定信息
  • 布尔盲注

    • 原理:利用布尔值的结果判断构造语句的正确性
  • 延时注入

    • 原理和布尔盲注类似,在页面不提供反馈时,通过sleep函数设置时延,通过相应时间判断正确性 —— e.g. and if(length(database())>5,sleep(5),0) --+
  • 如何绕过空格过滤

    • 注释/**/绕过
    • 括号绕过

*XSS

  • 三种类型
    1.存储型XSS
    2.反射型XSS
    3.DOM
  • 存储型XSS

    • 将脚本永久保存至服务器端,如嵌入帖子、评论等,当客户端打开页面时就会执行注入脚本,导致敏感信息发送到攻击端
  • 反射型XSS

    • 需要引导客户端点击攻击者构造的恶意URL,将恶意代码参数添加到url中,由服务器的直接返回后被执行(如显示传过去的用户名)
  • DOM

    • 类似反射型,但不需要经过服务器直接嵌入
  • 防御:输入过滤

*CSRF

  • 原理:伪造用户发送请求,在用户打开正常站点并通过可信验证后,又打开了恶意页面,此时恶意页面伪造用户身份向正常服务器发送请求,主要是实现身份窃取,盗取用户权限
  • 防御:

    1. 验证 HTTP Referer 字段:Referer字段表明了请求来源,当攻击方要求访问时,他会指向攻击方,但有些浏览器可以修改这个值,且有时会产生误报。
    2. 在请求地址中添加 token 并验证,构造黑客无法伪造的部分,由于token需要加入到get/post的参数中,而攻击者只是借用,无法获取cookie内容,因此无法构造token
    3. 在 HTTP 头中自定义属性并验证

*文件上传漏洞

  • 用户端检测绕过:抓包修改后缀
  • 服务端检测:黑白后缀名单、Content-Type(表示文件类型)校验、文件magic number校验
  • 绕过方式:1.修改Content-Type 2.文件头部添加合理的magic number 3.文件00截断绕过(检测的是最后的后缀,截取的是00之前的部分)

*内网渗透

  • 已经控制内网一台机器,将其作为跳板机获取内网其他机器的控制权

*SSRF

  • 服务端请求伪造,利用服务器接受url资源请求而不过滤请求来源导致的攻击者利用服务器身份恶意伪造url访问其他资源--curl(如服务器直接用curl帮助获取资源,那将curl的资源地址改为其他敏感资源地址,就能够以服务器名义获取一些内部敏感资源信息)
  • 过滤方式:过滤ip地址的资源获取请求--http基础认证(后面接@new.com)、设置资源请求url白名单http://xxx.com(302重定向跳转)、检查url后缀...
  • 修复:限制协议、不使用重定向、设置访问白名单或只允许内网访问

*MySQL 安全 --ref:https://www.cnblogs.com/shamo...

  • 网络层面:让MySQL处于有保护的局域网中
  • 主机层面:拦截网络未授权用户入侵行为
  • 数据库层面:

    • 用户管理模块:负责用户连接登录的基本权限控制
    • 访问控制模块:控制数据库中的数据访问修改权限
  • 访问控制层面,数据库权限主要存储在grant tables的系统表中,包括:mysql.User,mysql.db,mysql.Host(已取消),mysql.table_priv和mysql.column_priv
  • grant/revoke授予或删除权限
  • 权限级别

    • Global Level:全局权限控制,最高权限级别,所有权限信息保存在mysql.user表中
    • Database Level:数据库级别的权限,管理对象为整个数据库,相较于全局缺少的权限包括:CREATE USER、FILE(指对服务器主机上文件的访问,输出文件和导入文件)等等
    • Table Level:表级别的权限,作用域为表:ALTER、CREATE、DELETE、DROP、INDEX、INSERT、SELECT、UPDATE
    • Column Level:INSERT、SELECT和UPDATE
    • Routine Level:EXECUTE和ALTER ROUTINE(更改存储过程),主要对象为函数和存储过程
    • Grant权限:可将自身的权限授予其他用户
  • 权限赋予时,应尽量不要赋予全局级别的权限,不授予对服务器文件读写的权限,尽量不使用root用户运行

*网络安全产品

  • 防火墙

    • 一般通过过滤ip:port等方式设置允许通过的白名单
  • 入侵检测系统IDS

    • 以旁路为主,不阻断网络访问的情况下提供报告和事后监督,需要设置特定的匹配模式去匹配入侵行为
  • 入侵防御系统IPS

    • 提供阻断,可以分析数据包内容,也需要设置特定攻击匹配模式
  • 对协议有针对性的系统,如WAF对HTTP协议的处理,DAF对sql查询类进行处理等

*跨域、同源

  • 同源策略是一个重要的安全策略,它用于限制一个origin的文档或者它加载的脚本如何能与另一个源的资源进行交互。它能帮助阻隔恶意文档,减少可能被攻击的媒介
  • 跨域写操作(Cross-origin writes)一般是被允许的。例如链接(links),重定向以及表单提交。特定少数的HTTP请求需要添加 preflight。
  • 跨域资源嵌入(Cross-origin embedding)一般是被允许(后面会举例说明)。
  • 跨域读操作(Cross-origin reads)一般是不被允许的
03-05 21:42