Web安全原理剖析(十五)——存储型XSS攻击

Posted Phanton03167

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Web安全原理剖析(十五)——存储型XSS攻击相关的知识,希望对你有一定的参考价值。


4.5 存储型XSS攻击

  存储型XSS页面实现的功能是:获取用户输入的留言信息、标题和内容,然后将标题和内容插入到数据库中,并将数据库的留言信息输出到页面上,如图71所示。


图71 输入留言信息

  当用户在标题处写入1,内容处写入2时,数据库中的数据如图72所示。


图72 保存留言信息到数据库

  当输入标题为<img src=X οnerrοr=“alert(/xss/)”/>。然后将标题输出到页面时,页面执行了<img src=X οnerrοr=“alert(/xss/)”/>,导致弹出窗口。此时,这里的XSS是持久性的,也就是说,任何人访问改URL时都会弹出一个显示“/xss/”的框,如图73所示。


图73 存储型XSS

4.6 存储型XSS代码分析

  在存储型XSS的php代码中,获取POST参数title和参数content,然后将参数插入数据库表XSS中,接下来通过select查询将表XSS中的数据查询出开,并显示到页面上,代码如下所示。

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
    <title>留言板</title>
</head>
<body>
    <center>
    <h6>输入留言内容</h6>
    <form action="" method="post">
        标题:<input type="text" name="title"><br />
        内容:<textarea name="content"></textarea><br />
        <input type="submit">
    </form>
    <hr>
    <?php

        $con=mysqli_connect("localhost","root","root","test");
        if (mysqli_connect_errno())
        {
            echo "连接失败: " . mysqli_connect_error();
        }
        if (isset($_POST['title'])) {
            $result1 = mysqli_query($con,"insert into xss(`title`, `content`) VALUES ('".$_POST['title']."','".$_POST['content']."')");
        }

        $result2 = mysqli_query($con,"select * from xss");
            if (!$result2)
            {
                exit();
            }

        echo "<table border='1'><tr><td>标题</td><td>内容</td></tr>";
        while($row = mysqli_fetch_array($result2))
        {
            echo "<tr><td>".$row['title'] . "</td><td>" . $row['content']."</td>";
        }
        echo "</table>";
    ?>
    </center>
</body>
</html>

  当用户在标题处写入<img src=1 οnerrοr=“alert(/xss/)”/>时,数据库中的数据如图74所示。


图74 存储到数据库中的XSS代码

  当将title输出到页面时,同页面执行了<img src=1 οnerrοr=“alert(/xss/)”/>,导致弹窗。


以上是关于Web安全原理剖析(十五)——存储型XSS攻击的主要内容,如果未能解决你的问题,请参考以下文章

反射/存储/DOM型XSS攻击原理及攻击流程详解

web安全之XSS攻击原理及防范

web安全之XSS攻击原理及防范

web安全防范策略

web安全XSS跨站&反射型&存储型&DOM型

20155321 《网络攻防》 Exp9 Web安全基础