浅谈 Web 渗透中的 XSS

本文详细介绍了三种类型的XSS攻击:DOM型XSS、反射型XSS和存储型XSS。通过DVWA实例展示了攻击过程,强调了每种类型的特点和危害。DOM型XSS在源代码中不可见,而反射型和存储型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 攻击失败。

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

加油!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值