前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >安全运维3.1—跨站脚本漏洞(XSS)之反射型XSS(get)漏洞

安全运维3.1—跨站脚本漏洞(XSS)之反射型XSS(get)漏洞

作者头像
阿dai学长
发布2019-09-29 17:02:23
3K0
发布2019-09-29 17:02:23
举报
文章被收录于专栏:阿dai_linux阿dai_linux

概述

20190927156957034640622.png
20190927156957034640622.png

攻击流程

20190927156957042962366.png
20190927156957042962366.png

XSS漏洞常见类型

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

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

XSS漏洞形成的原因

20190927156957162869368.png
20190927156957162869368.png

形成XSS漏洞的主要原因是程序对输入和输出的控制不够严格,导致"精心构造"的脚本输入后,在输到前端时被浏览器当做有效代码解析执行,从而产生危害。

实验

跨站脚本漏洞测试流程

  • 在目标站点上找到输入点,比如查询接口、留言板等;
  • 输入一组"特殊字符+唯一标识字符",点击提交后,查看返回的源码,是否有做对应的处理;
  • 通过搜索定位大盘唯一字符,结合唯一字符前后语法确认是否可以构造执行js的条件(构造闭合);
  • 提交构造的脚本代码(以及各种绕过姿势),看是否可以成功执行,如果成功执行则说明存在XSS漏洞。

Tips:

  • 一般查询接口容易出现反射型XSS,留言板容易出现存储型XSS;
  • 由于后台可能存在过滤措施,构造的script可能会被过滤掉,而无法生效,或者环境限制了执行(浏览器);
  • 通过变化不同的script,尝试绕过后台过滤机制。

实验1—反射型XSS(get)漏洞

从一个弹窗开始认识XSS漏洞!

环境:Firefox、pikachu

测试工具:Firefox+浏览器开发者工具

进入到pikachu页面—反射型xss(get):

2019092715695759782484.png
2019092715695759782484.png

提交,查看返回结果:

20190927156957611930887.png
20190927156957611930887.png

然后,分析源码(通过关键词找到返回结果输出位置):

20190927156957618870337.png
20190927156957618870337.png

尝试在该位置输入js代码:

20190927156957639580382.png
20190927156957639580382.png

上面发现,文本框对输入内容加了长度限制,前端代码加的限制可解除,解除限制:

20190927156957661299887.png
20190927156957661299887.png

使用开发者工具(F12),修改 maxlength=20000 ,这样文本框中就可以输入更多字符:

20190927156957677832405.png
20190927156957677832405.png

提交:

20190927156957681195146.png
20190927156957681195146.png

说明,刚刚输入的代码直接执行了,即此处存在XSS(反射型)漏洞!

查看此时的源代码:

20190927156957694257258.png
20190927156957694257258.png

刷新页面,因为是反射型XSS漏洞,内容不会被保存。

反射型XSS漏洞利用场景

url分析:

代码语言:javascript
复制
http://127.0.0.1/pikachu/vul/xss/xss_reflected_get.php?message=%3Cscript%3Ealert%281%29%3C%2Fscript%3E&submit=submit

通过该漏洞,可以发给服务器执行任何js代码!

GET和POST典型区别

GET是以url方式提交数据;

POST是以表单方式在请求体里面提交;

GET方式的XSS漏洞更加容易被利用,一般利用的方式是将带有跨站脚本的url伪装后发送给目标,而POST方式由于是以表单方式提交,无法直接使用url方式进行攻击,如何利用?

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
    • 攻击流程
      • XSS漏洞常见类型
        • XSS漏洞形成的原因
        • 实验
          • 跨站脚本漏洞测试流程
            • 实验1—反射型XSS(get)漏洞
              • 反射型XSS漏洞利用场景
              • GET和POST典型区别
          相关产品与服务
          云开发 CLI 工具
          云开发 CLI 工具(Cloudbase CLI Devtools,CCLID)是云开发官方指定的 CLI 工具,可以帮助开发者快速构建 Serverless 应用。CLI 工具提供能力包括文件储存的管理、云函数的部署、模板项目的创建、HTTP Service、静态网站托管等,您可以专注于编码,无需在平台中切换各类配置。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档