XSS(跨站脚本攻击)
原理
通过精心构造的代码(JavaScript)注入到网页中,当用户访问被XSS脚本注入过的网页时,XSS脚本就会被提取出来,并由浏览器解释运行这段JS代码,达到恶意攻击的效果
类型
-
反射型---非持久性XSS,参数型跨站脚本
-
仅执行一次
-
- 存储型
-
一般发生在论坛、博客、留言板,通过把XSS攻击代码嵌入发帖,写入数据库,只要用户访问数据库,就会执行XSS代码。
-
-
DOM型
-
通过JS代码操作DOM文档对象模型时触发的漏洞,一般不与服务端进行交互
-
危害
获取用户身份信息,如cookie信息、浏览器信息、IP地址等
后台增删改网站数据等操作 --- 可以配合CSRF漏洞,骗取用户点击,利用js攻击浏览器
获取键盘使用记录
钓鱼
传XSS蠕虫,微博蠕虫、贴吧蠕虫
植入广告链接、木马等
注入点
由用户输入或与数据库交互的地方,如留言板、贴吧等
防御
-
输入验证,对用户输入进行验证
-
仅接受指定长度
-
仅包含合法字符
-
仅接受指定范文
-
特殊格式
-
-
输出编码(用来确保输入的字符被视为数据,而不是作为html被浏览器所解析)
-
黑白名单策略
-
开启httponly属性
绕过
-
大小写绕过
-
双写绕过
-
/代替空格
-
引号
-
使用HTML实体编码
-
利用JavaScript事件
-
利用URL编码
-
使用不完整的HTML标签
-
利用编码绕过
-
...
SQL注入
原理
由于没有对用户输入进行过滤,并直接将用户输入与SQL语句以字符串拼接的方式连接,导致用户的不安全输入被视作正常SQL语句来执行
类型
-
字符型
-
数字型
-
区别:如果有报错回显,报错信息中含有输入的字符串,则为字符型,没有则为数字型
注入手法
- 常见注入手法
-
联合查询
-
报错注入
-
布尔盲注
-
延时注入
-
堆叠查询
-
宽字节注入
-
-
提交参数方式
-
GET注入
-
POST注入
-
Cookie注入
-
HTTP头部注入
-
-
特殊注入方式
-
cookie注入
-
base64注入
-
User-Agent注入
-
Referer注入
-
危害
-
对数据库增删改查
-
脱库
-
获取用户敏感信息(用户数据库账密等)
-
提权
-
植入网页木马,对网页进行篡改
注入点
用户输入与数据库交互的地方,都有可能存在SQL注入的风险
防御
-
不使用字符串拼接的方式构造SQL语句,使用预编译
-
对用户输入进行过滤
-
使用waf
绕过
-
空格过滤绕过
-
/**/绕过
-
制表符绕过
-
换行符绕过
-
括号绕过
-
`反引号绕过
-
-
内联注释绕过【常见waf!!!】
-
大小写绕过
-
双写关键字绕过
-
编码绕过
-
双重URL编码绕过
-
十六进制编码绕过
-
Unicode编码绕过
-
ASCII编码绕过
-
-
等价函数字符替换绕过
-
用like或in代替=
-
逗号过滤
-
等价函数
-
-
逻辑符号替换
-
宽字节绕过
-
正则表达式替换
-
...