一、同源策略保护 Same Origin Policy Protection
(1)题目:This exercise demonstrates the Same Origin Policy Protection. XHR requests can only be passed back to the originating server. Attempts to pass data to a non-originating server will fail.
这次练习展示了同源策略保护。XHR请求只能传递回原始服务器。将数学传送到非原始的服务器将会失败。
(2)技术概念或主题(Concept/Topic To Teach)
AlAX技术的一项关键元素是XML Http Request(XHR),该技术允许客户端向服务端发起异步调用。然而,作为一项安全措施,这些请求最好只能从客户端原始页面向服务端发起访问。
(3)技术原理(How It works)
同源保护策略是JavaScript安全模型的基础。任意来源的JavaScript代码都只能访问或
操作同一来源的数据。“源”由三个部分组成:域(Domain)、协议(Protocol)、端口(Port)。同源策略是客户端脚本重要的安全度量标准。其目的是防止某个文档或脚本从多个不同源装载。当脚本被浏览器运行时,它们应该只被允许访问来自同一站点的资源,而不是那些来自其它站点可能包含有恶意的资源。运用了同源安全策略后,用户就能确保自己正在查看的页面确实来自于正在浏览的域。
XML Http只能向同源服务器发送请求,任何向非同源服务器端发送的请求都将失败。
分别点击上图中两个链接将自动发送两个XML Http请求(同源/不同源),点击查看不同的返回结果。
二、基于DOM的跨站点脚本访问 DOM-Based cross-site scripting
(1)技术概念或主题
文档对象模型(DOM)从安全的角度展现了一个有趣的问题。它允许动态修改网页内容,但是这可以被攻击者用来进行恶意代码注入攻击。XSS,一种恶意代码注入,一般会发生在未经验证的用户的输入直接修改了在客户端的页面内容的情况下。
(2)技术原理
HTML DOM实体中可随时插入新的HTML语句或JavaScript 语句,因此很容易被恶意代
码利用,从而用来改变页面显示内容或执行恶意代码。HTML标记语言中很多标签的特殊属性参数中允许插入Js代码,如:IMG/IFRAME等。
(3)总体目标
在这个练习中,你的任务是利用此漏洞将恶意代码注入到DOM,然后在最后阶段,通
过修改代码来修复这个缺陷,从而解决该漏洞。
(4)题目:
STAGE 1: For this exercise, your mission is to deface this website using the image at the following location:
第一步:在这次练习中,你的任务是使用下列地址的图片污损网站。http://localhost:8089/WebGoat/images/logos/owasp.jpg 图片的链接地址
确定链接地址之后,在输入框中输入:< IMG SRC=“images/logos/owasp.jpg”/>,点击Submit Solution。
STAGE 2: Now, try to create a JavaScript alert using the image tag
步骤二:现在尝试利用image标签弹出一个警示框。
现在在输入框中输入:<img src=x ;;alert(‘dangerous’) />STAGE 3: Next, try to create a JavaScript alert using the IFRAME tag.
步骤三:下面,尝试着使用IFRAME标签创建一个js警告。
在输入框中输入:< IFRAME SRC=“javascript:alert(‘XSS’);”>,点击Submit Solution。STAGE 4: Use the following to create a fake login form:
Please enter your password:< BR>< input type = “password” name=“pass”/>< button onClick=“javascript:alert('I have your password: ’ + pass.value);”>Submit< /button>< BR>< BR>< BR>< BR>< BR>< BR>< BR>< BR>< BR>< BR>< BR>< BR>< BR>< BR>< BR>< BR>
步骤四:使用以下命令创建虚假登录表单STAGE 5: Perform client-side HTML entity encoding to mitigate the DOM XSS vulnerability. A utility method is provided for you in escape.js.
步骤五:执行客户端HTML实体编码以缓解DOM XSS漏洞。 在escape.js中为您提供了一种实用工具方法。
在\OWASP WebGoat\WebGoat-5.2\tomcat\webapps\WebGoat\javascript目录下找到escape.js文件
找到DOMXSS文件,并修改如下代码:
点击保存,并关闭文件。————————————————————————————————————————————————————————————————————
之前因为JDK版本的问题,此题的信息不能完全显示。现已更换JDK版本为WebGoat安装包中的1.6。
三、Client Side Filtering 客户端注入
(1)题目:
STAGE 1: You are Moe Stooge, CSO of Goat Hills Financial. You have access to everyone in the company’s information, except the CEO, Neville Bartholomew. Or at least you shouldn’t have access to the CEO’s information. For this exercise, examine the contents of the page to see what extra information you can find.
步骤一:你是Moe Stooge,山羊经济公司的CSO。你有查看公司中每个人的信息,除了CEO Neville Bartholomew的信息。或者至少你不应该访问CEO的信息。在这次练习中,检查网页的内容以查看是否能获取额外的信息。
操作步骤(一)
1.打开火狐浏览器的web开发者功能,进入查看器。
2.找到如下代码3.在html搜索框中输入Neville,找到如下代码
4.获取到的信息为,Neville的id为112,SSN为111-111-1111。薪水为450000。
5.将薪水填入框中,进入实验的第二部分。
STAGE 2: Now, fix the problem. Modify the server to only return results that Moe Stooge is allowed to see.
现在,修复这一问题。修改服务器使得服务器只向Moe返回其能看到的信息。
操作步骤(二)
问题的原因是服务器将所有信息发送到客户端,即使它被隐藏,也很容易找到敏感信息。因此,可以为XPath查询添加过滤器。
1.找到如下代码段。(位置tomcat\webapps\WebGoat\lessons\Ajax中的clientSideFiltering.jsp)
2.添加过滤器使得管理者只能看到她所管理人员的信息。
修改代码如下图所示:
3.刷新页面,效果如图。
至此,客户端注入实验已全部完成。