XSS漏洞
XSS(跨站脚本),全称:Cross-Site Scripting 简称为“CSS”
为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型:
1.反射性XSS;
2.存储型XSS;
3.DOM型XSS;
XSS漏洞一直被评估为web漏洞中危害较大的漏洞,在OWASP TOP10的排名中一直属于前三的江湖地位。
XSS是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。
形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。
因此在XSS漏洞的防范上,一般会采用“对输入进行过滤”和“输出进行转义”的方式进行处理:
输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入;
输出转义:根据输出点的位置对输出到前端的内容进行适当转义;
1.反射型XSS
(get型)
攻击者构造一段含有恶意代码的链接发给用户
用户点击了那个网站并携带着其中的恶意代码发送给服务器
然后服务器解析了恶意代码并返回给客户浏览器
客户浏览器就执行了其中的恶意代码
(post型)
攻击者编写一个钓鱼网站并把该网站链接发给用户
用户点击那个网站,触发其中的恶意代码
pikachu靶场实例
输入123的请求链接和返回的数据
http://localhost/pikachu/vul/xss/xss_reflected_get.php?message=123&submit=submit
输入<svg onload=alert(1)>的请求链接和返回的数据
http://localhost/pikachu/vul/xss/xss_reflected_get.php?message=%3Csvg+onload%3Dalert%281%29%3E&submit=submit
js代码被执行,弹出了警告
2.存储型XSS
黑客将恶意代码写入网站的网页,并被存入了数据库
其他用户只要访问这个网页,就会执行了藏在其中的恶意代码
pikachu靶场实例
将含有恶意代码的信息提交
每次访问这个网页都会弹出执行其中的js代码
3.DOM型XSS
关于DOM的文档 https://www.w3school.com.cn/htmldom/index.asp
跟反射型XSS类似,但解析恶意代码的位置不同
反射型XSS的恶意代码是由服务器解析,就是需要和服务器进行交互的
DOM型XSS的恶意代码是由用户浏览器解析,并不和服务器交互,利用DOM结构的漏洞,改变了DOM树的结构,执行恶意代码
pikachu靶场实例
输入123,出现下方超链接
检查元素
点击这个超链接,多了一个超链接
检查元素
尝试构造闭合,给这个超链接a元素增加一个属性
再次提交
检查元素
点击成功弹窗