day4作业
1. 总结反射型、存储型、DOM型XSS特点和区别
2. 上网搜索一份XSS 的fuzz字典或字典生成工具(可选)
3. 到XSS挑战靶场打靶,要求通过5关以上,通关越多,加分越多。(https://xss.tesla-space.com/)
4. 总结浏览器解析机制,若不能理解,解释《漏洞利用之XSS注入》中15条中,至少5条执行成功或不成功的原因。(可选)
1.xss总结
1.1反射型XSS(Reflected XSS)
攻击代码即时反射到页面中,通常通过用户输入(如URL参数、表单数据)在服务器响应中显示。
攻击代码不存储在服务器上,仅在当前请求的响应中出现。
依赖于用户与恶意链接或表单的交互,攻击代码通过HTTP请求直接反射到浏览器。
1.2存储型XSS(Stored XSS)
恶意脚本存储在服务器上(如数据库、日志文件或其他存储介质),每次相关内容被请求时都可能执行。
存储的攻击脚本会影响所有查看该内容的用户,因为脚本是持久保存的。
通常通过用户生成的内容(如评论、帖子、用户资料)提交并存储在服务器上。
1.3DOM型XSS(DOM-Based XSS)
攻击在客户端发生,恶意脚本通过JavaScript动态修改页面的DOM(文档对象模型)来执行。
攻击不依赖于服务器响应,而是依赖于客户端的JavaScript和DOM操作。
脚本通常利用URL参数或其他客户端输入,直接操作页面元素,影响页面的显示和行为。
1.4区别:
反射型XSS:攻击代码通过用户输入直接反射到当前请求的响应中,攻击是即时发生的,不存储在服务器上。
存储型XSS:恶意脚本被持久存储在服务器上,影响所有查看该内容的用户,攻击脚本在每次相关内容请求时自动执行。
DOM型XSS:攻击在客户端发生,通过修改DOM执行,独立于服务器响应,依赖于客户端的JavaScript和DOM操作。
2.fuzz字典
easyXssPayload/easyXssPayload.txt at master · TheKingOfDuck/easyXssPayload · GitHub
3.xss打靶
靶场:欢迎来到XSS挑战 (tesla-space.com)
第一关:
查看源码,可以发现get传参name的值test插入了html里头
payload: <script>alert()</script>
第二关:
网页会回显搜索的输入值
查看源码
payload:" > <script>alert()</script> < ",闭合输入值两边的引号和尖括号
第三关:
查看源码
这里需要闭合的双引号变为了单引号,其它看着跟第二关差不多
将第二关的payload改为‘ > <script>alert()</script> < ’尝试一下
尝试失败,可以看到尖括号被转义了
利用html dom事件onmouseover构造新的
payload:' οnmοuseοver=javascript:alert() '
第四关:
查看源代码
用第二关的payload尝试了下,发现尖括号和双引号都被转义了
还是能利用html dom事件绕过
payload:" οnmοuseοver=javascript:alert() "
第五关:
查看源代码
看着跟第四关差不多,试试第四关的payload
onmouseover被加了一个下划线
试试其它的,发现还是一样
找找别的方法
发现可以用a标签的herf属性
payload:" > <a href=javascript:alert()>xss</a> < "
4.浏览器解析机制
获取资源:浏览器通过网络请求获取HTML、CSS、JavaScript等资源。
解析HTML:将HTML解析成DOM树。
解析CSS:将CSS解析成CSSOM树。
构建渲染树:结合DOM和CSSOM生成渲染树。
布局:计算每个元素的位置和大小。
绘制:将元素绘制到屏幕上。
JavaScript执行:执行脚本,可能会导致DOM和CSSOM更新。8) 重绘与回流:处理因脚本执行或用户交互而引发的视觉变化。