知识梳理
-
XSS简介
XSS:跨站脚本攻击(Cross Site Scripting),是一种注入型攻击,攻击者使用Web应用程序将恶意脚本发送到不同的用户终端,若应用程序没有对输入的脚本进行验证、过滤or编码等处理,且终端用户的浏览器无法识别脚本是否受信任时,受害者在不知情的情况下访问对应的页面,恶意代码会在其浏览器上执行,恶意脚本可以访问其保留在浏览器中的站点cookie、会话标记or其他敏感信息;这些脚本甚至可以重写HTML页的内容,从而产生XSS攻击。
XSS分为三种类型:反射型(Reflected)、存储型(Stored)、DOM型
-
XSS测试策略
检查Web页面中可输入的位置。除了前端页面,还有前端代码中,所对应的隐藏or明显的输入位置。如:HTTP参数、POST data、隐藏的表单域(文本框、密码框、隐藏域、单选or复选框、下拉选择框)。通过前端源代码可查看到以上位置的存在。
分析每个输入位置,使用特别构造的数据,检测潜在的漏洞。通过预先构造的攻击字符串or敏感符号对Web程序进行模糊测试,根据返回的响应初步判断前后端对敏感字符的处理机制如何。
识别对Web程序有安全影响的XSS漏洞。根据响应数据和HTML代码,判断哪些位置没有对攻击字符or字符串进行过滤、转义、正确编码处理的防范,对这些弱防御的位置进一步攻击测试,检测确定安全漏洞。
-
反射型XSS概述
Reflected XSS:攻击负载是通过单个请求和响应进行交互和执行的,当用户在前端输入带有XSS性质的脚本作为HTTP请求的一部分发送给服务端,后端对收到的请求数据进行解析处理(字符串检测、转义...)之后返回给前端,前端浏览器将对该返回数据进行解析,若其中包含的恶意脚本可被浏览器解析并执行时,就会触发反射型XSS。
反射XSS攻击也称为非持久XSS攻击,反射型XSS脚本注入的攻击并不存储在应用程序中,而是存储在浏览器客户端,即非持久。只要不通过点击该特定url链接进行访问,就不会引起攻击。 -
存储型XSS概述
攻击者事先将恶意代码上传或储存到漏洞服务器中,只要受害者浏览包含此恶意代码的页面就会执行恶意代码。这就意味着只要访问了这个页面的访客,都有可能会执行这段恶意脚本,因此储存型XSS的危害会更大。因为存储型XSS的代码存在于网页的代码中,可以说是永久型的。
存储型 XSS 一般出现在网站留言、评论、博客日志等交互处,恶意脚本存储到客户端或者服务端的数据库中。
原理:用户输入的数据被当作前端代码执行
测试方式
JS触发:<script>alert(1)</script>
伪协议触发:javascript:alert(1)
事件触发:<img src="" onerror=alert(1) />
onerror 失败后触发 onload 成功后触发
-
DOM型XSS
客户端JavaScript可以访问浏览器的DOM文本对象模型是利用的前提,当确认客户端代码中有DOM型XSS漏洞时,并且能诱使(钓鱼)一名用户访问自己构造的URL,就说明可以在受害者的客户端注入恶意脚本。利用步骤和反射型很类似,但是唯一的区别就是,构造的URL参数不用发送到服务器端,可以达到绕过WAF、躲避服务端的检测效果。
可以理解为是通过JS处理后产生的XSS,常见三大DOM XSS- 1.document.write() 使用JS,控制网页输出内容。
- 2.innerHTML 返回表格行的开始和结束标签之间的 HTML
- 3.eval 括号里的内容会被当做代码执行
靶场演示
靶场地址
地址http://59.63.200.79:8014/dom_xss/
尝试使用构建JS语句进行弹窗测试
发现做了过滤,变成字符输出;发现页面和URL有相同的字符,尝试在URL栏内测试
被waf拦截,查看网页代码,根据apache解析特性,他遇到了认不到或者是没有的就会往前解析,尝试绕过waf
构建语句
/index.php/1.txt?</script><script>alert(1)</script>
因为本身在js语句内,通过</script>
进行闭合
发现网页通过document.write
输出,document.write
可以进行native解码,编码后在进行测试
转码地址:https://tool.oschina.net/encode?type=3
\u003c\u0073\u0063\u0072\u0069\u0070\u0074\u003e\u0061\u006c\u0065\u0072\u0074\u0028\u0031\u0029\u003c\u002f\u0073\u0063\u0072\u0069\u0070\u0074\u003e
通过xss平台获取恶意攻击代码,进行转码,在问题反馈页面,进行XSS攻击
获得flag:flag=zkz{x3ser-D0m}