浅谈 Web 渗透中的 XSS

阅读本文大概需要 2.4 分钟

XSS,即跨站脚本攻击漏洞。

Web 安全中,攻击者常利用此漏洞,在网页中注入 JS 攻击代码。

一旦受害者访问该网页,则 JS 代码执行,攻击者则能以此进行一系列攻击操作。

比如窃取用户 Cookie 信息,甚至可能取得受害者机器的完整控制权。

今天谈一下 3 种 XSS 类型。

以 DVWA 为例。首先将 DVWA 难度设置为 Low。

0x01 DOM 型 XSS

DOM 型 XSS 是由于浏览器 DOM 解析的漏洞所导致的。

值得一提的是,对于 DOM XSS,在网页源代码中是看不到 XSS Payload 的。只有在网页动态运行过程中,才会注入,通过 F 12 才可以看到。

打开 DVWA 中的 XSS (DOM)。

点击 Select,可以看到所选的内容出现在了地址栏。

打开 HackerBar,Load URL,将地址上的 English 替换为如下 Payload。

<script>alert(1)</script>

成功触发 XSS,且查看源代码,看不到这段 XSS Payload。因为这段代码是在网页动态运行过程中插入进去的。

其实就是源代码里的这一段代码干的。

<script>
     if (document.location.href.indexOf("default=") >= 0) {
        var lang = document.location.href.substring(document.location.href.indexOf("default=")+8);
        document.write("<option value='" + lang + "'>" + decodeURI(lang) + "</option>");
        document.write("<option value='' disabled='disabled'>----</option>");
     }
         
     document.write("<option value='English'>English</option>");
     document.write("<option value='French'>French</option>");
     document.write("<option value='Spanish'>Spanish</option>");
     document.write("<option value='German'>German</option>");
</script>

直接将地址栏参数插入到了 DOM 中,从而造成了 XSS。

0x02 反射型 XSS

和 DOM 型 XSS 有些类似,不同的是,可以直接在网页源代码中看到 XSS Payload。

打开 DVWA 中的 XSS (Reflected)。

在输入框输入刚刚使用的 Payload,一样触发 XSS。

并且查看源代码,可以在源代码中看到 Payload。

服务端代码如下。

<?php
header ("X-XSS-Protection: 0");

// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
    // Feedback for end user
    echo '<pre>Hello ' . $_GET[ 'name' ] . '</pre>';
}
?>

可以看出是由于服务端直接将客户端提交的内容回显,导致的 XSS。

0x03 存储型 XSS

存储型 XSS 是 XSS 中危害最大的。因为它的 XSS Payload 将会存储在服务端,导致每个访问网页的用户都将被攻击。

打开 XSS (Stored)。

在 Name 和 Message,输入 Payload,没错还是刚刚那个。

出现一点小问题,Name 限制了长度。直接 F 12 修改 maxlength 即可。

提交,成功触发 XSS。查看源代码,可以看到刚刚提交的 Payload。

并且每次刷新页面或者重新进入,都会触发。

因为 Payload 被存储在了服务端。

每次访问,服务端又会将其查询出来,返回给客户端。

由此可见存储型 XSS 的危害性,每个用户每次访问,都将受到攻击。

0x04 总结

上面只是一些最简单的 XSS 例子,实际渗透过程中,往往会有各种过滤,各种防火墙,导致 XSS 攻击失败。

这个时候就需要知道各种绕过姿势,这需要我们不断地去深入学习。

加油!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值