WebGoat 靶场通关笔记 Server-side Request Forgery
Server-side Request ForgeryCross-Site Request Forgeries3从外部源触发以下表单,响应将包括一个“flag”。
点击提交按钮。
显示错误。提示请求来自原始主机,修改Host即可。此处修改Host的目的是改变请求服务器来源,实现模拟跨站请求的目的。当然也可以使用bp的csrf poc功能来实现。
直接修改请求Host,拿到flag,提交,搞定。
4以他人身份发布评论。
页面模拟了一个评论页面,您需要以当前登录的用户在其他地方发起提交评论。
先自己发一条评论。
修改请求包的Host,伪造成其他来源即可。
7将网页提供的JSON消息,从其他来源通过POST发送到目标服务器。
根据页面提供的参考博客,构造一个CSRF攻击的HTML文件,用浏览器打开文件会自动执行发送POST请求提交表单操作。
1234<form method="POST" action="http://www.webgoat.local:8080/WebGoat/csrf/feedback/message" con ...
WebGoat 靶场通关笔记 Security Misconfiguration
Security MisconfigurationXXE4添加一条评论,当提交表单时,使用评论字段执行XXE注入。需要列出文件系统的根目录。
先随便发一条评论,看看请求包。
从上面可以确定请求数据的xml格式,然后构造XXE如下:
12345678# 需要通过bp等工具发送请求<?xml version="1.0"?><!DOCTYPE a [ <!ENTITY b SYSTEM "file:///">]><comment> <text>&b;</text></comment>
7在现代REST框架中,服务器可能能够接受您作为开发人员没有考虑过的数据格式。因此,这可能会导致JSON端点容易受到XXE攻击。
同样的练习,但尝试执行与第一次作业中相同的XML注入。
先随便发一条正常的评论,查看返回的响应信息。
响应表明,该接口需要xml数据,而当前传的是json。
所以我们直接用上一题的xxe来试试。记得修改:Content-Type: appl ...
WebGoat 靶场通关笔记 Security Logging Failures
Security Logging FailuresLogging Security2这个挑战的目标是让它看起来像用户“admin”登录成功。下面的红色区域显示将在web服务器的日志文件中记录的内容。想超越吗?尝试通过向日志文件中添加脚本来提升您的攻击。
用户名 admin,密码随便填,直接过了,不明所以。
向日志文件中添加脚本?源码审计吧。看源码的意思是替换请求中用户名字段的换行符然后渲染成html页面的换行。
拦截请求,修改数据。%0a是换行符 \n的URL编码。
1%0aLogin succeeded for username:admin
实现输出两行登录日志,且伪装出admin登录成功的效果。
4某些服务器在服务器启动时提供管理员凭据。此挑战的目标是在 WebGoat 服务器的应用程序日志中找到以管理员用户身份登录的密钥。
啥都不填,直接点提交。
可以看到提示用户名是 Admin。
但是密码搞不到啊。源码审计。他喵的随机UUID,base64编码,然后在启动日志中输出了。
base64解码结果:2d1e03f2-7e8e-4f5e-8c15-731bc258ba6b,登 ...
WebGoat 靶场通关笔记 ldentity & Auth Failure
ldentity & Auth FailureAuthentication Bypasses2绕过安全问题验证。
首先,随便填,提交,查看正常情况下的请求和响应数据。
参考当前页面上的案例,删除请求参数,无效。
看到网页有隐藏代码,取消隐藏,试一下提交,也不行。
实在不知道了,看提示:改参数名。这都行?
Insecure Login2单击“登录”按钮会发送包含一个用户命名的的登录请求。然后,将这个请求中的用户名密码填入下面相应的输入框,然后提交。
JWT tokens4解码JWT令牌,找到用户名。
可以使用WebWolf。
6尝试更改您收到的JWT令牌,并通过修改令牌成为管理员,然后以管理员身份重置投票。
默认是Guest用户,返回的响应头中access_token是空的,那我们切换一下其他的用户试试。
切换为Tom后发现,返回了access_token。点击重置按钮,提示没权限。
解码JWT看一下。
直接把 "admin" : "false"改成 "admin" : "true& ...
WebGoat 靶场通关笔记 Introduction
WebGoat 通关(基于WebGoat v2023.8)页面介绍:
http://127.0.0.1:8080/WebGoat/ :待宰的羔羊,即存在漏洞的网页,是测试的目标。
http://127.0.0.1:9090/WebWolf/ :灰太狼想吃羊,即用来接收返回的攻击信息的网页,是测试辅助工具。
访问 http://www.webgoat.local:8080/WebGoat/ 后,会出现登录界面。
先去注册个账号,用于后续的测试。
这里注册的账号同样可以登录 http://www.webwolf.local:9090/WebWolf/ 。
登录后即可开始闯关。
注意:每个关卡中,黑色的标签表示是相关知识介绍,红色的标签代表有需要进行测试的点。通关成功的前提是红色的标签全部变成绿色。
下面只介绍关卡中存在测试点的页面。
IntroductionWebWolf3测试邮箱功能。
登录WebWolf,查看Mailbox,将邮箱地址粘到WebGoat页面的邮件地址框,点击发邮件。
去WebWolf,刷新Mailbox,点开收到的邮件,将unique code粘到WebGoat页 ...
WebGoat 靶场通关笔记 Injection
InjectionSQL Injection (intro)2SQL查询语句 select。
1select department from employees where userid=96134;
3sql修改语句 update。
1update employees set department='Sales' where userid=89762;
4sql修改数据库,修改表结构 alter。
1alter table employees add column phone varchar(20);
5sql权限控制 grant。将表grant_rights的权限授予unauthorized_user。
1grant select, insert, update, delete on grant_rights to unauthorized_user;
9字符型注入。闭合单引号,实现注入,从而查询到数据库表的所有记录。
10数值型注入。不需要闭合引号,直接注入,从而查询到数据库表的所有记录。
注意:SQL语言认为 and 运算符的运算级别要高于 ...
WebGoat 靶场通关笔记 General
GeneralHTTP Basics2了解HTTP基本原理。
随便输入,Go。
3了解HTTP请求类型:POST或GET。
F12打开浏览器的开发者工具,搜索magic,找到相应数值输入,Go。
HTTP Proxies5学习拦截请求,并修改数据包。
我此处以Yakit演示。
题目要求:
123456789当您的请求被拦截(到达断点)时,请按如下方式进行修改:· 将方法更改为GET· 添加请求头“x-request-intercepted:true”· 删除请求正文,改为将“changeMe”作为查询字符串参数发送,并将值设置为“Requests are tampered easily”(不带引号)· 然后(点击播放按钮)继续请求。
启动MITM,进入手动劫持模式,点击网页Submit,抓取到数据包。
按照要求修改数据包,然后发送修改后的请求即可。
Developer Tools4F12 开发者工具,在控制台执行命令:
1webgoat.customjs.phoneHome()
6点击Go。
F12 开发者工具,在元素窗口Ctrl+F搜索networkNum,粘贴到输入框 ...
WebGoat 靶场通关笔记 Cryptographic Failures
Cryptographic FailuresCrypto Basics2base64加密解密,没啥说的。
3 题目给出的密文 {xor}Oz4rPj0+LDovPiwsKDAtOw== 使用了IBM WebSphere Application Server的 XOR编码 加密。需要拿到默认加密的密钥来解密。
Google一下,找到了XOR编码的加密解密脚本。
上面的代码有点小问题,修复后的代码如下:
1234567891011121314151617181920212223242526272829303132333435363738394041# Decode and Encode WebSphere XOR Password# Base code from: https://gist.github.com/metall0id/bb3e9bab2b7caee90cb7import base64import argparseparser = argparse.ArgumentParser(description="WebSphere XOR Passw ...
WebGoat 靶场通关笔记 Cross Site Scripting
Cross Site Scripting2同一URL在多个选项卡之间共享cookie。
体验新开一个相同URL的选项卡页面,在控制台输出cookie。
其实,直接点击复选按钮,提交就过关,这里只是为了让你了解相关知识。
7反射型XSS。
确定哪个字段容易受到XSS的影响。可以用 alert() 或者 console.log() 测试。
首先尝试这两个可以直接输入的输入框,发现不行。
那就看看发送的请求数据包,然后直接改请求参数。发现上面的四个价格参数是要转为数值类型的,没法xss。
那么还是要搞下面的这两个可控参数了。直接提交正常的参数,发现页面回显了 credit card。那么这个参数可能存在xss,现在只测试 credit card 这个值。
credit card 这个参数确实存在反射型xss。
刚才同时测试下面两个输入框的时候显示做了xss安全检查,其实只做了第二个参数 access code的检查。
所以说,别急着上来就注入,应该先看看正常请求有什么响应。
10DOM型XSS。
基于DOM的XSS通常可以通过在客户端代码中(HTML或JavaScript)通过查 ...
WebGoat 靶场通关笔记 Client side
Client sideBypass front-end restrictions2在大多数浏览器中,客户端对网页的HTML部分具有完全或几乎完全的控制权。
需要发送一个可以绕过页面上所有五个字段限制的请求。
那直接改开发者工具改前端源码吧。
修改option的value
修改radio的value
为checkbox增加一个其他value
修改input的maxlength属性值
移除input的readonly属性
3前端通常有一些验证机制可以防止用户将更改后的字段值发送到服务器。大多数流行的浏览器(如Chrome)都不允许在运行时编辑脚本。但是可以用其他方式规避前端验证。
修改数据,发送一个能使得所有字段都不匹配上方正则表达式的请求。
直接改正常请求的数据,用工具重发了。
注意,页面有个隐藏字段 error也要改。
Client side filtering2向客户端发送的信息过多,会造成严重的访问控制问题。
您以Moe Stooge的身份登录,Goat Hills Financial的CSO。除了首席执行官内维尔·巴塞洛缪,你可以访问公司信息中的每一个人。检查页面的内容, ...