“跨站点脚本编制”攻击是一种隐私违例,可让攻击者获取合法用户的凭证,并在与特定 Web 站点交互时假冒这位用户。
跨站点脚本编制受到的威胁,(但不限于)以下几种情况:
- 当用户查看基于攻击者提供的内容而动态生成的页面时,他们会不知不觉地执行恶意脚本;
- 在用户的会话 cookie 失效之前,攻击者就能接管用户会话;
- 攻击者可以将用户连接到攻击者选择的恶意服务器上;
- 攻击者诱导用户访问由攻击者提供的URL,从而导致在用户的浏览器中执行攻击者选择的脚本或 HTML。通过使用这种技术,攻击者可以使用访问过此URL的用户的特权来采取行动,诸如对底层 SQL 数据库发出查询并查看其结果。
- 在上图中,恶意攻击者(这里使用 Evil.org 表示)通过 E-mail 或 HTTP 将某银行的网址链接发给用户(银行用 bank.com 表示),该链接中附加了恶意的脚本(上图步骤一);
- 用户访问发来的链接,进入银行网站,同时,嵌在链接中的脚本被用户的浏览器执行(上图步骤二、三);
- 用户在银行网站的所有操作,包括用户的 cookie 和 session 信息,都被脚本收集到,并且在用户毫不知情的情况下发送给恶意攻击者(上图步骤四);
- 恶意攻击者使用偷来的 session 信息,伪装成该用户,进入银行网站,进行非法活动(上图步骤五)。
- 因此,只要 Web 应用中,有可被恶意攻击者利用执行脚本的地方,都存在极大的安全隐患。黑客们如果可以让用户执行他们提供的脚本,就可以从用户正在浏览的域中偷到他的个人信息、可以完全修改用户看到的页面内容、跟踪用户在浏览器中的每一个动作,甚至利用用户浏览器的缺陷完全控制用户的机器。
GET方跨站脚本测试
编号 | Web_XSS_01 |
测试用例名称 | GET方式跨站脚本测试 |
测试目的 | 由于跨站脚本会导致会话被劫持、敏感信息泄漏、账户被盗,严重时甚至造成数据修改、删除,从而导致业务中断,因此需检测跨站脚本是否存在 |
用例级别 | 一级 |
测试条件 |
|
执行步骤 |
由于有些HTML元素(比如<textarea>或”)会影响脚本的执行,所以不一定能够正确弹出123456告警框,需要根据返回网页源文件的内容,构造value的值,比如 多行文本输入框: </textarea><script>alert(123456)</script> 文本输入框: </td><script>alert(123456)</script> '><script>alert(123456)</script> |
预期结果 | 不存在跨站脚本漏洞 |
备注 | 需要对页面上所有可以提交参数的地方进行测试。具体跨站脚本的测试语句根据实际情况的不同而不同,这里列出了一些最常见构造语句。 AppScan可以找出扫描到的页面的绝大部分跨站脚本漏洞,但对没有扫描到的网页就无能为力了。 |
测试结果 |
POST方跨站脚本测试
编号 | Web_ XSS_02 |
测试用例名称 | POST方式跨站脚本测试 |
测试目的 | 由于跨站脚本会导致会话被劫持、敏感信息泄漏、账户被盗,严重时甚至造成数据修改、删除,从而导致业务中断,因此需检测跨站脚本是否存在 |
用例级别 | 一级 |
测试条件 |
|
执行步骤 |
由于有些HTML元素(比如<textarea>或”)会影响脚本的执行,所以不一定能够正确弹出123456告警框,需要根据返回网页源文件的内容,构造value的值,比如 </textarea><script>alert(123456)</script> '><script>alert(123456)</script> |
预期结果 | 不会弹出显示123456的对话框。 |
备注 | 需要对页面上所有可以提交参数的地方进行测试。 |
测试结果 |