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

相关推荐
Apifox18 小时前
Apifox CLI + Claude Skills:将接口自动化测试融入研发工作流
前端·后端·测试
程序员Agions18 小时前
别再只会 console.log 了!这 15 个 Console 调试技巧,让你的 Debug 效率翻倍
前端·javascript
我的div丢了肿么办18 小时前
vue使用h函数封装dialog组件,以命令的形式使用dialog组件
前端·javascript·vue.js
UIUV18 小时前
Git 提交规范与全栈AI驱动开发实战:从基础到高级应用
前端·javascript·后端
NEXT0618 小时前
那个写 width: 33.33% 的前端,终于被 flex: 1 拯救了
前端·css
NEXT0619 小时前
前端即导演:用纯 CSS3 原力复刻《星球大战》经典开场
前端·css
FreeBuf_19 小时前
沙虫病毒与供应链安全:软件供应链成为网络安全的阿喀琉斯之踵
安全·web安全
智驱力人工智能19 小时前
守护矿山动脉 矿山皮带跑偏AI识别系统的工程化实践与价值 皮带偏离检测 皮带状态异常检测 多模态皮带偏离监测系统
大数据·人工智能·opencv·算法·安全·yolo·边缘计算