靶场webgoat(白盒测试)
一.Javaweb 代码分析-目录遍历安全问题
1.看题目说:
上传文件时的路径遍历
在本任务中,目标是覆盖文件系统中的特定文件。当然,WebGoat很关心用户,因此你需要将你的文件上传到通常上传位置之外的以下位置。

2随便上传一个文件随后去看看他存放在哪个位置

Profile has been updated, your image is available at: C:\Users\Lenovo\.webgoat-2025.3\PathTraversal\lllxxy\test"
3.打开这个位置看看:

"C:\Users\Lenovo\.webgoat-2025.3\PathTraversal\lllxxy\test"
4.抓包看看数据


------WebKitFormBoundaryXgY6R6DVqsoAlhD0
Content-Disposition: form-data; name="fullName"
test
------WebKitFormBoundaryXgY6R6DVqsoAlhD0
Content-Disposition: form-data; name="email"
------WebKitFormBoundaryXgY6R6DVqsoAlhD0
Content-Disposition: form-data; name="password"
发现这个
Content-Disposition: form-data; name="fullName"
test就是对应着我的一个文件的名字,如果我修改这个文件的名字会有什么效果呢


发现都变了
5.这个是路径遍历那么我用../这个看看我是否能把文件上传到上一级的目录上面去(如果有限制那么采用..././尝试)


Congratulations. You have successfully completed the assignment.成功
抓包对应的数据

------WebKitFormBoundarytQMBIBgcnWvvr6x7
Content-Disposition: form-data; name="fullName"
../lllxxyy
------WebKitFormBoundarytQMBIBgcnWvvr6x7
Content-Disposition: form-data; name="email"
------WebKitFormBoundarytQMBIBgcnWvvr6x7
Content-Disposition: form-data; name="password"
test
------WebKitFormBoundarytQMBIBgcnWvvr6x7--
二.第三关
产生了../这个的限制
用..././或者....//来尝试

Congratulations. You have successfully completed the assignment成功

三.Logging Security
让我们试试
-
某些服务器在启动时会提供管理员凭据。
-
本挑战的目标是在WebGoat服务器的应用程序日志中找到秘密,以管理员用户身份登录。
-
请注意,我们试图"保护"它。你能解密吗?

1.先去看看源代码看看有什么提示没有
2.再去看看network能够得到(前端)
3.再去抓包试试也能得到
得到密码和账号

username=CaptainJack&password=BlackPearl

四.

第三关
观察差异与行为
AppSec进攻方的一个一贯原则是从原始响应中查看与可见内容之间的差异。换句话说(正如您可能已在客户端过滤课程中注意到的那样),原始响应中往往包含一些数据,这些数据并不会显示在屏幕上或页面上。查看下方的个人资料,并注意其中的差异。

输入1然后抓包

让我们You did not list two attributes, comma delimited意思是您没有列出两个用逗号分隔的属性。
说明我们要列出两个用逗号分隔的属性。才能过关
目前知道name,color,size
然后抓包检查一下看看还有哪些属性发现还有role,userid然后输入role,userid解决
{
"role" : 3,
"color" : "yellow",
"size" : "small",
"name" : "Tom Cat",
"userId" : "2342384"
}

第四关
猜测与预测模式
以另一种方式查看您的个人资料
到目前为止,我们所使用的应用程序在个人资料方面似乎遵循了RESTful模式。许多应用都设有角色,其中高权限用户可以访问其他用户的コンテンツ。在这种情况下,仅使用 /profile 将无法正常工作,因为当前用户的会话/认证数据并不能告诉我们他们想查看哪个用户的个人资料。那么,您认为采用直接对象引用显式查看自己个人资料的合理模式是什么?
请输入指向该 URL 的备用路径,以查看您的个人资料。请以"WebGoat"开头(即忽略"http://localhost:8080/")

在Stage 3中知道了tom的userId是2342384。
{
"role" : 3,
"color" : "yellow",
"size" : "small",
"name" : "Tom Cat",
"userId" : "2342384"
}
输入这个完整的路径就可以通过WebGoat/IDOR/profile/2342384

五.csrf

题目说:在登录状态下,从外部源触发下方的表单。响应中将包含一个'标志'(一个数值)。
说明应该修改指向最简单的方法就是修改请求的refer,refer表示这个请求从哪个网站来的。
http://127.0.0.1:8080/WebGoat/csrf/basic-get-flag

得到: 25348

第四关也是一样的修改refer
直接到第七关
CSRF与内容类型
在上一节中,我们了解到依赖内容类型并不能防范CSRF攻击。在本节中,我们将探讨另一种针对未采取CSRF防护措施的API实施CSRF攻击的方法。
在本次作业中,你需要将以下JSON消息POST到我们的端点:
CodeRay
<span style="color:#333333"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#efefef"><code>POST /csrf/feedback/message HTTP/1.1
{
"name" : "WebGoat",
"email" : "webgoat@webgoat.org",
"content" : "WebGoat is the best!!"
}</code></span></span></span></span>


也可以自己创建一个html文件上传访问
最后也能得到flag