掌控安全学习-DOM_XSS

知识梳理

  1. XSS简介

XSS:跨站脚本攻击(Cross Site Scripting),是一种注入型攻击,攻击者使用Web应用程序将恶意脚本发送到不同的用户终端,若应用程序没有对输入的脚本进行验证、过滤or编码等处理,且终端用户的浏览器无法识别脚本是否受信任时,受害者在不知情的情况下访问对应的页面,恶意代码会在其浏览器上执行,恶意脚本可以访问其保留在浏览器中的站点cookie、会话标记or其他敏感信息;这些脚本甚至可以重写HTML页的内容,从而产生XSS攻击。
XSS分为三种类型:反射型(Reflected)、存储型(Stored)、DOM型

  1. XSS测试策略
    • 检查Web页面中可输入的位置。除了前端页面,还有前端代码中,所对应的隐藏or明显的输入位置。如:HTTP参数、POST data、隐藏的表单域(文本框、密码框、隐藏域、单选or复选框、下拉选择框)。通过前端源代码可查看到以上位置的存在。

    • 分析每个输入位置,使用特别构造的数据,检测潜在的漏洞。通过预先构造的攻击字符串or敏感符号对Web程序进行模糊测试,根据返回的响应初步判断前后端对敏感字符的处理机制如何。

    • 识别对Web程序有安全影响的XSS漏洞。根据响应数据和HTML代码,判断哪些位置没有对攻击字符or字符串进行过滤、转义、正确编码处理的防范,对这些弱防御的位置进一步攻击测试,检测确定安全漏洞。

  2. 反射型XSS概述

    Reflected XSS:攻击负载是通过单个请求和响应进行交互和执行的,当用户在前端输入带有XSS性质的脚本作为HTTP请求的一部分发送给服务端,后端对收到的请求数据进行解析处理(字符串检测、转义...)之后返回给前端,前端浏览器将对该返回数据进行解析,若其中包含的恶意脚本可被浏览器解析并执行时,就会触发反射型XSS。
    反射XSS攻击也称为非持久XSS攻击,反射型XSS脚本注入的攻击并不存储在应用程序中,而是存储在浏览器客户端,即非持久。只要不通过点击该特定url链接进行访问,就不会引起攻击。

  3. 存储型XSS概述

    攻击者事先将恶意代码上传或储存到漏洞服务器中,只要受害者浏览包含此恶意代码的页面就会执行恶意代码。这就意味着只要访问了这个页面的访客,都有可能会执行这段恶意脚本,因此储存型XSS的危害会更大。因为存储型XSS的代码存在于网页的代码中,可以说是永久型的。
    存储型 XSS 一般出现在网站留言、评论、博客日志等交互处,恶意脚本存储到客户端或者服务端的数据库中。

原理:用户输入的数据被当作前端代码执行
测试方式
JS触发:<script>alert(1)</script>
伪协议触发:javascript:alert(1)
事件触发:<img src="" onerror=alert(1) />
onerror 失败后触发 onload 成功后触发
  1. 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语句进行弹窗测试

image

发现做了过滤,变成字符输出;发现页面和URL有相同的字符,尝试在URL栏内测试

image

被waf拦截,查看网页代码,根据apache解析特性,他遇到了认不到或者是没有的就会往前解析,尝试绕过waf


image

构建语句
/index.php/1.txt?</script><script>alert(1)</script>
因为本身在js语句内,通过</script>进行闭合

image

发现网页通过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

image

通过xss平台获取恶意攻击代码,进行转码,在问题反馈页面,进行XSS攻击

image

获得flag:flag=zkz{x3ser-D0m}

image
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。