WebGoat——代码质量、并发、拒绝服务、不当的错误处理

一、Code Quality 代码质量

1.题目:
Below is an example of a forms based authentication form. Look for clues to help you log in.
以下是基于认证登录表单中的一个代表,尝试着寻找蛛丝马迹以帮助你的登录。

2.课程目标:
在这里插入图片描述
课程标题:如何从html源码中发现线索
课程主题:开发人员因将TODO,Code Broken,Hack等语句留在源代码中而臭名昭着。 查看源代码,来寻找注释中表示密码、后门、或者其他不能正常工作的部分。
课程目标:用户应该能够绕过认证检查。

3.操作步骤:

这一课程主要为了强调开发人员在代表撰写中存在的代码质量不高的问题,常会出现程序员账号密码、后门等信息留在源码注释中的现象,因此本课程可以通过查看网页源代码来解决。

(1)打开火狐浏览器的web开发者选项,查看网页源代码。
(2)找到代码中的如下注释内容:
在这里插入图片描述
(3)于是,对应的账号输入:admin,密码输入:adminpw
在这里插入图片描述
二、Concurrency 并发——Thread Safety Problems 线程安全问题

1.题目:
The user should be able to exploit the concurrency error in this web application and view login information for another user that is attempting the same function at the same time. This will require the use of two browsers. Valid user names are ‘jeff’ and ‘dave’.
用户应该能够利用此Web应用程序中的并发错误,并查看同时尝试相同功能的另一个用户的登录信息。 这将需要使用两个浏览器。 有效的用户名是’jeff’和’dave’。

2.课程计划:
在这里插入图片描述
课程标题:如何利用线程安全问题
课程主题:Web应用能同时处理多个HTTP请求。开发者们经常使用的变量是非线程安全的。线程安全意味着当多个线程同时使用时,对象或类的字段始终保持有效状态。通常可以通过在同一时间加载与另一个用户相同的页面来利用并发错误。因为所有线程共享相同的方法区域,并且方法区域是存储所有类变量的位置,所以多个线程可以尝试同时使用相同的类变量。
课程目标:用户应该能够利用此Web应用程序中的并发错误,并查看同时尝试相同功能的另一个用户的登录信息。 这将需要使用两个浏览器。

3.操作步骤:

线程安全问题通常可以通过在同一时间加载与另一个用户相同的页面来利用并发错误。。因此,在本实验中,可以尝试着同时向webapp发送请求信息。
(1)打开新的浏览器页面,并在新的浏览器中输入与当前页面相同的网址。
(2)放缩不同浏览器的窗口大小,使得两个浏览器页面处于同一画面中。
(3)在一个窗口中输入用户名jeff,另一个窗口中输入用户名dave,以最快的速度点击submit按钮,查看服务器端返的数据结果。
在这里插入图片描述如上图所示,左侧的浏览器中输入的是jeff的用户名,得到的却是dave的用户信息。此时,已成功利用了Web应用程序中的并发错误,课程完成。

此漏洞的根本原因是Java代码使用静态变量作为用户名。 提交两次时,将使用相同的线程,因此将使用包含第一个请求的用户名的相同静态变量。
private static String currentUser;

三、Concurrency 并发——Shopping Cart Concurrency Flaw购物车并发缺陷

1.题目:
For this exercise, your mission is to exploit the concurrency issue which will allow you to purchase merchandise for a lower price.
在这一实验中,你的目标是利用好并发问题,这一问题能帮助你以更低的价格采购商品。

2.课程计划
在这里插入图片描述
课程计划标题:购物车并发缺陷
课程主题:Web应用能同时处理多个HTTP请求。开发者们经常使用的变量是非线程安全的。线程安全意味着当多个线程同时使用时,对象或类的字段始终保持有效状态。通常可以通过在同一时间加载与另一个用户相同的页面来利用并发错误。因为所有线程共享相同的方法区域,并且方法区域是存储所有类变量的位置,所以多个线程可以尝试同时使用相同的类变量。
课程目标:在这一实验中,你的目标是利用好并发问题,这一问题能帮助你以更低的价格采购商品。

3.操作步骤:

(1)打开一个新的浏览器,地址输入与当前的地址相同。
(2)在原来的浏览器中选择一个价格较低的商品,新的浏览器中选择一个较高的商品。
在这里插入图片描述(3)先在左侧的浏览器中点击confirm按钮,在右侧的浏览器中点击Update Cart按钮。
在这里插入图片描述此时,已经覆盖了价格变量。

(4)在左侧的浏览器中点击confirm按钮
在这里插入图片描述(5)点击之后,界面效果如图所示。
在这里插入图片描述

四、Denial of Service——Denial of Service from Multiple Logins 多个登录时拒绝服务

1.题目:
Denial of service attacks are a major issue in web applications. If the end user cannot conduct business or perform the service offered by the web application, then both time and money is wasted.
拒绝服务攻击是Web应用程序中的主要问题。 如果最终用户无法开展业务或执行Web应用程序提供的服务,则是对时间和金钱的浪费。
This site allows a user to login multiple times. This site has a database connection pool that allows 2 connections. You must obtain a list of valid users and create a total of 3 logins.
该站点允许用户多次登录。 此站点有一个允许2个连接的数据库连接池。 您必须获取有效用户列表并创建总共3次登录。

2.课程目标:
在这里插入图片描述
课程标题:多个登录时拒绝服务。
课程主题:拒绝服务攻击是Web应用程序中的主要问题。 如果最终用户无法开展业务或执行Web应用程序提供的服务,则是对时间和金钱的浪费。
课程目标:该站点允许用户多次登录。 此站点有一个允许2个连接的数据库连接池。 您必须获取有效用户列表并创建总共3次登录。

3.操作步骤:

(1)尝试着使用SQL注入攻击在这里插入图片描述
在用户名处输入goober,密码处输入don_care’or’1’='1,即执行语句
SELECT * FROM user_system_data WHERE user_name = ‘goober’ and password = ‘dont_care’ or ‘1’ = ‘1’
点击Login进入下一步。

(2)界面效果如下图
在这里插入图片描述
此时,已经获取到了一系列合法的用户。创建三次登录,分别使用101,102,103号用户的账号密码进行登录。
(3)效果如图:
在这里插入图片描述
五、Improper Error Handling 错误处理不当——Fail Open Authentication Scheme失败的开放认证方案
1.题目:
Due to an error handling problem in the authentication mechanism, it is possible to authenticate as the ‘webgoat’ user without entering a password. Try to login as the webgoat user without specifying a password.
由于身份认证机制中的错误处理问题,可以在不输入密码的情况下为’webgoat’用户进行身份验证。尝试以webgoat用户身份登录而不指定密码。

2.课程目标:
在这里插入图片描述
课程标题:如何绕过失败的开放认证
课程主题:本课程介绍了解有关身份验证的“失效打开”条件的基础知识。 安全术语——“失败打开”,描述了验证机制的行为。 这是在验证方法期间发生错误(即意外异常),导致该方法评估为真。 这在登录时尤其危险。
课程目标:用户应当能绕过认证检查。

3.操作步骤:
(1)在用户名中输入webgoat,利用Burpsuite进行抓包。
(2)找到其中的password,删除&password=,点击forward。
在这里插入图片描述(3)页面效果如下图
在这里插入图片描述此时,绕过了认证检查,并成功登录了用户“webgoat”!

猜你喜欢

转载自blog.csdn.net/lay_loge/article/details/89531924
今日推荐