目录
xss漏洞介绍
XSS是什么
XSS漏洞原理
反射型XSS攻击复现
存储型XSS攻击复现
DOM型XSS攻击复现
常用的XSS测试语句
关于XSS的防御
xss漏洞介绍
跨站脚本攻击,英文全称是Cross Site scripting,为了不和层叠样式表(Cascading Style Sheets,CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS
XSS攻击,通常指的是攻击者通过“HTML注入”篡改网页,插入恶意脚本,代码注入的一种攻击手段,当其他用户浏览网页时就会受影响
常见的危害如窃取cookie,未授权操作,键盘记录,钓鱼等等
XSS是什么
那XSS到底是什么呢?举个例子,假设有一个页面,会把用户输入的参数直接输出至页面上,代码如下
用户通过GET方式向param提交的参数会回显至页面上,若访问
http://127.0.0.1/1.php?param=ganyu
F12查看源码:
但是如果攻击者提交的是一段HTML代码呢?
http://127.0.0.1/1.php?param=
alert()方法用于显示带有一条指定消息和一个 OK 按钮的警告框
再次查看源码
可以看见,用户输入的script脚本已被写入至页面,alert(/xss/)在当前页面被执行
如果构造的payload不是,而是
真正的payload写在这个远程脚本exp.js中,避免直接在URL内写入大量javascript
以上例子就是典型的XSS第一种类型:反射型XSS
XSS漏洞原理
根据效果不同而分为三类:
反射型XSS
攻击方式:攻击者通过电子邮件等方式将包含的XSS代码恶意链接发送给目标用户,当用户访问链接时,服务器把带有XSS代码的数据发送给目标用户浏览器,浏览器解析这段恶意脚本,导致XSS漏洞,这种攻击方式也称为“非持久型XSS”
存储型XSS
攻击方式:攻击者在发帖过程中,将恶意脚本连同正常信息一起注入帖子的内容中,随着帖子被服务器存储下来,攻击脚本将被永久地存放在目标服务器的数据库中,具有很高的隐蔽性,当正常用户浏览这个被插入恶意脚本的帖子时,恶意脚本会在他们的浏览器中执行,这种攻击方式也称为“持久型XSS”
DOM型XSS
攻击方式:用户请求一个经过专门设计的URL,由攻击者提交,其中包含XSS代码,服务器的响应不会以任何方式包含攻击者的脚本,当用户浏览器处理这个响应时,DOM对象就会处理XSS代码,导致存在XSS漏洞
反射型XSS攻击复现
源码如下:
反射型XSS
反射型XSS靶场
';
}else{
echo '';
}
?>
这段代码实现的功能是在表单内的输入框提交内容,单击提交按钮后,会回显至页面上,若访问http://127.0.0.1/1.html?xss_input_value=ganyu,ganyu将输出到页面上
但是如果访问的是http://127.0.0.1/1.html?xss_input_value=%22%3E%3Cscript%3Ealert%28%2Fxss%2F%29%3C%2Fscript%3E呢?
payload:">
F12查看源码,可以看到,输入的双引号闭合了value属性的双引号,并且重新插入一段HTML代码,如下所示
在反射型xss靶场中,通过GET方式提交参数xss_input_value的值,echo将会执行输出input标签,并将赋值给xss_input_value的值带入input的value中,当浏览器执行">时,造成XSS漏洞,利用同样方式可以构造的payload如下
">
存储型XSS攻击复现
存储型XSS页面实现的功能是获取用户输入的留言信息存储至数据库,并将留言信息输出到页面上
源码如下:
存储型XSS
存储型XSS靶场
留言板
标题 内容 ";
while($row=mysqli_fetch_array($result2)){
echo "".$row['title'] . " " . $row['content']." ";
}
echo "";
?>
首先复现需要创建一个名为xss的数据库,新建一个xsstable表,两个字段名,title和content。
当用户插入一条标题为hello,内容为world时,数据库中数据如下所示
那如果攻击者插入的标题为呢?
再次查询
能看见,成功插入了数据。当浏览器访问的时候,浏览器会将标题输出至页面,页面执行HTML代码,导致弹窗。此时,这个XSS也称“持久性XSS”
DOM型XSS攻击复现
源码如下:
DOM型XSS
DOM型XSS靶场
输入中...
单击“替换”会执行javascript的tihuan函数,tihuan函数为DOM操作,HTML的标签都是节点,通过HTML DOM,树中的所有节点均可通过javascript访问,如通过 document.getElementById获取ID为id1的节点,然后将节点id1的内容修改成id为dom_input中的值,当攻击者构造payload为,则造成XSS弹窗漏洞
常用的XSS测试语句
#' οnclick="alert(/xss/)">
关于XSS的防御
对用户提交的内容进行过滤,对url中的参数进行过滤,包括"","<",">","on*"等等,过滤掉会导致脚本执行的相关内容,对输入的内容进行过滤,可以分为黑名单过滤和白名单过滤。黑名单过滤虽然可以拦截大部分的XSS攻击,但是还是存在被绕过的风险。白名单过滤虽然可以基本杜绝XSS攻击,但是真实环境中一般是不能进行如此严格的白名单过滤的。
对输出到页面的数据进行相应的编码转换,包括HTML实体编码,javascript编码等等
C/C++/C#相关栏目本月热门文章
- 1【Linux驱动开发】设备树详解(二)设备树语法详解
- 2别跟客户扯细节
- 3Springboot+RabbitMQ+ACK机制(生产方确认(全局、局部)、消费方确认)、知识盲区
- 4【Java】对象处理流(ObjectOutputStream和ObjectInputStream)
- 5【分页】常见两种SpringBoot项目中分页技巧
- 6一文带你搞懂OAuth2.0
- 7我要写整个中文互联网界最牛逼的JVM系列教程 | 「JVM与Java体系架构」章节:虚拟机与Java虚拟机介绍
- 8【Spring Cloud】新闻头条微服务项目:FreeMarker模板引擎实现文章静态页面生成
- 9JavaSE - 封装、static成员和内部类
- 10树莓派mjpg-streamer实现监控及拍照功能调试
- 11用c++写一个蓝屏代码
- 12从JDK8源码中看ArrayList和LinkedList的区别
- 13idea 1、报错java: 找不到符号 符号: 变量 log 2、转换成Maven项目
- 14在openwrt使用C语言增加ubus接口(包含C uci操作)
- 15Spring 解决循环依赖
- 16SpringMVC——基于MVC架构的Spring框架
- 17Andy‘s First Dictionary C++ STL set应用
- 18动态内存管理
- 19我的创作纪念日
- 20Docker自定义镜像-Dockerfile
热门相关搜索
路由器设置
木托盘
宝塔面板
儿童python教程
心情低落
朋友圈
vim
双一流学科
专升本
我的学校
日记学校
西点培训学校
汽修学校
情书
化妆学校
塔沟武校
异形模板
西南大学排名
最精辟人生短句
6步教你追回被骗的钱
南昌大学排名
清朝十二帝
北京印刷学院排名
北方工业大学排名
北京航空航天大学排名
首都经济贸易大学排名
中国传媒大学排名
首都师范大学排名
中国地质大学(北京)排名
北京信息科技大学排名
中央民族大学排名
北京舞蹈学院排名
北京电影学院排名
中国戏曲学院排名
河北政法职业学院排名
河北经贸大学排名
天津中德应用技术大学排名
天津医学高等专科学校排名
天津美术学院排名
天津音乐学院排名
天津工业大学排名
北京工业大学耿丹学院排名
北京警察学院排名
天津科技大学排名
北京邮电大学(宏福校区)排名
北京网络职业学院排名
北京大学医学部排名
河北科技大学排名
河北地质大学排名
河北体育学院排名



