首页 技术 正文
技术 2022年11月9日
0 收藏 473 点赞 3,692 浏览 2705 个字

一、XSS(跨站脚本)概述

Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写”CSS”冲突,故又称XSS。一般XSS可以分为如下几种常见类型:1.反射性XSS;2.存储型XSS;3.DOM型XSS;XSS漏洞一直被评估为web漏洞中危害较大的漏洞,在OWASP TOP10的排名中一直属于前三的江湖地位。XSS是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。因此在XSS漏洞的防范上,一般会采用“对输入进行过滤”和“输出进行转义”的方式进行处理:输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入;输出转义:根据输出点的位置对输出到前端的内容进行适当转义;

二、XSS(跨站脚本)利用

1.反射型xss(get)

反射型XSS(get)输入   ‘  ”  <>  特殊字符都可以原封不动的输出,可以发现没有任何过滤审查元素修改下长度,输入payload:<script>alert(/xss/)</script>即可查看后台代码,发现 后台代码并没有对你输入的东西 做任何修改 ,只是原封不动的输出了

2.反射型xss(post)

输入账号密码:admin/123456 登入

登入后直接输入payload:<script>alert(/xss/)</script> 触发弹窗

3.存储型xss

输入特殊字符:'”<> 发现没有过滤  查看前端元素代码直接输入payload:<script>alert(/xss/)</script> 触发弹窗查看后台代码判断message是否存在,并且 message不为空进行了转义,防止sql注入插数据库的时候,做了对应的转义,防止数据库的注入 ,把massage 插入到表中 存下来,存到后台;将存储的留言 都显示出来,每次点击存储型xss时就会弹窗,所以是持久型xss

4.DOM型xss

HTML DOM树,可以理解为DOM为一个一个访问html的标准编程接口输入测试代码'”<> 显示的内容和我们的输入的有所不同getElementById获取标签id为text的值传递给str,str通过字符串拼接到a标签中。所以我们要闭合前面的<a>标签输入payload1: ‘><img src=”#” onmouseover=”alert(‘xss’)”>可以发现我们的输入变成了当鼠标移动到图片位置就会触发弹窗输入payload2:’ onclick=”alert(‘xss’)”>可以发现我们的输入变成了点击what do you see,便会触发弹窗

5.DOM型xss-x

查看网页源代码通过拼接代码的功能是从text框取值并插入到标签<a href=”>,例如输入alert,点击链接会跳转到 http://xxxx/xss/alert中,先闭合前面的<a>标签,再构造新的恶意标签拼接进代码输入payload1: ‘><img src=”#” onmouseover=”alert(‘xss’)”>可以发现我们的输入变成了当鼠标移动到图片位置就会触发弹窗攻击过程:输入payload-》点击’请说出你的伤心往事‘-》点击’有些费尽心机…‘-》鼠标移动到图片位置输入payload2:’ onclick=”alert(‘xss’)”>可以发现我们的输入变成了

6.xss之盲打

xss盲打是一种攻击场景。我们输出的payload不会在前端进行输出,当管理员查看时就会遭到xss攻击。输入常规的payload:<script>alert(/xss/)</script>,点击提交后发现这里提示一段文字,应该是直接打到后台了,找到后台,登录进去看看后台地址是/xssblind/admin_login.php登录即可触发xss

7.xss之过滤

输入 ‘<script>” 特殊字符,看输出结果字符被过滤,查看前端源码 输入与输出结果不一致查看后端源码,发现对 <script 标签进行了过滤,替换为空格,但是只是对小写进行了替换尝试大小写绕过<SCRIPT>alert(/xss/)</sCRIpt>当script为过滤关键词时,可以尝试其他的payload,如<img src=x onmouseover=”alert(/xss/)”><img src=x onerror=”alert(/xss/)”>点击图片的位置触发弹窗

8.xss之htmlspecialchars

htmlspecialchars()函数定义及用法在php中,htmlspecialchars()函数是使用来把一些预定义的字符转换为HTML实体,返回转换后的新字符串,原字符串不变。如果 string 包含无效的编码,则返回一个空的字符串,除非设置了 ENT_IGNORE 或者 ENT_SUBSTITUTE 标志;被转换的预定义的字符有:&:转换为&amp;”:转换为&quot;’:转换为成为 ‘<:转换为&lt;>:转换为&gt;输入特殊字符’   ”   <   > ,查看前端源码,我们看到   ”   <   >   都进行了html实体转码但是没有对 ‘ 进行实体转码可以使用单引号构造payload。#’ onclick=’alert(/xss/)可以看到我们的输入变成了第一个单引号闭合href属性的双引号,第二个单引号闭合href属性的闭合双引号点击语句即可触发弹窗

9.xss之href输出

输入测试代码#’ onclick=’alert(/xss/) ,查看前端源码,发现单引号没有用了在a标签的href属性里面,可以使用javascript协议来执行js,可以尝试使用伪协议绕过。javascript:alert(/xss/)  点击即可触发弹窗

10.xss之js输出

输入测试代码<script>alert(/xss/)</script> 查看源码输入的代码被生成在js中并赋值给$ms。我们的输入被带入到js中,可以闭合</script><script>alert(/xss/)</script>’;alert(1);//成功弹窗

三、本文总结

到此为止,通过本篇文章,我们大家分别从XSS(跨站脚本)漏洞的原理、危害,XSS(跨站脚本)如何利用等方面,来和大家一起学习了XSS(跨站脚本)这项漏洞,相信大家已经对XSS(跨站脚本)这项漏洞有了明确而深刻的认识。

本人之后还会陆续分享我在web安全学习之路上的各种笔记,包括且不限于各种漏洞原理、实战漏洞挖掘、漏洞复现以及靶场和CTF的通关教程等等,希望大家多多支持。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,490
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,905
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,738
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,491
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,129
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,292