终于弄懂了dom型xss和反射型xss的区别

2022-12-21 0 300

零此基础学骇客 搜社会公众号:白帽子左二

序言

xss安全漏洞的基本原理只不过很单纯,类别也分成四类,散射型、存储型和dom型。

但刚碰触xss的这时候我显然不认知甚么是dom型xss,难以界定散射型和dom型,也极少邂逅,那时透过这首诗能给讷伊县坑的阿宝更快的认知xss安全漏洞,也透过这首诗稳固呵呵我对xss的认知.

DOM型与散射型对照图

三张单纯的图协助我们对照呵呵分野

终于弄懂了dom型xss和反射型xss的区别
终于弄懂了dom型xss和反射型xss的区别

散射型xss预测

具体来说却是先单纯如是说呵呵xss最常用的类别:散射型

透过pikachu试验场来做单纯的模拟预测

能看见他们输出的统计数据透过html网页回显了出,这意味著他们能试著内部结构卷曲来转化成他们想的标识符

终于弄懂了dom型xss和反射型xss的区别

检查呵呵网页源码,处于这个位置(20这个地方显示了输出统计数据的长短,改一改就好)

终于弄懂了dom型xss和反射型xss的区别

插入这个标识符测试xss安全漏洞:<script>alert(1_Ry)</script>,出现弹窗

终于弄懂了dom型xss和反射型xss的区别

预测呵呵标识符

$html=; if(isset($_GET[submit])){if(empty($_GET[message])){ $html.=“<p class=notice>输出kobe试试-_-</p>”; }else{ if($_GET[message]==kobe){ $html.=“<p class=notice>愿你和{$_GET[message]}一样,永远年轻,永远热血沸腾!</p><img src={$PIKA_ROOT_DIR}assets/images/nbaplayer/kobe.png />”; }else{ $html.=“<p class=notice>who is {$_GET[message]},i dont care!</p>”; } } }

具体来说透过GET 接收message字符串到后端,然后传到$html这个变量

<div id=“xssr_main”> <p class=“xssr_title”>Which NBA player do you like?</p> <form method=“get”> <input class=“xssr_in” type=“text” maxlength=“20” name=“message” /> <input class=“xssr_submit” type=“submit” name=“submit” value=“submit” /> </form> <?php echo$html;?> </div>

再透过这个变量输出到前端的网页,然后刚刚输出的<script>alert(1_Ry)</script>标识符就会在网页被执行,透过服务端逻辑来改变了最终的网页标识符

DOM型xss预测

DOM型xss和别的xss最大的差别就是它不经过服务器,仅仅是透过网页本身的JavaScript进行渲染触发的

下面他们来看看典型的DOM型xss例子,将下面这句话复制到有道词典进行翻译,相信我们很快就能理解

This is a test <script>alert(1_Ry)</script>about xss

在线翻译_有道 (https://fanyi.youdao.com/)

终于弄懂了dom型xss和反射型xss的区别

看看这句话在html中的位置

终于弄懂了dom型xss和反射型xss的区别

这个例子中的xss语句<script>alert(1_Ry)</script>只是单纯的在前端解析,没有经过后端,属于前端自身的安全安全漏洞。

pikachu试验场

再透过pikachu试验场来深入了解呵呵DOM型xss

这是前端界面

终于弄懂了dom型xss和反射型xss的区别

这是源标识符,接下来预测呵呵这个源码

<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> <input id=“text” name=“text” type=“text” value=“” /> <input id=“button” type=“button” value=“click me!” onclick=“domxss()” /> <div id=“dom”></div> </div>他们透过 <input id=“text” name=“text” type=“text” value=”” / > 将字符串赋值给text然后document.getElementById(“dom”).innerHTML = “< a href=’”+str+”’>what do you see?< /a > “; 把这个text字符串整合到a这个标签中的href里再把a标签写入到dom这个标签中。最后< div id=“dom” >< /div > 执行这个dom标签

当输出123源码中是这样显示的

终于弄懂了dom型xss和反射型xss的区别

但当输出:#onclick=”alert(1_Ry)”> 时

终于弄懂了dom型xss和反射型xss的区别
终于弄懂了dom型xss和反射型xss的区别

一直点击则一直弹,同时使用burpsuite抓包的话也是抓不到任何东西,因为没有产生与服务器的交互,仅仅透过前端js渲染来改变最终的网页标识符

DOM型&散射型XSS安全漏洞的利用场景

两者的攻击方式没有甚么不同,都是透过电子邮件等方式发送这个含有他们内部结构的payload的URL给目标用户,当目标用户访可该链接时,服务器接收该目标用户的请求并进行处理

然后服务器把带有XSS标识符的数

xss防御方法

过滤输出的统计数据,包括 ‘ 、“、<、>、on* 等非法字符对输出到网页的统计数据进行相应的编码转换,包括HTML实体编码、属性以及URL请求参数设置cookie的HttpOnly属性

作者:lryfish

原文地址:

https://www.freebuf.com/articles/web/318982.html

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务