- 撰稿|谢泳
- 编辑|王聪丽
- 信息收集|谢泳
1. 初识XSS
跨站脚本攻击(Cross Site Script, XSS)是利用web前端代码注入来篡改页面,执行恶意脚本,达到窃取数据、冒充身份等目的的攻击方法。 浏览器根据HTML代码解析页面,现在的HTML中可以有很多JavaScript脚本,XSS攻击则是利用前端代码的漏洞,插入恶意代码。
XSS攻击者必须有一定的JavaScript基础。在没有规避XSS的网页上,往往通过构造一些不可见元素,触发链接或表单的提交,就可以盗取到数据,比如cookie劫持。一般来说,脚本的插入需要对原网页代码的标签、脚本进行拼接,使得插入后的页面代码仍然符合语法,能够执行。
根据恶意脚本作用的效果,XSS可分为反射型和存储型。
2. 反射型XSS
反射型XSS将用户输入的内容作为代码让浏览器执行达到攻击目的,一般需要让用户访问攻击者构造的URL。 这种类型的攻击只发生在客户端上,并且需要从带有恶意脚本参数的特定URL进入,所以也称为 非持久型XSS。
要使用反射型XSS,目标网页中要使用一个参数值作为动态显示到页面的数据,并且目标网页对该参数值没有进行有效的检验,这样,就能在URL中通过构造参数的方式插入XSS payload(恶意脚本),让用户在不知情的情况下点击URL,从而执行XSS payload。反射型XSS虽然只是一次性,但方便攻击者利用。
2.1 Cookie劫持
现在,有一个攻击者“小黑”,他决定对一个用户“小锅”进行cookie劫持。假设有一个页面http://www.reflect_xss.com/test.html存在反射型XSS漏洞,小黑向小锅发送如下URL:
http://w