WebGoat-7.1课程(修改版) - 图文

更新时间:2023-10-22 22:13:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

密级

公开 WebGoat 7.1课程

版本说明

修订人 修订内容 修订时间 版本号 审阅人 倪伟伟 倪伟伟 初稿 修订 2016.05.23 1.0 2016.07.23 2.0 文档信息

文档名称 文档编号 文档版本号 扩散范围 扩散批准人 保密级别 文档说明

WebGoat7.1的本课程指导,自己根据网上搜集的资料整理(主要是胡晓斌2011年7月的WebGoat5.2课程使用说明和白河愁2012年9月的WebGoat5.4课程使用说明)以及http://drops.wooyun.org/web/13594,再加上自己的理解半完成。WebGoat7.1与以前的课程存在有不同之处。因自己刚接触Web安全,加之自身能力有限,部分课程没有完成,希望有兴趣的人一起学习、补充。

版权声明

可以随便修改

交流方式

1073746467

II

目录

1. WebGoat简介 ............................................................................................................................ 1 1.1. 1.2.

WebGoat安装 ........................................................................................................... 1 WebGoat启动 ........................................................................................................... 1

2. WebGoat课程 ............................................................................................................................ 2 2.1. 2.1.1. 2.1.2. 2.1.3. 2.2. 2.2.1. 2.3. 2.3.1. 2.3.2. 2.3.3. 2.4. 2.4.1. 2.4.2. 2.4.3. 2.4.4. 2.4.5. 2.4.6. 2.4.7. 2.5. 2.5.1. 2.5.2. 2.5.3.

Introduction ............................................................................................................... 2 How to work with WebGoat ........................................................................................ 2 Useful Tools ........................................................................................................................ 4 How to Create A Legacy Lesson ................................................................................. 5

General ........................................................................................................................ 5 HTTP Basic ......................................................................................................................... 5

Access Control Flaws .............................................................................................. 5 Using an Access Control Matrix .................................................................................. 5 Bypass a Path Based Access Control Scheme ........................................................ 6 LAB:Role Based Access Control .................................................................................. 7

AJAX Security .......................................................................................................... 14 LAB:Client Side Filtering ............................................................................................. 14 LAB:DOM-Based cross-site scripting ..................................................................... 16 DOM Injection ................................................................................................................. 19 XML Injection .................................................................................................................. 20 JSON Injection ................................................................................................................. 22 Insecure Client Storage ................................................................................................ 24 Dangerous Use of Eval ................................................................................................. 25

Authentication Flaws ........................................................................................... 26 Password Strength ........................................................................................................ 26 Forgot Password ............................................................................................................ 27 Multi Level Login 2 ........................................................................................................ 28

III

2.5.4. 2.6. 2.6.1. 2.7. 2.7.1. 2.8. 2.8.1. 2.8.2. 2.9. 2.9.1. 2.9.2. 2.9.3. 2.9.4. 2.9.5. 2.9.6. 2.9.7. 2.9.8. 2.10.

Multi Level Login 1 ........................................................................................................ 28

Buffer Overflows .................................................................................................... 29 Off-by-One Overflows ................................................................................................... 29

Code Quality ............................................................................................................. 31 Discover Clues in the HTML ....................................................................................... 31

Concurrency ............................................................................................................ 32 Thread Safety Problems............................................................................................... 32 Shopping Cart Concurrency Flaw ............................................................................ 32

Cross-SiteScripting ............................................................................................... 34 Phishing with XSS .......................................................................................................... 34 LAB:Cross Site Scripting ............................................................................................. 36 Stored XSS Attacks ......................................................................................................... 40 Reflected XSS Attacks .................................................................................................... 41 Cross Site Request Forgery(CSRF) ......................................................................... 41 CSRF Prompt By-Pass .................................................................................................. 42 CSRF Token By-Pass ..................................................................................................... 44 HTTP Only Test ............................................................................................................... 46

Improper Error Handling ................................................................................... 46

2.10.1. Fail Open Authentication Scheme ........................................................................... 46 2.11.

Injection Flaws ........................................................................................................ 47

2.11.1. Command Injection ...................................................................................................... 47 2.11.2. Numeric SQL Injection ................................................................................................. 48 2.11.3. Log Spoofing .................................................................................................................... 49 2.11.4. XPATH Injection ............................................................................................................. 50 2.11.5 String SQL Injection ...................................................................................................... 51 2.11.6 LAB:SQL Injection.......................................................................................................... 52 2.11.7 Database Backdoors ...................................................................................................... 56 2.11.8 Blind Numeric SQL Injection ..................................................................................... 57

IV

2.11.9 Blind String SQL Injection ........................................................................................... 57 3.1. 3.1.1. 3.1.2. 3.2. 3.2.1. 3.3. 3.3.1. 3.4. 3.4.1. 3.5. 3.5.1. 3.5.2. 3.5.3. 3.5.4. 3.6. 3.6.1. 3.6.2. 3.6.3. 3.7. 3.7.1. 3.7.2. 3.7.3. 3.7.4. 3.8.

Denial of Service .................................................................................................... 58 ZipBomb ............................................................................................................................ 58 Denial of Service from Multiple Logins .................................................................. 58

Insecure Communication ................................................................................... 59 Insecure Login ................................................................................................................ 59

Insecure Storage .................................................................................................... 61 Encoding Basics ............................................................................................................. 61

Malicious Execution ............................................................................................. 63 Malicious File Execution .............................................................................................. 63

Parameter Tampering ......................................................................................... 63 Bypass HTML Field Restrictions ............................................................................... 63 Exploit Hidden Fields ..................................................................................................... 64 Exploit Unchecked Email ............................................................................................ 64 Bypass Client Side JavaScript Validation ............................................................... 64

Session Management Flaws ............................................................................... 65 Hijack a Session .............................................................................................................. 65 Spoof an Authentication Cookie ............................................................................... 66 Session Fixation ............................................................................................................. 67

Web Services ........................................................................................................... 68 Create a SOAP Request ................................................................................................ 68 WSDL Scanning .............................................................................................................. 69 Web Service SQL Injection ......................................................................................... 70 Web Service SAX Injection ......................................................................................... 70

Challenge .................................................................................................................. 71

V

VI

文档名称:WebGoat 7.1课程指导

1. WebGoat简介

WebGoat是OWASP(Open Web Application Security Project)开发的用于Web漏洞演示与验证的平台。该平台包含了访问控制、AJAX安全、认证失效、缓冲区溢出、代码质量、并行性、XSS、不正确的错误控制、注入缺陷、DoS、不安全的通信、不安全的存储、恶意执行、参数篡改、会话管理缺陷和Web服务等多种常见的Web安全漏洞。

最新版下载https://github.com/WebGoat/WebGoat.git,本指南以7.1版本编写。

1.1. WebGoat安装

以WebGoat的Developers版为例进行安装,通过Git工具把WebGoat以及WebGoat-Lessons(https://github.com/WebGoat/WebGoat-Lessons.git)克隆到本地。

在命令行进入WebGoat-Lessons目录,执行mvn package,把WebGoat-Lessons打包成jar文件,然后拷贝到/WebGoat/webgoat-container/src/main/webapp/plugin_lessons/目录下。

在Eclipse或Myeclipse中导入WebGoat工程,至此,WebGoat安装完成。

1.2. WebGoat启动

在Eclipse或Myeclipse中使用Maven Build运行WebGoat,在本地浏览器输入访问地址:http://localhost:8080/WebGoat。

1

文档名称:WebGoat 7.1课程指导

输入用户名和密码后即可进入WebGoat的教学演示环境,如下图:

2. WebGoat课程

2.1. Introduction

2.1.1. How to work with WebGoat

1. 环境信息

WebGoat使用Apache Tomcat服务器,但是也可运行在任一的应用服务器上。

2. 界面说明

2

文档名称:WebGoat 7.1课程指导

? 1、WebGoat的课程分类; ? 2、显示Java源代码;

? 3、显示所选课程的通用解决办法; ? 4、显示课程目标;

? 5、显示完成课程的技术提示; ? 6、显示HTTP响应参数; ? 7、重新开始本课程; 3、解决课程问题

总是从课程计划开始,然后尝试解决课程问题,如果有必要,使用提示。如果适用,最后一个提示是解决方案文本。如果适用提示不能解决这个问题,你可以查看完整的详细解决方案。

4、读和编辑参数/Cookies

为了读和编辑参数/Cookies,你需要一个类似OWASP ZAP的本地代理去了拦截HTTP请求。更多关于ZAP的信息可以在“UsefulTools”章节找到。

5、配置新WebGoat用户

WebGoat使用spring-security.xml配置新用户

3

文档名称:WebGoat 7.1课程指导

6、增加一个新用户

增加一个用户很直接。作为例子,你可以使用guest入口。新增的用户应该和guest有同样的角色。新用户的user/password将不会显示在登录页。在/WEB-INF/spring-security.xml中增加类似如下内容:

2.1.2. Useful Tools

1、OWASP ZAP

Zed Attack Proxy简写为ZAP,是一个简单易用的渗透测试工具,是发现Web应用中的漏洞的利器,更是渗透测试爱好者的好东西。

关于ZAP的使用方法,可以参考:http://www.freebuf.com/sectool/5427.html ZAP下载地址:https://github.com/zaproxy/zaproxy/wiki/Downloads,可根据自身需求进行下载。 2、Firebug

Firebug是Firefox的一个浏览器插件,可以使用Firebug检查、修改、编辑Web页面。

可以访问https://addons.mozilla.org/zh-CN/firefox/addon/firebug/,根据提示添加Firebug到Firefox。

4

文档名称:WebGoat 7.1课程指导

2.1.3. How to Create A Legacy Lesson

2.2. General

2.2.1. HTTP Basic

? HTTP基础知识

所有的 HTTP 传输都要遵循同样的通用格式。每个客户端的请求和服务端的响应都有三个步骤:请求或响应行、一个报头部分和实体部分。 ? 课程方法

在输入框内填写姓名,然后点击按钮Go!进行提交。服务器接收请求,处理输入,然后将结果返回给用户,说明了处理HTTP请求的基础知识。

通过操纵上述按钮去查看提示,用户应该可以熟悉WebGoat的特点,显示HTTP请求参数,HTTP请求cookies和Java源代码。第一次也可以尝试使用OWASP Zed Attack Proxy。

2.3. Access Control Flaws

2.3.1. Using an Access Control Matrix

? 课程介绍

在一个基于角色的访问控制方案中,一个角色代表一组访问权限和特权。一个用户可以被赋予一个或多个角色。一个基于角色的访问控制方案通常包含2部分:角色权限管理和角色分配。一个被破坏的基于角色的访问控制方案可能允许用户执行不属于他/她所被分配的角色,或以某种方式允许特权升级到未经授权的角色的访问。 ? 课程目标

角色成员中的每一个用户只被允许访问特定资源。你的目标是探索控制这个站点的访问控制规则。只有Admin用户组拥有“Account Manager”资源的权限。

5

文档名称:WebGoat 7.1课程指导

2.3.2. Bypass a Path Based Access Control Scheme

? 课程介绍

“webgoat”用户拥有访问lesson_plans/English目录下的所有文件的权限,尝试破坏访问控制机制,访问一个不再所列目录下的资源。在选择查看一个文件后,WebGoat将报告所访问文件是否被授权。选择一个有趣的文件来尝试,获取的可能是像WEB-INF/spring-security.xml这样的文件。记住依赖于WebGoat如何启动,文件的路径会有所不同。

6

文档名称:WebGoat 7.1课程指导

? 课程方法

使用OWASP ZAP代理拦截HTTP请求,修改访问文件,查看服务器返回结果。

在上图红色框标注的地方修改为WEB-INF/spring-security.xml文件所在路径,执行完成后如下图所示:

2.3.3. LAB:Role Based Access Control

Stage1:Bypass Presentational Layer Access Control

“Tom”作为一个普通员工,利用脆弱的访问控制,在职工列表界面使用删除功能。验证Tom的简介可以被删除。用户的密码是给定的用户名的小写(如:T

7

文档名称:WebGoat 7.1课程指导

om的密码是tom)。

Stage1:Bypass Presentational Layer Access Control

8

文档名称:WebGoat 7.1课程指导

1. 执行“Delete Profile”功能,使用OWASP ZAP拦截请求,查看“Action”行为,可以看到action=DeleteProfile。

2. 使用Tom用户登录,然后使用“ViewProfile”功能,使用代理截获请求,修改action行为DeleteProfile。

Stage2:Add Business Layer Access Control

执行修复未授权访问的Delete功能。这样做,需要修改WebGoat的源代码,重复阶段1,验证访问“DeleteProfile”功能被正确的拒绝。

在Eclipse或Myeclipse中打开【WebGoat-Lessons】->【role-based-access-control】->【org.owasp.webgoat.plugin.rollbased】文件夹中对RoleBasedAccessControl.java文件进行修改,在文件的234行已经使用CODE HERE进行了注释和标注,在此增加如下代码:

// ***************CODE HERE************************* if(!isAuthorized(s, getUserId(s),requestedActionName)){ } // ***************CODE HERE************************* throw new UnauthenticatedException(); 更改完成后,使用mvn package对文件进行打包,将target/plugins/role-based-access-control-1.0.jar拷贝到/WebGoat/webgoat-container/src/main/webapp/plugin_lessons/目录下。

9

文档名称:WebGoat 7.1课程指导

然后在此界面重新执行State 1的操作,越权请求被拒绝。实验通过。如下图所示:

Stage3: Breaking Data Layer Access Control

“Tom”作为一个普通员工,利用脆弱的访问控制,去访问另一位职工的简介。验证访问。

10

文档名称:WebGoat 7.1课程指导

1. 找出员工的ID,执行“View Profile”功能,使用OWASP ZAP拦截请求,查看“employee_id”的值,可以看到employee_id=101。

2. 使用Tom用户登录,然后使用“ViewProfile”功能,使用代理截获请求,修改employee_id的值为“101”。

提交请求之后,如下图所示:

11

文档名称:WebGoat 7.1课程指导

Stage4: Add Data Layer Access Control

执行修复拒绝未授权访问数据。一旦完成,重复阶段3,验证访问另一个员工的简介被被正确的拒绝。

在Eclipse或Myeclipse中打开【WebGoat-Lessons】->【role-based-access-control】->【org.owasp.webgoat.plugin.rollbased】文件夹中对RoleBasedAccessControl.java文件进行修改,在文件的234行已经使用CODE HERE进行了注释和标注,在此增加如下代码:

// ***************CODE HERE************************* if(!isAuthorized(s, getUserId(s),requestedActionName)){ } int userId = Integer.parseInt((String) s.getRequest().getSession().getAttribute(getLessonName() + \ + RoleBasedAccessControl.USER_ID)); throw new UnauthenticatedException(); 12

文档名称:WebGoat 7.1课程指导

int employeeId = s.getParser().getIntParameter(RoleBasedAccessControl.EMPLOYEE_ID); if (!action.isAuthorizedForEmployee(s, userId, employeeId)){ } // ************************************************* throw new UnauthenticatedException(); 更改完成后,使用mvn package对文件进行打包,将target/plugins/role-based-access-control-1.0.jar拷贝到/WebGoat/webgoat-container/src/main/webapp/plugin_lessons/目录下。

然后在此界面重新执行阶段3的操作,越权请求被拒绝。实验通过。如下图所示:

13

文档名称:WebGoat 7.1课程指导

2.4. AJAX Security

2.4.1. LAB:Client Side Filtering

阶段1:

你作为Moe Stooge,Goat Hills Financial的CSO登录。除CEO Neville Bartholomew之外,你可以访问每个人在公司中的信息。或者至少你不能访问CEO的信息。为这次练习,检查页面内容,看看你能发现什么额外的信息。

客户端过滤,有些时候服务器返回了很多条信息,只挑选了其中少数进行显示,可以在返回的html源码中看到全部的信息。

14

文档名称:WebGoat 7.1课程指导

1、 选中名字附近点击“查看元素”;

2、 在源码中查看id=\的table;

3、 可以发现隐藏的员工信息,可以找到Neville Bartholomew的ID为112,Salary为450000。

4、 在页面源码中修改下拉列表中的任一value值为112,就可以查看Neville Bartholomew的信息。

阶段2:现在,修复此问题。修改服务器仅返回被Moe Stooge允许看到的结果。

修改/WebGoat/webgoat-container/src/main/webapp/plugin_ehttps://www.bwwdw.com/plus/xtracted/plugin/Cli

entSideFiltering/jsp/clientSideFiltering.jsp,将

StringBuffer sb = new StringBuffer(); sb.append(\); sb.append(\); sb.append(\); sb.append(\); sb.append(\); 15

文档名称:WebGoat 7.1课程指导

String ehttps://www.bwwdw.com/plus/xpression = sb.toString(); 修改为

StringBuffer sb = new StringBuffer(); sb.append(\\sb.append(\\sb.append(\\sb.append(\\sb.append(\\ String ehttps://www.bwwdw.com/plus/xpression = sb.toString(); 2.4.2. LAB:DOM-Based cross-site scripting

DOM-Based XSS漏洞原理:

文档对象模型( DOM)从安全的角度提出了一个有趣的问题。它允许动态修改网页内容,但是这可以被攻击者用来进行恶意代码注入攻击。客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而是从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生此漏洞。

阶段1:对于这个练习,你的任务是使用/images/logos/owasp.jpg图片污损网站。

在文本框中输入“

16

文档名称:WebGoat 7.1课程指导

阶段2:现在,尝试使用image标签创建一个JavaScript alert

在文本框输入“”,点击提交,stage 2完成,如下图所示:

阶段3:下一步,尝试使用IFRAME标签创建一个JavaScript alert

17

文档名称:WebGoat 7.1课程指导

在文本框输入“