什么是XSS:
Cross-Site Scripting(跨站脚本攻击)简称XSS,是一种代码注入攻击。攻击者通过在目标网站上注入恶意脚本,使之在用户的浏览器上运行。利用这些恶意脚本,攻击者可获取用户的敏感信息如 Cookie、SessionID 等,进而危害数据安全。
XSS的本质:
恶意代码未经过滤,与网站正常的代码混在一起;浏览器无法分辨哪些脚本是可信的,导致恶意脚本被执行。而由于直接在用户的终端执行,恶意代码能够直接获取用户的信息,或者利用这些信息冒充用户向网站发起攻击者定义的请求。在部分情况下,由于输入的限制,注入的恶意脚本比较短。但可以通过引入外部的脚本,并由浏览器执行,来完成比较复杂的攻击策略。
XSS的分类:
1、存储型XSS
2、反射型XSS
3、DOM型XSS
本文着重介绍存储型XSS漏洞的形成原因及其影响。
准备工具:
DVWA渗透测试平台,POSTMAN测试工具,Vulnhub靶机
DVWA平台搭建非常简单,首先下载DVWA平台安装包将安装包解压到PHPstudy环境即可。
我们先来看DVWA渗透测试平台中存储型XSS漏洞是如何构造的,先将DVWA的难度级别调整为low。
我们来看一下级别为low的源代码。
通过查看其源代码,我们可以看到只对输入字符串去除两侧空格及反斜杠,其他未做任何过滤策略,级别为low的存储型XSS攻击最为简单,只需要构造最常见的payload即可。
name:test1message:<script>alert("test1")script>
提交后,我们再刷新浏览器时即会弹出alert窗口。
接下来,我们将难度级别调整为中级,并查看中级源代码。
中级对传入的name和message分别作了不同的过滤。
如message在双引号前添加反斜杠,并进行了htmlspecialchars 将特殊字符转换为 HTML 实体,name使用了str_replace进行字符替换,将匹配到的