前言

xss的笔记比较久之前就做的了,无奈不会JavaScript无能写出示例,但是想了一下还是发出来吧,等我学会js了再来补充

PS:下面的只是本人的理解,有错误之处请提出(靓仔感激.jpg)

正文

先从百度百科拉点资料,水一下字数:

XSS(Cross Site Scripting)攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。(摘自百度百科)

而xss的漏洞一般是执行js代码的,也有少数其他语言也可以在xss中利用

xss可以达到的危害如下:

  • 盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号
  • 控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力
  • 盗窃企业重要的具有商业价值的资料
  • 非法转账
  • 强制发送电子邮件
  • 网站挂马
  • 控制受害者机器向其它网站发起攻击

借用前辈的话:你js能到达什么高度,xss就能到达什么高度。

img

不过xss很多人用来盗号之类的,不过08年之后网络法健全之后就很少有滥用xss了。不过值得一提的是,也确实还存在着这么一群人还在傻傻地触碰这根线。以至于QQ上仍然时不时弹出个在线文档的信息,出于好奇点进去,哦吼完蛋。

其中之一的原理分析https://www.jianshu.com/p/e1cb5175c07d

XSS种类

好啦回到正题,来谈谈xss种类

  • 反射型XSS
  • 存储型XSS
  • DOM型XSS

反射型XSS

反射型XSS是非持久的,也是最简单的,数据流向是前端–>后端–>前端

最简单的实现反射型xss代码:

<?php
    a=_POST["a"]; 
    echo $a;
?>

效果如下:

微信图片_20200508002755

存储型XSS

存储型xss就是在前端传入数据,然后给在数据库中保存,下次有人浏览页面的时候数据库的含有xss脚本的数据被读取出来显示的时候触发的xss漏洞,常见于留言板

数据流是前端 -> 后端 -> 数据库 -> 后端 -> 前端

搬一下网上的代码:

//前端:2.html
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>存储型XSS</title>
</head>
<body>
    <form action="action2.php" method="post">
        输入你的ID:  <input type="text" name="id" /> <br/>
        输入你的Name:<input type="text" name="name" /> <br/>
        <input type="submit" value="提交">
    </form>
</body>
</html>
//后端:action2.php
<?php
    $id=$_POST["id"];
    $name=$_POST["name"];
    mysql_connect("localhost","root","root");
    mysql_select_db("test");

    $sql="insert into xss value ($id,'$name')";
    $result=mysql_query($sql);
?>
//供其他用户访问页面:show2.php
<?php
    mysql_connect("localhost","root","root");
    mysql_select_db("test");
    $sql="select * from xss where id=1";
    $result=mysql_query($sql);
    while($row=mysql_fetch_array($result)){
        echo $row['name'];
    }
?>

思路就是把id和name给post到后台然后后台储存到数据库。下一位用户来浏览的时候php从数据库读出来id和name,在交给前端的时候触发xss漏洞

存储型的XSS是比较大危害的,然而现在一些SRC平台似乎不是那么重视(我也不知道为啥)

DOM型XSS

DOM型xss是比较特殊的反射型xss,数据流向是前端–>浏览器

先说一下DOM吧,DOM可以抽象成一颗树,树上有分支,分支上还有分支,一直分支,所以DOM也被称为DOM树,DOM树上的每一个树枝都是一个节点,而DOM就是发生在节点上

img

这里有动画来解释浏览器的解析呈现过程https://video.zhihu.com/video/1084806179896680448?autoplay=false&useMSE=

继续搬一下代码

// 前端3.html
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>DOM型XSS</title>
</head>
<body>
    <form action="action3.php" method="post">
        <input type="text" name="name" />
        <input type="submit" value="提交">
    </form>
</body>
</html>
// 后端action3.php
<?php
  name=_POST["name"];
?>
<input id="text" type="text" value="<?php echo $name; ?>"/>
<div id="print"></div>
<script type="text/javascript">
  var text=document.getElementById("text");
  var print=document.getElementById("print");
  print.innerHTML=text.value;  // 获取 text的值,并且输出在print内。这里是导致xss的主要原因。
</script>

js能和html的节点进行交互,当用户输入的text给js用来呈现,如果text里面有恶意代码,那么在交互的过程中恶意代码就会被执行

结尾

以上是xss的入门笔记,可能有部分理解错误的敬请纠正

参考链接:

https://www.cnblogs.com/csnd/p/11807592.html

https://www.cnblogs.com/mao2080/p/9460397.html

说点什么
支持Markdown语法
好耶,沙发还空着ヾ(≧▽≦*)o
Loading...