当前位置:   article > 正文

漏洞篇(XSS 跨站脚本攻击一)_xss弹出cookie

xss弹出cookie

目录

一、XSS跨站脚本攻击

1、Cookie 概述

2、使用 JavaScript 创建 Cookie

3、使用 JavaScript 读取 Cookie

4、使用 JavaScript 修改 Cookie

5、Cookie 字符串

二、XSS 跨站脚本攻击原理及 DVWA 靶机的搭建 

1、学习环境搭建

2、反射型 XSS 原理

3、存储型 XSS 原理

4、DOM 型 XSS 原理

三、实战-反射型 XSS 攻击劫持用户浏览器

1、构建反射型 XSS 攻击

2、使用 beef 劫持用户浏览器

四、实战-持久型 XSS 窃取用户信息 

1、使用 setoolkit 克隆站点


一、XSS跨站脚本攻击

1、Cookie 概述

1、Cookie 概述: Cookie 是一些数据, 存储于你电脑上的文本文件中。
当 web 服务器向浏览器发送 web 页面时,在连接关闭后,服务端不会记录用户的信息。
Cookie 的作用就是用于解决 "如何记录客户端的用户信息":
(1)、当用户访问 web 页面时,他的名字可以记录在 cookie 中。
2)、在用户下一次访问该页面时,可以在 cookie 中读取用户访问记录。
Cookie 以键值对形式存储,如下所示:
username=John Doe
当浏览器从服务器上请求 web 页面时, 属于该页面的 cookie 会被添加到该请求中。服务端通过
这种方式来获取用户的信息。

   

参数
说明
必填
举例
name
cookie 的名字
使用
$_COOKIE['cookiename'] 调
用名为 cookiename 的
cookie。
value
cookie 的值,存放在客户端,不要存放敏感
数据
假定 name 是’
cookiename’,可以通过
$_COOKIE[‘cookiename’]
取得其值。
expire
Cookie 过期的时间。这是个 Unix 时间 戳,即从 Unix 纪元开始的秒数。换而言之, 通常用 time() 函数再加上秒数来设定 cookie 的失效期。或者用 mktime()来实 现。
time()+86400*30 将设定
cookie 30 天后失效。如果未设 定,cookie 将会在会话结束后
(一般是浏览器关闭)失效。
path
Cookie 在服务器端的有效路径。
如果该参数设为 ' /'的话, cookie
就在整个 domain 内有 效,如果设为'/foo/', cookie 就只在 domain 下的 /foo/目录
及其子目录内有效,例 如 /foo/bar/。默认值为设定
cookie 的当前目录。
domain
该 cookie 有效的域名。
要使 cookie 能在如 example.com 域名下的所有
子域都有效的话,该参数应该设
为 ' .example.com'。虽然 .
并不必须的,但加上它会兼容更
多的浏览器。如果该参数设为
www.example.com 的话,就
只在 www 子域内有效。
secure
指明 cookie 是否仅通过安全的 HTTPS 连
接传送。当设成 TRUE 时,cookie 仅在安
全的连接中被设置。默认值为 FALSE。
0 或 1
httponly
设为 true 后,只能通过 http 访问, javascript 无法访问;防止 xss 读取 cookie;php5.2 以上版本已支持 HttpOnly 参数的设置,同样也支持全局HttpOnly 的 设置,在 php.ini 中,
session.cookie_httponly=ture 来开启全局 的 Cookie 的 HttpOnly 属性
setcookie(“abc”,
“test”,NULL, NULL, NULL, NULL, TRUE)

         

2、使用 JavaScript 创建 Cookie

JavaScript 可以使用 document.cookie 属性来创建 、读取、及删除 cookie。
        
例 1:JavaScript 中,创建 cookie 如下所示:
document.cookie="username=John Doe";
        
例 2:你还可以为 cookie 添加一个过期时间(以 UTC 或 GMT 时间)。默认情况下,cookie 在
浏览器关闭时删除:
document.cookie="username=John Doe; expires= Thu, 18 Dec 2043 12:00:00 GMT";

                 

3、使用 JavaScript 读取 Cookie

在 JavaScript 中, 可以使用以下代码来读取 cookie:
var x = document.cookie;
注:document.cookie 将以字符串的方式返回所有的 cookie,类型格式: cookie1=value;
cookie2=value; cookie3=value;
        
        

4、使用 JavaScript 修改 Cookie

在 JavaScript 中,修改 cookie 类似于创建 cookie,如下所示:
document.cookie="username=John Smith; expires=Thu, 18 Dec 2043 12:00:00 GMT;
path=/";
旧的 cookie 将被覆盖。

     

5、Cookie 字符串

document.cookie 属性看起来像一个普通的文本字符串,其实它不是。
即使您在 document.cookie 中写入一个完整的 cookie 字符串, 当您重新读取该 cookie 信息
时,cookie 信息是以键值对的形式展示的
如果您设置了新的 cookie,旧的 cookie 不会被覆盖。 新 cookie 将添加到 document.cookie
中,所以如果您重新读取 document.cookie,您将获得如下所示的数据:
cookie1=value; cookie2=value;

        

二、XSS 跨站脚本攻击原理及 DVWA 靶机的搭建 

DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的 PHP/MySQL
Web 应用,旨在为安全专业人员测试自己的专业技能和工具提供合法的环境,帮助 web 开发者更好的理 解 web 应用安全防范的过程。
        

1、学习环境搭建

(1)上传 DVWA 到主机

[root@localhost ~]# rz
(2)将下载的 dvwa 渗透系统代码上传到 Linux 上,并解压到网站根目录下
        

[root@localhost ~]# unzip DVWA-master.zip -d /var/www/html/ 

修改文件权限
[root@localhost ~]# chown apache:apache /var/www/html/DVWA-master/ -R
(3)编辑 DVAW 配置文件/dvwa/config/config.inc.php,配置数据库信息,user 和 password 是
MySQL 的用户名和密码。
        
创建配置文件
[root@localhost ~]# cd /var/www/html/DVWA-master/config/
        
[root@localhost config]# cp config.inc.php.dist config.inc.php #基于模版配置文件,生
成新的配置文件 config.inc.php
        
[root@localhost config]# vim /var/www/html/DVWA-master/config/config.inc.php
修改一下标红内容:
改:21 $_DVWA[ 'db_password' ] = 'p@ssw0rd';
为:21 $_DVWA[ 'db_password' ] = ' 123456 '; #只需要修改成你的 mysql 的 root 用户密
改:
29 $_DVWA[ 'recaptcha_public_key' ] = '';
30 $_DVWA[ 'recaptcha_private_key' ] = '';
为:添加上谷歌开源免费验证码 reCAPTCHA 的公钥和私钥
29 $_DVWA[ 'recaptcha_public_key' ] = ' 6LdK7xITAAzzAAJQTfL7fu6I0aPl8KHHieAT_yJg ';
30 $_DVWA[ 'recaptcha_private_key' ] = ' 6LdK7xITAzzAAL_uw9YXVUOPoIHPZLfw2K1n5NVQ ';
扩展:
reCAPTCHA 概述:CMU 设计了一个名叫 reCAPTCHA 的强大系统,让他们的电脑去向人类求
助。具体做法是:将 OCR(光学字符识别)软件无法识别的文字扫描图传给世界各大网站,用以替换原 来的验证码图片;那些网站的用户在正确识别出这些文字之后,其答案便会被传回 CMU。
OCR 概述:OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描
仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻 译成计算机文字的过程;
CAPTCHA [ ˈ kapSH ə ] :验证码
如:google 常用的人机身份验证方式
        

扩展:如果想生成自己的谷歌开源免费验证码 reCAPTCHA 的公钥和私钥。操作如下:
访问 https://www.google.com/recaptcha/admin/create 并用 google 账户登录,在文本框输
入自己网站的网址,如 global-key.mycompany.com ,点击 create key,生成 Public Key 和
Private Key。
        
(4)修改 php 配置文件
[root@localhost ~]# vim /etc/php.ini
改:815 allow_url_include = Off
为: allow_url_include = On
        
[root@localhost config]# systemctl restart httpd
        
(5)部署 DVWA 网站系统
在浏览器中输入:http://x.x.x.x/DVWA-master/setup.php
        

        

(6)后期登录:
        
http://x.x.x.x/DVWA-master/login.php
dvwa 的登录界面的默认用户名:admin ,密码: password

         

2、反射型 XSS 原理

我们来演示一下它的工作原理。这个功能类似一个留言板,输入信息后下面会增加对应的信息。

         

根据回显信息判断出,显示的文本内容是 Hello $name。我们输入的信息被存放在$name 变量
中。
我们添加一条 JavaScript 代码获取 cookie
<script>alert(document.cookie);</script>
         

3、存储型 XSS 原理

存储型 XSS 的优势在于恶意代码被存储到服务器上,比如我们 在论坛发帖的过程中嵌入了 XSS 攻击 代码 ,当我们发布的帖子被用户浏览访问时就可以触发 XSS 代码。
            
存储型 XSS 的优势在于恶意代码被存储到服务器上,比如我们 在论坛发帖的过程中嵌入了 XSS 攻击 代码 ,当我们发布的帖子被用户浏览访问时就可以触发 XSS 代码。
        
Name: root
Message: <script>alert(document.cookie);</script>
        

存储型 XSS 和反射型 XSS 的区别是:XSS 只会弹一次 cookie 信息。存储型 XSS 每次访问这个页 面都是会弹出 cookie 信息。因为 XSS 代码已经嵌入在了该 Web 站点当中,所以每次访问都会被执行  
        
               

再次刷新页面,还是可以弹出弹出 cookie 信息。 

我们登录服务器上的数据库进行查看。
        

可以看到我门提交的数据被存放在数据库当中。每次用户访问页面时 Web 程序会从数据库中读取出 XSS 攻击代码,从而被重复利用。
        
        

4、DOM 型 XSS 原理

DOM Based XSS 漏洞是基于文档对象模型 Document Objeet Model,DOM)的一种漏洞。它其
实属于反射型 XSS 的一种,所以它也通过 URL 来进行触发 XSS 攻击。
        

可以看到参数在 URL 地址中是可控的。
修改 URL 中传递的参数为 root
        

可以看到 URL 中的参数被带入到页面中被浏览器执行。从而修改页面中的内容变为:root。
在 url 中加入 js 脚本: 

         

        

三、实战-反射型 XSS 攻击劫持用户浏览器

1、构建反射型 XSS 攻击

我们先构建一个反射型的 XSS 攻击跳转到存在漏洞的页面。其实也可以在 DVWA 中直接进行攻
击,但是我们处于演示目的构造了一个相对复杂的环境。
<script>
window.onload = function() {
var link=document.getElementsByTagName("a");
for(j = 0; j < link.length; j++) {
link[j].href="http://www.wkxy25.top/ ";}
}
</script>
JavaScript 代码分析 :window.onload 当网页加载完成时,执行 function 匿名函数
函数功能:document.getElementsByTagName 获取页面中所有的 a 标签,存放到 link 数组
中,使用 for 循环将 link 数组中的所有元素替换为恶意网址。
        
打开 chrome 浏览器,我们在反射型 XSS 中进行测试效果
        
执行完成后页面并没有什么异常,刷新也没有问题,但是我们点击页面中任何链接时,会发现所有能够点击的链接点击后都会跳转到http://www.wkxy25.top/
        

        

2、使用 beef 劫持用户浏览器

BeEF( The Browser Exploitation Framework) 是由 Wade Alcorn(瓦德 · 奥尔康) 在 2006
年开始创建的,至今还在维护。是由 ruby 语言开发的专门针对浏览器攻击的框架。
         

 点击应用程序启动 beef

         

再打开一个终端,启动 apache
┌──(root
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/149987
推荐阅读
相关标签