【Web篇】(6.3) ❀ 10. 跨站脚本 - DOM型XSS ❀ FortiWeb 攻防演练

  【简介】跨站脚本(Cross-site scripting,简称:XSS)是一种网站应用程序的安全漏洞攻击,是代码注入的一种。XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。从而使目标计算机收到危害。


  DOM型XSS

  DOM,全称Document Object Model,是一个平台和语言都中立的接口,可以使程序和脚本能够动态访问和更新文档的内容、结构以及样式。

  DOM型XSS其实是一种特殊类型的反射型XSS,它是基于DOM文档对象模型的一种漏洞。

  在网站页面中有许多页面的元素,当页面到达浏览器时浏览器会为页面创建一个顶级的Document object文档对象,接着生成各个子文档对象,每个页面元素对应一个文档对象,每个文档对象包含属性、方法和事件。可以通过JS脚本对文档对象进行编辑从而修改页面的元素。也就是说,客户端的脚本程序可以通过DOM来动态修改页面内容,从客户端获取DOM中的数据并在本地执行。基于这个特性,就可以利用JS脚本来实现XSS漏洞的利用。

  可能触发DOM型XSS的属性:

  • document.referer 属性
  • window.name 属性
  • location 属性
  • innerHTML 属性
  • documen.write 属性

  安全等级 - Low

  将DVWA的安全等级切换到Low。

    ① 选择【XSS (DOM)】,显示选择语言页面,点击【View Source】,查看源代码。

    ② 从源代码可以看出,这里代码没有任何的保护性措施!

    ③ 页面本意是叫我们选择默认的语言,但是对default参数没有进行任何的过滤。

    ④ 我们可以构造XSS代码,将English替换成 <script>alert('123456')</script>,可以看到script脚本成功执行了,弹出了窗口。

    ⑤ Firefox火狐浏览器,点击右边主菜单,选择【Web开发者】。

    ⑥ 选择【查看器】。或者也可以直接按快捷键【Ctrl+Shift+C】。

    ⑦ 查看当前页面的源代码,可以看到脚本已经插入到代码中,所以执行了。

  安全等级 - Medium

  将安全等级升级为中级。

    ①  从源代码可以看到,先检查了default参数是否为空,如果不为空则将default等于获取到的default值。这里还使用了 stripos() 函数检测default值中是否有 <script  ,如果有的话,则将 default=English 。

    ② 我们可以构造XSS代码,将English替换成 ></option></select><img src=1 οnerrοr=alert('hack')> 

    ③  再查看网页源代码,可以看到,语句已经插入到页面中了。

  安全等级 - High

  将安全等级升级为高级。

    ①  从源代码可以看到,先判断defalut值是否为空,如果不为空的话,再用switch语句进行匹配,如果匹配成功,则插入case字段的相应值,如果不匹配,则插入的是默认的值。这样的话,我们的语句就没有可能插入到页面中了。

  安全等级 - Impossible

  将安全等级升级为不可能。

    ①  从源代码可以看到,代码没有任何东西,注释写的是保护的代码在客户端的里面。

    ② 我们尝试将English替换成 <script>alert('123456')</script>

    ③ 发现页面并没有弹出任何东西,而且语言框内的值是我们输入的参数的经过URL编码后的数据。

    ④ 再查看网页源代码,发现这里对输入的参数并没有进行URL解码,输入的任何参数都是经过URL编码,然后直接赋值给option标签。所以,就不存在XSS漏洞了。

  FortiWeb 防护

  FortiWeb可以阻止这一类的攻击。

    ① 这次我们访问192.168.1.128,也就是经过FortiWeb保护的DVWA,安全选择Low,输入一段注入代码,看看会发生什么。

    ② 访问被FortiWeb成功的阻止了。

      ③ 登录FortiWeb,选择菜单【日志和报表】-【攻击】,点击【添加过滤器】。

 ④ 选择【消息ID】。

    ⑤  选择阻止页面上显示的消息ID。

    ⑥ 显示XSS攻击被FortiWeb阻止了。如果有了FortiWeb,这样大部分因为代码产生的漏洞安全问题,就可以有效的解决了。


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞塔老梅子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值