一、漏洞原理
允许攻击者在用户的浏览器中执行恶意的脚本。只要是能输入参数的地方都可能产生XSS,比如说评论区,搜索框等。
二、漏洞利用
XXS漏洞常用于钓鱼,Cookie值窃取等操作。可以和文件上传漏洞打组合拳。
靶场:Pikachu靶场
- 反射型XSS
反射型XSS攻击又被称为非持续化攻击。通常通过构造恶意的URL语句,发送给用户造成攻击。
这个就是简单的反射型XSS通过修改URL参数。
- 存储型XSS
存储型XSS又被称为持续化攻击。它会把攻击者的恶意脚本存储到服务器数据库和文件中,大多数通过留言功能,评论区等功能,当用户访问这个些被写入恶意脚本的评论时就会被造成攻击。
这个留言板功能,我们输入javascript的弹窗
这个语句已经存储到服务器的数据库里面
- DOM型XSS
DOM(Document Object Model)是HTML文档的一种表现形式,它以树状结构组织页面内容。这个树状结构包含了HTML标签、文本、属性等所有页面元素的信息。我们插入恶意脚本在DOM树中,当浏览器执行HTML时就会解析我们插入在HTML中的恶意代码造成攻击。所以说DOM型XSS不需要和浏览器产生交互。
<!DOCTYPE html>
<html>
<head>
<title>XSS示例</title>
<script>
// 获取 URL 中的参数并插入到页面
var userInput = window.location.hash.substring(1);
document.getElementById('output').innerHTML = userInput;
</script>
</head>
<body>
<div id="output"></div> //这里就是在浏览器解析DOM树时,就是执行我们刚刚插入的script代码
</body>
</html>
这个就是构造的URL:http://example.com/page.html#<script>alert('XSS')</script>
var userInput = window.location.hash.substring(1);
document.getElementById('output').innerHTML = userInput;
//这里就是把我们在URL上输入的script代码插入到里面
它是在html里面的a href里面执行的
三、漏洞修复
- 过滤和转义字符
- 安全策略(CSP)
- HTTP only标记