![464abbc003141cbf430d3696874d55a5.png](https://i-blog.csdnimg.cn/blog_migrate/cf4b6e5cd4cff713ae700b1bb54e6d51.jpeg)
跨站脚本攻击(Cross Site Scripting , XSS)是指攻击者巧妙的将恶意代码注入到网页中,当用户浏览器中加载网页、渲染网页时,就会执行的恶意代码的过程。经常遭到XSS漏洞的典型应用有 邮件、论坛、留言板等。新浪微博、百度贴吧也曾遭受过 XSS攻击。
对内容有不理解的小伙伴或发现错误的小伙伴,可以私信和我联系,共同探讨。如果您喜欢,麻烦点个赞,(づ ̄ 3 ̄)づ
- XSS可以造成哪些危害?
- 窃取用户cookies资料,从而获取用户隐私信息,或利用用户身份进一步对网站进行操作
- 配合CSRF提升用户权限,进一步渗透网站。
- 强制弹出广告、刷流量等
- 网页挂马
- 进行恶意操作、篡改页面信息、删除文章等。
- 获取客户端信息、传播跨脚本蠕虫等等
- XSS漏洞分类及介绍
- 反射型XSS
反射型XSS是 XSS代码作为用户客户端的输入提交给服务器,服务器解析后,在响应内容中返回输入的XSS代码,由浏览器执行。例如,在测试靶场中的源代码如下图所示:
$name
当我们在输入框name 中输入以下代码时,会被服务器执行,并在页面弹窗。
![f2315203a25e86a8f162b3cbdb09b0ed.png](https://i-blog.csdnimg.cn/blog_migrate/e3e1f4d5e54860deac15b06cd90989ac.png)
输入后,弹出来的窗口如下图所示
![3892f7306895019f3e54e9e2020b27c5.png](https://i-blog.csdnimg.cn/blog_migrate/a780d905adfe4e549f025fa2adcdfaa9.png)
-
- 存储型XSS
存储型XSS和反射型XSS的主要区别在于 用户提交的XSS代码是否在服务器端存储。如果在服务器端存储,就是存储型XSS。
存储型 XSS危害比反射型XSS大,而且用户每次浏览页面时,都会触发执行XSS代码。存储型原理和反射型相同,就不单独举例介绍了。
-
- DOM XSS
DOM XSS 与前两者的区别是 XSS代码的解析,不需要服务器解析响应的直接参与,由浏览器的DOM进行解析。名字也是因此得来。在测试靶中的DOM型注入代码,如下所示:
function
可以看到,使用了 document 的 write函数导致了XSS。代码执行后如下:
![94b299d38223f65604726559906a9f73.png](https://i-blog.csdnimg.cn/blog_migrate/b47c8c43130e95d1d87a2210efb8db7d.png)
- XSS防护与绕过
随着XSS逐渐被大家熟悉,开发者都对网站采取了很多错事,包含特定标签过滤、特定事件过滤、敏感关键字过滤等。同时,浏览器层面也限制了XSS漏洞的利用,尤其是Chrome浏览器。下面简单介绍常见的防护技巧及绕过方法。
1.特定标签过滤
部分开发者过滤掉了危险标签,如 script、iframe等,导致无法执行脚本。
如果输出点在html标签的属性中或在 Javascript代码中,那么攻击者可以简单地闭合、拼接属性或 Javascript 代码而不需要引入任何新标签就可以执行XSS代码。
2.事件过滤
部分开发者,会过滤掉 HTML标签中的事件属性,这时候需要对所有可以利用的事件属性进行遍历,测试开发者是否有遗漏。
HTML 标签属性可以查看 w3school 上看到,连接:https://www.w3school.com.cn/tags/html_ref_eventattributes.asp
3.敏感关键字(字符)过滤
关键字过滤大部分是针对敏感变量或函数而进行的,例如cookie、eval等,这部分可以通过字符串拼接、编码解码等方法绕过。
例如可以用以下代码调用 alert函数
window
也可以用一些编码绕过,URL编码、JSFuck编码等。
对内容有不理解的小伙伴或发现错误的小伙伴,可以私信和我联系,共同探讨。如果您喜欢,麻烦点个赞,(づ ̄ 3 ̄)づ
- 参考文献
- CTF特训营:技术详解、解题方法与竞赛技巧