XSS的原理分析与解剖.docx
- 文档编号:3853575
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:12
- 大小:70.70KB
XSS的原理分析与解剖.docx
《XSS的原理分析与解剖.docx》由会员分享,可在线阅读,更多相关《XSS的原理分析与解剖.docx(12页珍藏版)》请在冰豆网上搜索。
XSS的原理分析与解剖
XSS的原理分析与解剖
2014-08-1318:
47Black-HoleFreeBuf字号:
T|Txss是一门又热门又不太受重视的Web攻击手法,为什么会这样呢,原因有下:
耗时间、有一定几率不成功、没有相应的软件来完成自动化攻击、是一种被动的攻击手法等。
AD
0X01前言:
《xss攻击手法》一开始在互联网上资料并不多(都是现成的代码,没有从基础的开始),直到刺的《白帽子讲WE安全》和cn4rry的《XSS跨站脚本攻击剖析与防御》才开始好转。
我这里就不说什么xss的历史什么东西了,xss是一门又热门又不太受重视的Web攻击手法,为什么会这样呢,原因有下:
1、耗时间
2、有一定几率不成功
3、没有相应的软件来完成自动化攻击
4、前期需要基本的html、js功底,后期需要扎实的html、js、actionscript2/等语言的功底
5、是一种被动的攻击手法
6、对website有http-only、没有用但是这些并没有影响黑客对此漏洞的偏爱,原因不需要多,只需要一个。
Xss几乎每个网站都存在,google、baidu、360等都存在。
0X02原理:
首先我们现在本地搭建个PHP环境(可以使用phpstudy安装包安装),然后在文件里写入如下代码:
1.
2.
3. > 4.
5.
6.
7.
11.
12. 13.$xss =$_GET['xss_input']; 14.echo '你输入的字符为 15.> 16. 17. 18. 然后,你会在页面看到这样的页面 2? 合巧( 3★/rhttp: //a>tn/shiyan/ [MJ 你输入的字符为 我们试着输入abcd123,得到的结果为 我们在看看源代码 扌备合*OO*世」口司bed1? 、 1缶4才 2d> 3tEta,^匚匸匸-亡丁二卩^”亡二二亡芒二二窗三孑^亡讯ccncc^c^*1"cxt/Mtsl;cStr3ex*uuf-' vm七=5C渝厦Jt酊. 5 fiwuayA 7<£omho匸丄on*111*tMEhcd«-nff*TH> Gc二n[: 二hinanir-"xj*_ij: cul 3c^nputJb^if> 10 nza .■tnp人的孚轲力"EF'Qe也昭"bh-”.” 假设我 变成: 我们输入的字符串被原封不动的输出来了,那这里我们提出来一个假设, 们在搜索框输入下面的代码会出现什么呢 1. 如果按照上面的例子来说,它应该存在第12行的[br]与[/boby]>之间, 1. 之后,应该会弹出对话框。 既然假设提出来,那我们来实现下这个假设成不成立吧。 我们输入 1. 得到的页面为 ir育http^fificyW- |<5CKS^^/scnpt丨冈 祢输入的宇符肯 成功弹窗,这个时候基本上就可以确定存在XSS漏洞 我们在看看源代码 1CU11A 2cti*4d> #**/*T*-L*CMJS&l^Er-l! 5 dVfnI^^El■fli-&弃▼h-U"^1 B tc;T&"*texi&rtname™r|! xas_inslit"11> 9 10-C/foro 休杓罕禅力Cti;-<5cript.alerti,"xss-)<,.-'s-: ■戈匸七><.■'匕-dj. 13^/htniLJ 看来,我们的假设成功了,这节就说说XSS的原理,下面几节说说XSS的构造和 利用。 0X03xss利用输出的环境来构造代码 上节说了xss的原理,但是我们的输出点不一在[br]和[/boby]里,可以出现在html标签的属性里,或者其他标签里面。 所以这节很重要,因为不一定当你输入下面代码就会出现弹窗。 1. 先贴出代码: 1. 2. 3. > 4. 5. 6. 7. 8.
'.$xss;把我们输入的字符串输出到input里的value属性里
9.
10.
请输入你想显现的字符串
11.
12.
13.
14.
15. 16.$xss=$_GET['xss_input_value']; 17.if(isset($xss)){ 18.echo' 19.}else{ 20.echo' 21.} 22.> 23. 24. 25. F面是代码的页面 把養ft]詈入的字符串箱出llinput里的valKeg性里 请首入你規显現的字符躍 输入 1H] 输出 这段代码的作用是把第一个输入框的字符串,输出到第二个输入框,我们输入1,那么第二个input里的value值就是1,下面是页面的截图和源代码的截图(这里我输入下面的代码来测试) 1. 把盂忙^入的字霸零輪岀到血削上里的^丄x雇性里 请输入你理昱現的手苻审 前面加个">来闭合input标签。 所以应该得到的结果为 粧買1H赫入的子苻击於岀911nput£nval^MMf 诸营入你翌品理时芋时羊 ;~x^cn隅n3fertf3(gs')^"£c「 [^1 .<$亡斤”^aieflfuss')v丿冒亡npt 成功弹窗了,我们在看看这时的页面 把我们输入的字符军tt^Slinput里的ml"屋性里 请特入飾怛显现的字符串 输入 II 提交 看到后面有第二个input输入框后面跟有">字符串,为什么会这样呢,我们来看看源代码 1 ■£ 4 i£ 吐特雨用騙岀轴坏境来构造杵轲2* 甫 S -dcencer> 盘冠珅CAHISBA的宇符串ifi出対二霜二r■里賞m紀爲世卑vr.e> 10 11 4Ja "4阑朽入畑f魂湮的字钉輸? .6> <-匚r__]ze■''^eKt11: .trr*»r'it——r*4二丄*_匕三蛍卜卞工m.a
IS*
16
17
jc>7;**-^xi"iut--,,,?
c:
ict^alei:
w("K53'J〈rcriii/^-t/Ge^ctr>
^/body5
这时可以看到我们构造的代码里面有两个">,第一个">是为了闭合input标签,所以第二个">就被抛弃了,因为html的容错性高,所以并没有像php那样出现错误,而是直接把多余的字符串来输出了,有的人是个完美主义者,不喜欢有多余的字符串被输出,这时该怎么办呢
这里我问大家一个问题,我之前说的xss代码里,为什么全是带有标签的。
难道就不能不带标签么!
答:
当然可以。
既然可以不用标签,那我们就用标签里的属性来构造XSS这样的话,xss代码又少,又不会有多余的字符串被输出来。
还是这个环境,但是不能使用标签,你应该怎么做。
想想input里有什么属性可以调用js,html学的好的人,应该知道了,on事件,对的。
我们可以用on事件来进行弹窗,比如这个xss代码我们可以写成
1."onclick="alert('xss')
这时,我们在来试试,页面会发生什么样的变化吧
/Ja.ca=+wdkk='31crt('xs,i')
没有看到弹窗啊,失败了么答案当然是错误的,因为onclick是鼠标点击事件,
也就是说当你的鼠标点击第二个input输入框的时候,就会触发onclick事件,
然后执行alert('xss')代码。
我们来试试看
当我点击后,就出现了弹窗,这时我们来看看源代码吧
寸為甲*pa
http-acu/>
出的环墀来樹竜代理可z工“>
&g
$畔C:
ST、
©2比我illSi入的字符*feij¥knpuz,S的泛二"購世星―打、
cfsacEJ-a-n™""匸乩七皿匸1"彳专匚■»
W
["1
12
<*6<乜4
<1rw*s-^bni.匚■、
13
■aj
15
K
-)7
c/fezm>
Cha
<1m工茄口靶•■二音xt"viiue-wi,'onclick*"alertTwas1J*X/cenzer>
第15行,value值为空,当鼠标点击时,就会弹出对话框。
这里可能就会有人问了,如果要点击才会触发,那不是很麻烦么,成功率不就又下降了么。
我来
帮你解答这个问题,on事件不止onclick这一个,还有很多,如果你想不需要用户完成什么动作就可以触发的话,i可以把onclick改成
Onmousemovei鼠标移动就触发
Onload当页面加载完成后触发
还有很多,我这里就不一一说明了,有兴趣的朋友可以自行查询下。
别以为就这样结束了,还有一类环境不能用上述的方法,
那就是如果在[textarea]标签里呢!
或者其他优先级比script高的呢就下面这样
IE養们律入的SdiSlinput里的
请崭入你盤呈瑰的宇符串
输入
I蘇
ox05xss的利用
说了那么多,大家可能都以为xss就是弹窗,其实错了,弹窗只是测试xss的存在性和使用性。
这时我们要插入js代码了,怎么插呢
你可以这样
1.
也可以这样
1. /> 各种姿势,各种插,只要鞥运行我们的js就OK那运行我们的js有什么用呢 Js可以干很多的事,可以获取cookies(对http-only没用)、控制用户的动作(发帖、私信什么的)等等。 比如我们在网站的留言区输入下面的代码: 1. 当管理员进后台浏览留言的时候,就会触发,然后管理员的cookies和后台地址还有管理员浏览器版本等等你都可以获取到了,再用“桂林老兵cookie欺骗工具”来更改你的cookies,就可以不用输入账号密码验证码就可以以管理员的方式来进行登录了。 至于不会js的怎么写js代码呢,放心网上有很多xss平台,XX一下就可以看到了。 页面是傻瓜式的操作,这里就不再过多的说明了。 有兴趣的朋友,下面是cn4rry给我的几个xss平台,大家可以自己钻研与研究, 也可以自己搭建在发布此文章的时候,我特地和cn4rry谈了一下,得到的结果是,我会继续写这个系列的。 当我把这个doc发给cn4rry的时候,他就直接来句“嗯写的比较基础”,我本来的打算是写一个xss入门的就可以了,我只是感觉现在网上的文章从简单开始介绍xss的比较少,都是在书里有 所以我想在网上把他讲的细点xss入门就可以了,后面的路就可以自己摸索了 但是和他谈过后,感觉还是要继续写下去,因为“xss盲打”“xss编码绕过”“fuzzingxss”等等,如果是自己慢慢琢磨的话,需要较长的时间,所以我打算每过一段时间就会推出下一个xss的文章,写个系列出来。 <5cript>alertfxss'^/script <3cz^pt>aler(*1234xasfi3crLpt> 这时我们该怎么办呢既然前面都说了闭合属性和闭合标签了,那能不能闭合完整 的标签呢,答案是肯定的。 我们可以输入下面的代码就可以实现弹窗了。 1. OX04过滤的解决办法 假如说网站禁止过滤了script这时该怎么办呢,记住一句话,这是我总结出来的“xss就是在页面执行你想要的js”不用管那么多,只要能运行我们的js就OK比如用img标签或者a标签。 我们可以这样写 1. 2. alert('xss')>s点击s时运行alert('xss') 3. alert('xss');height=0width=0/> iframe的scr来弹窗 4. 7\x29")x/img>过滤了alert来执行弹窗 等等有很多的方法,不要把思想总局限于一种上面,记住一句话“xss就是在页 面执行你想要的js”其他的管他去。 (当然有的时候还有管他…)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- XSS 原理 分析 解剖