跨站脚本攻击(Cross-Site Scripting,简称 XSS)是一种常见的网络安全漏洞。它是指攻击者在网页中注入恶意脚本代码,当用户访问该网页时,恶意脚本会在用户的浏览器中执行,从而导致一系列安全问题。这些问题可能包括窃取用户的敏感信息(如登录凭据、个人数据等)、劫持用户会话、进行恶意操作等。XSS 攻击主要利用了网页对用户输入内容处理不当的漏洞,是网络安全领域需要重点防范的威胁之一。
1. 我们用几个靶场的界面来简单的了解一下XSS漏洞,首先是一个简单的页面,通过后端代码就可以指定在输入框中输入什么,前端就会显示什么。
我前面讲的是要将一段JavaScript代码注入到网页中,如果我们将代码执行上去,需要将信息弹出来,这里我们用代码如下,发现果然弹窗了,也就是说,如果我们能找到一个存在漏洞的输入框,并且将类似的执行代码放到输入框中,就能达到某些目的。
<script>alert('cyr')</script>
很明显上面是一个POST类型的例子,我们再举例一个GET类型的例子,先看看前端的代码
主要就是我们给它一个url,它会给到一个指向自己的超链接,例如我们输入下列代码,就发现它形成了一个指向baidu的超链接
http://localhost/xss/get.html?url=http://www.baidu.com
我们再通过get请求,给到一个JavaScript的伪协议 ,发现网站确实执行了这段代码,假如加入的是一段恶意代码,那当用户点击的时候就会达到攻击的目的。
2.XSS类型
(1)反射型XSS:
- 依赖用户交互:攻击者需要诱使用户点击包含恶意脚本的链接或提交包含恶意脚本的表单。
- 一次性攻击:恶意脚本仅在用户访问特定页面时执行一次,不会在用户的浏览器中持久存在。
- 局限性较大:攻击的效果和范围相对有限,通常只影响当前访问该页面的用户。
- 可见性低:恶意脚本在用户的浏览器中执行后,可能不会立即被用户察觉。
(2)存储型XSS:
- 持久存在性:恶意代码被存储在服务器端的数据库、文件或其他存储介质中,会被多个用户访问和执行。
- 广泛性影响:能影响到所有访问包含恶意代码页面的用户,危害范围较广。
- 隐蔽性较强:用户可能在不知情的情况下受到攻击,不易被察觉。