看图说话:反射式XSS(跨站)漏洞示例

Posted 软件测试经验与教训

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了看图说话:反射式XSS(跨站)漏洞示例相关的知识,希望对你有一定的参考价值。

★安全测试之XSS漏洞(二)★

读书与实践是获取知识的主要渠道,学习的权力只掌握在每个人自己手中,让学习成为一种生活的习惯,这比任何名牌大学的校徽重要得多!

——张老师

张老师寄语


导图




1 反射型XSS漏洞是什么?

2.如何判断是否存在反射型XSS攻击风险? 

3.反射型XSS漏洞攻击的场景?

4.怎么避免反射型XSS漏洞攻击?






1. 反射型XSS漏洞是什么?

上一篇文章中我们讲到了XSS漏洞有两种类型:存储型和反射型(实际上还有一种是基于DOM的XSS),也提到了反射型XSS漏洞的特点,即:恶意代码并没有保存在目标网站,而是通过引诱用户点击一个恶意链接来实施攻击。这类恶意链接有哪些特征呢?

主要有:

  • 恶意脚本附加到 url 中,只有点击此链接才会引起攻击

  • 不具备持久性,即只要不通过这个特定 url 访问,就不会有问题

  • xss漏洞一般发生于与用户交互的地方


举个例子,比如我们在访问一个链接的时候(http://102.3.203.111/Web/reflectedXSS.jsp?param=value...),这个URL中就带了参数(param=value...),如果服务端没有对参数进行必要的校验,直接根据这个请求的参数值构造不同的html返回,让value出现在返回的html中(JS,HTML某元素的内容或者属性)并被浏览器解释执行,就可能存在反射型XSS漏洞。


可能有人会问,用户怎么可能把value改成可以执行的恶意代码呢?这不是自己坑自己吗?而且用户也不知道怎么改成恶意代码啊?而且这个“恶意代码”又是怎么传递给其他用户呢?疑问暂且保留,我们继续往下看。


我们用一张图来解释XSS漏洞攻击的原理:

看图说话:反射式XSS(跨站)漏洞示例

上图中,攻击者(黑衣人)骗取用户信任,构造一个带有跨站脚本的链接,诱骗用户点击(第2、3步),跨站脚本在服务端(WEB应用程序)上没有被过滤,直接返回用户浏览器(第4步),用户浏览器执行恶意脚本(第5步),后面发生的事情就像第6、7步描述的那样。

2. 如何判断是否存在反射型XSS攻击风险?

上面提到,反射型XSS漏洞的前提是可以在url中附加参数,那么问题来了:应该如何构造“恶意参数”呢? 


是不是只要能懂得构造“恶意参数”,并且用它来完成测试,就可以判断出系统是否存在反射型XSS漏洞呢?


并非所有系统都支持在url中添加参数,那么不支持在url中添加参数的系统是否就代表不存在XSS漏洞呢?


思考了上面这几个问题,我想我们基本可以总结出做反射型XSS漏洞测试的思路了: