XSS漏洞的概括:
XSS又叫CSS(Cross Site Script)跨站脚本攻击,指的是攻击者在Web页面,插入恶意JS代码,当用户浏览该页之时,嵌入其中JS代码就会被执行,从而达到攻击的目的.(**包含:收集用户的Cookie,添加账号,修改密码,提高用户权限等等.**)
目录:
XSS漏洞分类:
1.反射型
非存储型,就是通过get或者post请求时,被后端处理过数据,并且响应到前端页面上2.存储型
XSS代码被存储到服务器上的数据库里的某张表的字段里,或者页面,或者某个上传文件里3.DOM型
仅仅在前段页面进行操作的
XSS漏洞的危害:
(1)窃取用户Cookie,如果用户Cookie被窃取,攻击者可以不通过密码,而直接登录用户账户
(2)使用XMLHttpRequest构造模拟用户请求操作
(3)XSS钓鱼攻击
(4)用户PC信息探测收集器
(5)XSS蠕虫攻击等.
靶场:
本地自己搭建的 Pikachu(皮卡丘)靶场:安装在win XP(IP地址:192.168.1.104)
Pikachu(皮卡丘)靶场搭建链接:Web安全 Pikachu(皮卡丘)靶场搭建._半个西瓜.的博客-CSDN博客
🌲前提 理解一下HTML代码:编程语言之 HTML代码的理解._半个西瓜.的博客-CSDN博客
提示:XSS漏洞 一般会出现在查询框,留言板等可以输入的地方.
XSS漏洞的利用 步骤:
常用的测试:
(1)<script>alert('XSS')</script> //简单弹框
(2)<ScRiPt>AlErt('XSS')</ScRiPt> //过滤了大小
(3)<img src="#" onerror=alert("XSS")> //img 标签 进行绕过
(4)javascript:alert('xss') //使用 Javascript 的尾协议
(5)' onclick=' alert("xss") //利用 href 属性值来进行xss
(1)反射型(xss)
反射型(xss)特点:XSS代码常常出现在URL请求中,当用户访问带有XSS代码的URL请求时,服务器端接收请求并处理,然后将带有XSS代码的数据返回给浏览器,浏览器解析该段带有XSS代码的数据并执行,整个过程就像一次反射,故称为反射型XSS.
我们首先找到一个输入框,然后测试他是否存在XSS漏洞:
测试 代码:** **
(1)<script>alert('反射型(xss)')</script> //简单弹框
(2)<ScRiPt>AlErt('反射型(xss)')</ScRiPt> //过滤了大小
(3)<script>alert('document.cookie')</script> //窃取用户 Cookie
第一步:因为这里前端代码做了文字长度的限制,所有按 F12 把文字长度加长.
第二步:进行测试 查看是否弹框(如果弹框,则有XXS漏洞的存在.)
测试 代码:
<script>alert('反射型(xss)')</script>
第三步:利用 XSS 漏洞,窃取用户 Cookie
**测试 **代码:
<script>alert(document.cookie);</script>
(2)存储型(xss)
存储型XSS特点:攻击的特点是提交的恶意内容会被永久存储,因而一个单独的恶意代码就会使多个用户受害,故被称为持久性XSS.
**测试 **代码:
(1)<script>alert('存储型(xss)')</script> //简单弹框
(2)<ScRiPt>AlErt('存储型(xss)')</ScRiPt> //过滤了大小
(3)<script>alert('document.cookie')</script> //窃取用户 Cookie
第一步:测试 存储型(xss)这个一般都是出现在留言板里面的.
测试 代码:
<script>alert('存储型(xss)')</script>
第二步:测试的代码已成功弹框,并且将代码保存在了后面.
第三步:因为这个是 存储型(xss),所有所有的用户点击这个页面的时候都会弹框.
(3)DOM型(xss)
DOM型(xss):它通常是由于客户端接收到的脚本代码存在逻辑错误或者使用不当导致的。比如Javascript代码不正确地使用各种DOM方法(如document.write)和Javascript内部函数(如eval函数),动态拼接HTML代码和脚本代码就容易引发DOM型的跨站脚本攻击.
网页代码:将a标签进行闭合,然后输入测试代码进行弹框.
第一步:当我们随便输入一个数字,他就会出现一个链接.
然后 我们尝试点击的时候,发现会链接后面多了 123
第二步:我们可以把代码闭合,改成XSS攻击.
测试 代码:
123'></a><img src=1 onerror=alert(1)>
**测试 **代码:
123'><img src="#" onerror="alert('xss')">
(4)xss盲打
其实:XSS盲打不是攻击类型,是一个攻击场景.
换句话来说:就是后台 管理员 可能遭受到我们的XSS攻击.(就是客户端不会受到攻击,后台会受到我们的XSS攻击.)
第一步:在一个留言,把测试代码 留言给后台管理员看.(在这里留言的内容前端是看不到的.)
测试 代码:
<script>alert('盲打(xss)')</script>
然后登录管理员查看,发现 测试代码 生效了.(存在XSS漏洞.)
(5)XSS之过滤
XSS之过滤:具有一定的过滤能力.
源代码 :对 <script> 标签进行了替换,替换成了一个空的字符.
测试 代码:(利用大小写进行绕过)
<SCRIPT>alert('xss之过滤')</sCRIpt>
测试 代码:(利用 img 标签 进行绕过)
<img src="#" onerror=alert("XSS之过滤")>
(6)xss之htmlspecialchars
xss之htmlspecialchars:使用了html特殊字符(所以我们可以利用链接点击 进行弹框.)
源代码 : 利用 href 属性值来进行xss.
测试 代码:
' onclick=' alert("xss之htmlspecialchars")
点击 链接进行弹框.
(7)xss之href输出
xss之href输出:使用 Javascript 的尾协议进行点击链接弹框.
网页代码:输入的内容被包含在 href 标签里面,所以使用 Javascript 的尾协议进行点击链接弹框.
测试** 代码:**
javascript:alert('xss之href输出')
(8)xss之js输出
网页代码:111111是输入的(然后 将'</script>闭合 进行弹框.)
测试 代码:
'</script><script>alert('xss之js输出')</script>
XSS漏洞的防御:
(1)于后台可能存在过滤措施,构造的script可能会被过滤掉,而无法生效或者环境限制了执行.(浏览器)
(2)可在cookie中设置httponly.(浏览器禁止页面的js访问带有httponly属性的cookie)
(3)xss filter.(检查输入,设置白名单方式)
(4)输出检查.(编码,转义,常用编码:html编码,js编码,16进制等)
(5)针对不同位置的输出,使用不同的处理方式.
(6)处理富文本.header中使用content-Sencurity-Policy字段,规定请求js的域名白名单.(CSP策略)
参考链接:XSS漏洞的原理_孤的博客-CSDN博客_xss漏洞产生的原因
参考链接:XSS漏洞原理和利用_VictorZhang-CSDN博客_xss漏洞原理
参考链接:【XSS技巧拓展】————4、浅谈跨站脚本攻击与防御_Fly_鹏程万里-CSDN博客
版权归原作者 半个西瓜. 所有, 如有侵权,请联系我们删除。