*sql注入
四种方法
- 联合注入
- 基于错误的注入
- 布尔盲注
- 延时注入
联合注入
- 要求:联合的两张表有相同的列数和相同的数据类型
- 步骤:首先用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
- 原理:伪造用户发送请求,在用户打开正常站点并通过可信验证后,又打开了恶意页面,此时恶意页面伪造用户身份向正常服务器发送请求,主要是实现身份窃取,盗取用户权限
防御:
- 验证 HTTP Referer 字段:Referer字段表明了请求来源,当攻击方要求访问时,他会指向攻击方,但有些浏览器可以修改这个值,且有时会产生误报。
- 在请求地址中添加 token 并验证,构造黑客无法伪造的部分,由于token需要加入到get/post的参数中,而攻击者只是借用,无法获取cookie内容,因此无法构造token
- 在 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)一般是不被允许的