跨站脚本攻击xss

#跨站脚本攻击 xss


靶机
实验地址

认识xss

概述
人们经常将跨站脚本攻击(Cross Site Scripting)缩写为CSS,但这会与层叠样式表(Cascading Style Sheets,CSS)的缩写混淆。因此,有人将跨站脚本攻击缩写为XSS。
跨站脚本攻击(XSS),是最普遍的Web应用安全漏洞。这类漏洞能够使得攻击者嵌入恶意脚本代码到正常用户会访问到的页面中,当正常用户访问该页面时,则可导致嵌入的恶意脚本代码的执行,从而达到恶意攻击用户的目的。

原理
HTML是一种超文本标记语言,通过将一些字符特殊地对待来区别文本和标记,例如,小于符号(<)被看作是HTML标签的开始,之间的字符是页面的标题等等。当动态页面中插入的内容含有这些特殊字符(如<)时,用户浏览器会将其误认为是插入了HTML标签,当这些HTML标签引入了一段JavaScript脚本时,这些脚本程序就将会在用户浏览器中执行。所以,当这些特殊字符不能被动态页面检查或检查出现失误时,就将会产生XSS漏洞。

xss类型

类型解释
反射型xss非持久型, 攻击者事先制作好攻击链接, 需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一次性,所见即所得,一般容易出现在搜索页面。
存储型xss持久型, 代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,每当有用户访问该页面的时候都会触发代码执行,这种XSS非常危险,容易造成蠕虫,大量盗窃cookie(虽然还有种DOM型XSS,但是也还是包括在存储型XSS内)。
DOM型基于文档对象模型Document Objeet Model,DOM)的一种漏洞。DOM是一个与平台、编程语言无关的接口,它允许程序或脚本动态地访问和更新文档内容、结构和样式,处理后的结果能够成为显示页面的一部分。DOM中有很多对象,其中一些是用户可以操纵的,如uRI ,location,refelTer等。客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM XSS漏洞。

xss实验测试

1.反射型xss(get)

输入<script>alert('123')</script>,maxlength="20"限制了输入长度,故可改为100再输入
在这里插入图片描述
弹窗后将不在出现
在这里插入图片描述
2.存储型xss

输入<script>alert(document.domain);</script>后弹框,已经存储在服务器里,之后再次点击会促发xss弹框
在这里插入图片描述在这里插入图片描述
3.DOM型xss

分析代码,可看出参数传给了客户端javascript的doomxss函数执行,没有经过服务端
在这里插入图片描述

在这里插入图片描述

输入123,查看123在html的位置,发现在a标签里,尝试添加事件如onmouseover,先将前面引号闭合再输入’ onmouseover="alert('123')"

在这里插入图片描述鼠标移动指向what do you see? 促发事件onmouseover弹框
在这里插入图片描述
4.xss之 htmlspecialchars

htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。
预定义的字符是:
& (和号)成为 &
" (双引号)成为 "
’ (单引号)成为 ’
< (小于)成为 <
> (大于)成为 >
故可以利用伪协议javascript:alert(document.domain); 绕过过滤,再点击javascript:alert(document.domain);弹框在这里插入图片描述
5.xss之js输入

输入123查看在html的哪个位置,123在中,可尝试闭合<script>在这里插入图片描述故输入</script><script>alert('123')</script>闭合之后弹框
在这里插入图片描述
在这里插入图片描述

xss绕过过滤

a.闭合标签,增加事件等
"></a><scrip>alert('123')</script>
onmouseover="alert('123')"

b.空格绕过字符串替换,大小写
"><a href="javas cript:alert(document.domain)">xss</a>
' "><sCripT>alert(63252)</sCrIpT>

c.编码绕过
base64加密 "><script>eval(atob('base64加密过后的'));</script>
unicode编码 \u003c \u003e 分别为 <>
hex编码 <scrip>alert('123')</script>%3C%73%63%72%69%70%3E%61%6C%65%72%74%28%27%31%32%33%27%29%3C%2F%73%63%72%69%70%74%3E

d.存在htmlspecialchars()和htmllentities()等 实体输出函数
' onmouseover='javascript:alert(document.domain)'

在此欢迎大家指正,补充(学习笔记)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值