pikachu漏洞练习平台之xss(持续更新中)

概述

XSS(跨站脚本)
Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。
XSS漏洞对用户主机进行远程控制等。
XSS是一种发生在web前端浏览器漏洞,所以其危害的对象也是前端用户。
形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。因此在XSS漏洞的防范上,一般会采用“对输入进行过滤”和“输出进行转义”的方式进行处理:
输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入;
输出转义:根据输出点的位置对输出到前端的内容进行适当转义;

分类

  1. 反射型XSS:交互的数据一般不会被存在数据库里,一次性,即所见所得,一般出现在查询;
  2. 存储型XSS(持久性XSS):交互的数据会被存在数据库里,永久性储存,一般出现在留言板、注册等页面;
  3. DOM型XSS:不与后台服务器产生数据交互,是一种通过DOM操作前端代码输出的时候产生的问题·,一次性也属于反射型,与反射型区别在于不会与后台进行数据交互;
    危害型:存储型>反射型>DOM型

XSS漏洞基本测试流程

  1. 在目标站点找到找到输入点,比如查询接口、留言板等;
  2. 通过一组“特殊字符【如*、&、<、>、%、¥、“、‘】+唯一识别字符”,点击提交后查看返回的源码,是否有做对应的处理;
  3. 通过搜索定位到唯一字符,结合唯一字符前后语法确认是否可以构造执行js的条件(构造闭合);
  4. 提交构造的脚本代码(以及各种绕过姿势),看是否可以成功执行,如果成功执行则说明存在XSS漏洞。
    注意
  5. 一般查询接口容易出现反射型XSS,留言板容易出现存储型XSS;
  6. 由于后台可能存在过滤措施,构造的script可能会被过滤掉,而无法生效,或者环境限制了执行(浏览器);
  7. 通过变化不用的script,尝试绕过后台过滤机制。

反射型xss(get)

pikachu漏洞练习平台之xss(持续更新中)

方法

  1. 首先输入类似于特殊字符+唯一识别字符格式的字符串,如 ‘“<>6666,点击提交后查看响应结果。pikachu漏洞练习平台之xss(持续更新中)
  2. 点击右键,查看网页源代码,Ctrl+F,输入6666,即可找到输出点对应的源码,可以观察出来我们输入的内容被原封不动的返回,我们可以猜测如果输入正确的javescript的语句,也会被原封不动的返回。pikachu漏洞练习平台之xss(持续更新中)
  3. 我们可以尝试输入javascript语句<script>alert('xss')</script>,发现输入内容的长度被限制。
    pikachu漏洞练习平台之xss(持续更新中)
  4. 一般字符串长度的限制在前端,点击F12,打开开发者工具,查看输入框对应的源码,我们发现maxlength为20,我们可以改为20000。
    pikachu漏洞练习平台之xss(持续更新中)
  5. 输入我们想要输入的javascript代码,点击提交,可以看到一个xss的弹窗(javascript语句中alert后面括号里面的内容即为弹窗内容),说明这个javascript语句被后台执行。pikachu漏洞练习平台之xss(持续更新中)
  6. 由于为反射型xss,我们刷新页面后,刚才的操作均为一次性。
  7. 这种反射型xss是以get方式发送的请求,即输入的payloadurl中被提交至后台。pikachu漏洞练习平台之xss(持续更新中)

分析源码

pikachu漏洞练习平台之xss(持续更新中)
首先后端会判断输入的内容是否为空,页面会提示输入"kobe"试试,如果我们输入的内容为kobe,则会提示who is {$_GET['message']},i don't care!如果输入的内容为kobe,则会提示愿你和{$_GET['message']}一样,永远年轻,永远热血沸腾!其中的{$_GET['message']},我们可以发现,未对输入的内容进行防xss处理。

攻击方式

我们可以将合理的javascript语句写入url中,然后把这个url伪装后发送到我们要攻击的目标,一旦攻击目标点击这个域名【简称域名、网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置),例如,www.wikipedia.org是一个域名,和IP地址208.80.152.2相对应。IP是位置的数字型标识,而域名为位置的字符型标识,而域名系统则为将域名和IP地址相互映射的一个分布式数据库】,则将会产生XSS漏洞。

反射性XSS(post)

get与post典型区别:
get是以url的方式提交数据,而post是以表单方式在请求体里面提交。
pikachu漏洞练习平台之xss(持续更新中)

方法

  1. 点击页面右上方的提示,可获得正确的用户名admin和密码123456并登陆成功。pikachu漏洞练习平台之xss(持续更新中)
  2. 输入类似于特殊字符+唯一识别字符格式的字符串,如 ‘“<>6666,点击提交后查看响应结果。pikachu漏洞练习平台之xss(持续更新中)
  3. 点击右键,查看网页源代码,Ctrl+F,输入6666,即可找到输出点对应的源码,可以观察出来我们输入的内容被原封不动的返回,我们可以猜测如果输入正确的javescript的语句,也会被原封不动的返回。pikachu漏洞练习平台之xss(持续更新中)
  4. 输入我们想要输入的javascript代码<script>alert('xss')</script>,点击提交,可以看到一个xss的弹窗(javascript语句中alert后面括号里面的内容即为弹窗内容),说明这个javascript语句被后台执行。
  5. 查看url,因为为post请求,无法将url发送给攻击目标,这是我们可以通过burp抓取对应数据包,获得合法的url并发送给攻击目标。
    pikachu漏洞练习平台之xss(持续更新中)

存储型XSS

存储型xss与反射型xss形成原因相同,不同的是存储型XSS下攻击者可以将脚本注入到后台储存起来,构成更加持久的伤害,因此存储型XSS也称永久性XSS。

方法

pikachu漏洞练习平台之xss(持续更新中)
  1. 跟反射型XSS步骤相同,首先输入一个测试的payload,并查看源码,可以发现测试语句被原封不动的返回。
  2. 输入一个合法的javascript语句<script>alert('xss')</script>,我们同样可以看到一个xss的弹窗,而与反射型唯一的区别在于,我们刷新页面后,同样还会看到xss的弹窗。因为刚刚的留言已经被存到数据库中,每次点击这个页面都会触发这个脚本的运行得到弹窗,访问这个页面的用户都会成为攻击目标。

查看源码

pikachu漏洞练习平台之xss(持续更新中)
pikachu漏洞练习平台之xss(持续更新中)

首先判断输入的内容是否为空,然后进行一个防sql注入的转义【insert into....values、select from...之类的语句,在之前数据库的博客中都有提过 数据库知识整理相关博客】然后提交完成后将之前所有的留言记录循环输出。

DOM型xss

什么是DOM

通过javascript,可以重构整个HTML文档,可以添加、移除、改变或重排页面上的项目。要改变页面上的某个东西,javascript就需要获得对HTML文档中所有元素进行访问的入口。这个入口,连同对HTML元素进行添加、移动、改变或者移除的方法和属性,都是通过文档对象模型来获得DOM。所以,可以把DOM理解为一个一个访问HTML的标准编程接口。
pikachu漏洞练习平台之xss(持续更新中)

方法

pikachu漏洞练习平台之xss(持续更新中)
  1. 随便输入1111,我们看见页面提示,点击右键查看源码,我们可以看看后台进行了怎么样的操作。pikachu漏洞练习平台之xss(持续更新中)
  2. Ctrl+F,对应到what dou you see?对应的源码。
    pikachu漏洞练习平台之xss(持续更新中)
  3. 我们可以看到输入和输出未作出任何转义或者其他的操作。pikachu漏洞练习平台之xss(持续更新中)
  4. 我们将 <a href=’"+str+">what do you see? 拿出来分析,我们的目的是通过构造闭合的payload来执行预期的代码。我们构造
  5. pikachu漏洞练习平台之xss(持续更新中)
    pikachu漏洞练习平台之xss(持续更新中)即为我们构造的payload
  6. 将我们构造的payload输入,并点击下面的标签,即可成功得到一个111的弹窗,说明此处存在DOM型XSS漏洞。pikachu漏洞练习平台之xss(持续更新中)

DOM型XSS-X

pikachu漏洞练习平台之xss(持续更新中)

方法

  1. 随便输入内容,提交后可以看到这样的提示,我们这时点击右键查看对应的源码来看它的逻辑。pikachu漏洞练习平台之xss(持续更新中)
  2. 源码中window.location.search作用为获取浏览器的参数,获取url传参的参数内容并进行url解码,其他源码几乎与上一类型相同。
    pikachu漏洞练习平台之xss(持续更新中)
  3. 这与上一种类型不同地方在于输入是从浏览器的url获取,即可以从url中看到输入的内容,类似于反射型XSS(get)。
  4. 构造与上一题相同的合法的payload
    pikachu漏洞练习平台之xss(持续更新中)
  5. 点击提交后,将两个标签进行店家点击,即可得到一个111的弹窗,则说明此处存在DOM型XSS漏洞。pikachu漏洞练习平台之xss(持续更新中)
  6. 攻击方法与反射型XSS(get)相同,将url伪装后发送给我们的攻击目标,攻击目标点击这个域名,就会产生XSS漏洞。
版权声明:玥玥 发表于 2021-05-06 2:40:21。
转载请注明:pikachu漏洞练习平台之xss(持续更新中) | 女黑客导航