XSS漏洞详解

一、XSS简介

        跨站脚本攻击(Cross Site Script)为了和层叠样式表CSS有所区别,所以在安全领域叫做“XSS”。

        XSS攻击,通常指攻击者在网页中嵌入恶意代码,用户访问网页或点击链接触发恶意代码而被攻击。


二、XSS造成的危害

  • 网站钓鱼、包括盗取各类用户账号;
  • 窃取用户的Cookie;
  • 强制弹出广告页面、刷流量;
  • 传播蠕虫病毒;
  • 网页挂马、进行恶意操作等;

三、XSS原理

        XSS是一种发生在前端页面的漏洞,它的危害对象是前端用户,形成XSS漏洞的主要原因是Web应用程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端被浏览器当作有效的代码解析从而产生危害。


四、漏洞分类及利用

4.1 反射型XSS

        反射型XSS也被称为非持久型XSS,是比较容易出现的一种XSS漏洞,当用户点击了一个攻击者“精心构造”的URL时,服务器端接收数据后处理,然后把带有XSS代码的数据发送到浏览器,浏览器解析这段带有XSS代码的数据,最终造成XSS漏洞,这个过程就像一次反射,故称之为反射型XSS。

        下面以pikachu靶场来演示反射型XSS的利用

pikachu靶场:https://github.com/zhuifengshaonianhanlu/pikachu

这里当我们输入到20个字符时就会发现无法继续输入了

XSS漏洞详解_第1张图片

右键选择检测会发现HTML代码对输入的长度进行了限制,这里我们将20修改即可

XSS漏洞详解_第2张图片

在搜索框中输入上面的代码成功将/XSS/回显出来,当然我们将script标签的代码换成其他的JS代码可以实现其他的操作。

XSS漏洞详解_第3张图片

 4.2 存储型XSS

        存储型XSS又被称为持久性XSS,存储型XSS是最危险的一种XSS。允许用户存储数据的Web应用程序可能会出现存储型XSS漏洞,当攻击者构造了并提交了一段XSS代码后,被服务器端接收并存储,当有用户访问被注入了存储型XSS代码的页面时,这段XSS代码会被程序读出来响应给浏览器,造成XSS跨站攻击。存储型XSS与反射型XSS和DOM型XSS相比具有更高的隐蔽性,危害性也大。它们之间最大的区别在于反射型XSS与DOM型XSS执行都必须依靠用户手动触发,而存储型却不需要。

1313

在留言板上输入上面代码并提交,就会将/xss/回显,并且每当点击这个页面时都会弹出一个提示框

XSS漏洞详解_第4张图片

 4.3 DOM型XSS

        DOM的全称为Document Object Model,即文档对象模型,DOM通常用于代表在HTML。XHTML和XML中的对象,使用DOM可以允许程序和脚本动态的访问和更新文档的内容、结构和样式。DOM型的XSS和反射型的XSS大致相同都是依靠用户手动触发的漏洞。

#' onclick="alert('xss')">

我们在搜索框中写入上面的代码会出现一个超链接

XSS漏洞详解_第5张图片

 当我们点击这个超链接就可以触发DOM型XSS

XSS漏洞详解_第6张图片


 五、总结

        XSS跨站脚本攻击漏洞产生的根本原因还是没有对用户的提交的数据,后台没有做过滤或过滤不完全,将用户输入的信息打印出来,那么攻击者就可以构造特定的 payload 来在前端执行JS语句,就造成了XSS漏洞。

        防御方式:

        ① 架设WAF,虽然不能完全解决XSS漏洞,但可以拦截大部分敏感数据,防止黑客利用;

        ② 对用户的输入进行过滤,对输出进行转义处理;

        ③ 使用 htmlspecialchares 之类的函数,设置httponly。

你可能感兴趣的:(WEB漏洞,xss,前端)