Part 1 课程笔记
概念
xss,cross site script 跨站脚本。一种注入攻击,指攻击者在页面注入恶意脚本代码,当受害者在访问页面时,恶意代码会在其浏览器上执行。不仅限于JavaScript,还有flash等其他语言。
危害
- 盗取各类用户帐号,如机器登录帐号、用户网
- 银帐号、各类管理员帐号;
- 控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力;
- 盗窃企业重要的具有商业价值的资料;
- 非法转账;
- 强制发送电子邮件;
- 网站挂马;
- 控制受害者机器向其它网站发起攻击。
分类
XSS漏洞按照攻击利用手法的不同,有以下三种类型:
类型A,本地利用漏洞。 这种漏洞存在于页面中客户端脚本自身;
类型B,反射式漏洞。 这种漏洞和类型A有些类似,不同的是Web客户端使用Server端脚本生成页面为用户提供数据时,如果未经验证的用户数据被包含在页面中而未经HTML实体编码,客户端代码便能够注入到动态页面中;
类型C,存储式漏洞。 该类型是应用最为广泛而且有可能影响到Web服务器自身安全的漏洞,骇客将攻击脚本上传到Web服务器上,使得所有访问该页面的用户都面临信息泄漏的可能,其中也包括了Web服务器的管理员。
实验
实验环境的配置可以自行上网搜索,本文实验环境配置如Mac下配置dvwa所示
反射型:low等级
在dvwa security下选择low等级并单击submit提交。
在xss(reflected)
下提交<script>alert(1)</script>
,如下图所示:
反射型:medium等级
修改等级为medium
,再次提交<script>alert(1)</script>
,结果如下图,我们发现这个语句没法绕过。
但是可以通过以下几种方式绕过:
-
body标签
<body onload=alert("XSS")>
也可以在高级里面用body标签。 -
双写:
<sc<script>ript>alert(//xss)</script>
只过滤了前面一条。 -
大小写:
<ScRipt>alert(/xss/)</script>
存储型:low等级
在进行输入的时/候会发现name框的输入长度被限制,此时如果是GoogleChrome用option+command+I打开源码会发现maxlength为10,且无法更改。更换Safari之后这个问题就解决了,将maxlength值改为100或是更大。
存储型:medium等级
## 防御
小结
- 双写绕过,例如
<scr<script>ipt>
- 大小写绕过,例如
sCripT>
- 其他标签绕过,例如
<img>
、<body>
Part 2 课后习题