基于Pikachu漏洞练习平台的 XSS攻击

概述

简介

XSS是一种发生在Web前端的漏洞,所以其危害的对象也主要是前端用户。

XSS漏洞主要是通过js代码用来进行钓鱼攻击、前端js挖矿、盗取用户cookie,甚至对主机进行远程控制。

攻击流程

假设存在漏洞的是一个论坛,攻击者将恶意的JS代码通过XSS漏洞插入到论文的某一页面中

当用户访问这个页面时,都会执行这个恶意的JS代码,这个代码就会在用户的浏览器端执行

XSS攻击类型

危害:存储型 > 反射型 > DOM型

  • 反射型:交互的数据一般不会被存在数据库里面,一次性,所见即所得,一般出现在查询页面等
  • 存储型:交互的数据会被存在数据库里面,永久性存储,一般出现在留言板,注册等页面
  • DOM型:不与后台服务器产生数据交互,是一种通过DOM操作前端代码输出的时候产生的问题,一次性,也属于反射型

XSS形成原因

形成XSS漏洞的主要原因是程序中输入和输出的控制不够严格

导致“精心构造”的脚本输入后,在输出到前端时被浏览器当作有效代码解析执行

XSS漏洞测试流程

① 在目标上找输入点,比如查询接口、留言板

② 输入一组 “特殊字符(>,’,"等)+唯一识别字符” ,点击提交后,查看返回源码,看后端返回的数据是否有处理

③ 通过搜索定位到唯一字符,结合唯一字符前后语法确定是否可以构造执行js的条件(构造闭合)

④ 提交构造的脚本代码(以及各种绕过姿势),看是否可以成功执行,如果成功执行则说明存在XSS漏洞

反射型XSS(get)

img

我们先输入“ '"<>6666 ” 用于测试我们的输入会不会被过滤掉,因为有特殊字符

还有我们的输入会不会被输出,输出会不会被处理

img

下面我们查看一下页面源码

img

我们的输入被原封不动地输出到了 p 标签中

下面测试我们输入的JS代码,看是否会原封不动地输出,payload如下

<script>alert("xss")</script>

由于前端对输入长度做了限制,我们需要修改一下才能输入完整的payload

img

提交之后发现我们的payload在浏览器上成功执行了

img

我们查看源码可以发现,我们输入的payload嵌入了到了 p 标签里面

这又是正确的JS代码,所以被浏览器正确执行了

img

这是一个简单的反射型XSS,从前端输入由后端接受再输出

后端没有对这个内容进行存储

img

另外,这是一个GET型的XSS漏洞,一般将带有XSS的URL伪装后发送给目标即可

如果是POST型的XSS,无法直接使用URL的方式进行攻击

XSS案例:盗取Cookie

主要原理:由于HTTP是无状态的连接,获取用户cookie后就可以伪造客户请求。

实验机器

  • 攻击者192.168.171.129
  • 受害者192.168.171.1
  • 漏洞服务器192.168.171.133

攻击流程

img

先在Kali上搭建XSS后台,将pikachu项目源码放到Kali机器的/var/www/html文件夹中

img

启动MySQL和Apache服务

service apache2 start
service mysql start

Kali中MySQL的root账号的密码为root,可以根据实际情况配置 /var/www/html/pikachu/pkxss/inc/config.inc.php 中的数据库信息

访问 http://localhost/pikachu ,访问管理工具里的XSS后台,初始化数据库

img

看到下面的界面就是成功了

img

然后进入登录界面、登录

img

img

如果碰到连不上数据库的情况,可以尝试执行下面的命令

# 进入MySQL shell
mysql -u root -proot
# 增加权限
grant all privileges on . to ‘root’@’%’ identified by ‘root’;
# 刷新权限
flush privileges;
# 退出MySQL shell
quit

修改/var/www/html/pikachu/pkxss/xcookie下的cookie.php,将IP地址改为漏洞服务器的地址

img

cookie.php用于接收受害者的cookie,然后将页面重定向到漏洞服务器的index页面,我们构造的Payload如下

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值