JAVA安全-目录遍历访问控制XSS等安全

靶场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"

test@test.com

------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"

test@test.com

------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的userId2342384

复制代码
{
  "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

相关推荐
leobertlan2 小时前
2025年终总结
前端·后端·程序员
子兮曰3 小时前
OpenClaw架构揭秘:178k stars的个人AI助手如何用Gateway模式统一控制12+通讯频道
前端·javascript·github
百锦再3 小时前
Reactive编程入门:Project Reactor 深度指南
前端·javascript·python·react.js·django·前端框架·reactjs
莲华君3 小时前
React快速上手:从零到项目实战
前端·reactjs教程
百锦再3 小时前
React编程高级主题:测试代码
android·前端·javascript·react.js·前端框架·reactjs
易安说AI4 小时前
Ralph Loop 让Claude无止尽干活的牛马...
前端·后端
失忆爆表症5 小时前
05_UI 组件库集成指南:Shadcn/ui + Tailwind CSS v4
前端·css·ui
小迷糊的学习记录5 小时前
Vuex 与 pinia
前端·javascript·vue.js
发现一只大呆瓜6 小时前
前端性能优化:图片懒加载的三种手写方案
前端·javascript·面试
不爱吃糖的程序媛6 小时前
Flutter 与 OpenHarmony 通信:Flutter Channel 使用指南
前端·javascript·flutter