总结反射型、存储型、DOM型XSS特点和区别
反射型XSS:
-
特点:恶意代码从请求中的URL参数反射到响应页面中
-
不会存储在服务器上
-
需要诱导用户点击特制的链接才能触发
-
影响范围相对较小,只影响点击链接的用户
存储型XSS:
-
特点:恶意代码被存储在服务器数据库中
-
攻击持续时间长,影响所有访问页面的用户
-
不需要用户交互就可以触发
-
危害较大,可能影响多个用户
DOM型XSS:
-
特点:在客户端JavaScript中执行,不经过服务器
-
修改页面DOM结构来插入恶意代码
-
难以被服务器端的防御措施检测到
主要区别:
-
反射型和存储型XSS涉及服务器,DOM型仅在客户端执行
-
存储型XSS持续时间最长,影响范围最大
-
反射型XSS需要用户交互,存储型和DOM型可能不需要
-
DOM型XSS更难被服务器端防御检测到
上网搜索一份XSS 的fuzz字典或字典生成工具(可选)
GitHub - s0md3v/XSStrike: Most advanced XSS scanner.
XSStrike具有智能payload生成器、强大的模糊测试引擎和多种解析器来分析响应并生成上下文适当的payloads。它支持反射型、DOM型XSS扫描,并提供WAF检测和规避技术。XSStrike还可以从文件中暴力破解payloads。
到XSS挑战靶场打靶,要求通过5关以上,通关越多,加分越多。(https://xss.tesla-space.com/)
1.xss.tesla-space.com/level1.php?name=test</h2><script>alert("123")< /script>
2.https://xss.tesla-space.com/level2.php?keyword=123"><script>alert('Vulnerable')< /script><&submit=%E6%90%9C%E7%B4%A2
3.https://xss.tesla-space.com/level3.php?keyword=1'onmouseover%253Dalert(123)//
4.https://xss.tesla-space.com/level4.php?keyword=1%22οnmοuseοver=alert(111)//
浏览器解析机制
HTML解析:
-
浏览器从服务器接收HTML文档。
-
解析器将HTML标记转换为令牌(tokens)。
-
令牌被转换为节点对象。
-
节点对象被链接到一个树状数据结构中,形成DOM(文档对象模型)树。
预加载扫描:
-
在主HTML解析器工作的同时,预加载扫描器会查看文档的其余部分。
-
它识别并发起对CSS、JavaScript和其他高优先级资源的请求。
-
这有助于加快页面加载速度。
CSS解析:
-
当遇到CSS(内联、内部或外部)时,CSS解析器开始工作。
-
它将CSS规则转换为可以理解和应用的结构。
-
创建CSSOM(CSS对象模型)树,描述如何应用样式到文档。
JavaScript解析与执行:
-
当遇到JavaScript代码时,解析过程可能会暂停(除非脚本被标记为异步或延迟)。
-
JavaScript引擎解析并执行代码。
-
执行的JavaScript可能会修改DOM和CSSOM。
构建渲染树:
-
浏览器将DOM和CSSOM组合成渲染树。
-
渲染树只包含需要显示的元素(例如,不包括
<head>
元素和display: none
的元素)。
布局:
-
计算每个可见元素的精确位置和大小。
-
这个过程也称为"重排"。
-
布局是一个递归过程,从根元素开始,依次计算子元素的几何信息。
绘制:
-
将渲染树中的各个节点转换为屏幕上的实际像素。
-
这个阶段包括文本渲染、颜色填充、边框绘制等。
-
通常,绘制是分层完成的。
合成:
-
将绘制的层组合在一起,形成最终的图像。