提示:此文章为学习XSS原理,内容繁多
文章目录
XSS概述
Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型:
1.反射性XSS;
2.存储型XSS;
3.DOM型XSS;
XSS漏洞一直被评估为web漏洞中危害较大的漏洞,在OWASP TOP10的排名中一直属于前三的江湖地位。
XSS是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。
形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。
一、反射型XSS
特征:一次性、前端执行、不会存储在后端数据库
1、测试特殊字符
首先在输入框输入,'(单引号)、"(双引号)、<>(左右尖括号)、666(数值),目的是为了测试在点击提交时是否被过滤掉,因为输入的内容含有特殊字符。
然后再验证输入的内容有没有被正常输出
2、分析源代码
右键查看网页源代码,Ctrl+F查询输入的内容666,显示刚刚输入的内容被正常的输出到< html >的< p >标签的原码里面
也就意味着我们输入正确的JavaScript代码它也会原封不动的输出呢?
3、构造Payload
输入框里构造一个简单的Payload(有效载荷),< script>alert(‘xss’)</ script>(这里因为网站的原因在俩个<>尖括号后面多打了个空格,练习的小伙伴要把空格去掉!)
当我输入一半发现有长度限制,只能输入长度以内的字符
处理方法右键检查,将最大长度"20"改为"200"这样就能输入更多的内容
4、验证漏洞
继续输入Payload(有效载荷),< script>alert(‘xss’)< /script>,点击提交按钮
发现我刚刚提交的JavaScript代码在浏览器里面输入输出后,成功执行,按照我的预期弹出XSS的字符。这个就是一个反射型XSS
二、存储型XSS
1、留言测试
特征:持久性的、前端执行、存储在后端数据库
切换到存储型XSS栏目,能看到界面有一个留言板,在留言板输入,111、'"<>!666(含有特殊字符的内容),点击提交,发现留言会存储在页面上,点击刷新能看到留言会一直存在,也就是说我们提交的留言是被后台存储在数据库里面
2、分析源码
查看网页源代码,我们输入带有特殊符号的字符,输出在< p>标签里面,和反射型XSS输出的方式是一样,看样子也是没有任何过滤和转义的处理