WebGoat路径遍历

WebGoat

介绍

这是一个学习靶场,主要针对Java web安全进行一定的练习。

项目下载

https://github.com/WebGoat/WebGoat/releases/tag/v8.2.2

由于我现在常用的java版本比较低所以就用旧项目的jar包了。

项目运行

在jar包所在路径下打开终端,并输入下面代码运行。

java -jar .\webgoat-server-8.2.2.jar

这里使用默认端口8080,如果需要更改端口,再在命令中指定端口即可。

于是得到网页入口页面为:http://localhost:8080/WebGoat/

注册一个账户密码登录即可。

路径遍历

路径遍历是比较常见web漏洞,其危害也比较严重。路径遍历指的是在没有允许的情况下,攻击者可以通过web,来进行访问和修改未授权路径中的文件。

举例:在网页中访问文件,一般会给出一个这样的地址,http://example.com/file=report.pdf,这个地址后面这个file叫做参数report.pdf叫做参数值。攻击者可以通过访问http://example.com/file=../../../../../etc/passwd来窃取服务器的密码信息。这里../的作用是返回到父文件目录,经过多次操作就可以返回到服务器的根目录下。

WebGoat-Path traversal(路径遍历)

任务-页面2

这个题目内容是一个更新用户信息的界面。要求是将头像存放在C:\Users\erhui/.webgoat-8.2.2/PathTraversal/lihuan目录下。

正常更新头像发现,图片被保存在C:\Users\erhui.webgoat-8.2.2\PathTraversal\lihuan\test下。我们通过burpsuite抓下包来看看。

内容如下:

POST /WebGoat/PathTraversal/profile-upload HTTP/1.1
Host: localhost:8080
Content-Length: 734901
sec-ch-ua: "Not/A)Brand";v="8", "Chromium";v="126"
Accept-Language: zh-CN
sec-ch-ua-mobile: ?0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.6478.57 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryB7Mas0qi8RSmENKz
Accept: */*
X-Requested-With: XMLHttpRequest
sec-ch-ua-platform: "Windows"
Origin: http://localhost:8080
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: http://localhost:8080/WebGoat/start.mvc
Accept-Encoding: gzip, deflate, br
Cookie: JSESSIONID=LWdZ_R6vggYP29PFzL5aJ9-kUTw8JPXzTtyxJudi
Connection: keep-alive

------WebKitFormBoundaryB7Mas0qi8RSmENKz
Content-Disposition: form-data; name="uploadedFile"; filename="61d84d3057024e6192faba2d3260dbbe.jpg"
Content-Type: image/jpeg
中间一大串图片数据


------WebKitFormBoundary8CkxSgV5BOJoI45m
Content-Disposition: form-data; name="fullName"

test
------WebKitFormBoundary8CkxSgV5BOJoI45m
Content-Disposition: form-data; name="email"

test@test.com
------WebKitFormBoundary8CkxSgV5BOJoI45m
Content-Disposition: form-data; name="password"

test
------WebKitFormBoundary8CkxSgV5BOJoI45m--

请求体中出现了图片信息,这里fullName参数下面的值改成../test即可完成任务。

任务-页面3

这次过滤了含有../字符串的内容,只需要将fullName参数下面的参数值改成…/./test(双写),即可。

任务-页面4

这次通过查看源代码,发现使用的originalFilename

public AttackResult uploadFileHandler(@RequestParam("uploadedFileRemoveUserInput") MultipartFile file) {
    return super.execute(file, file.getOriginalFilename());
}

并且对参数没有做任何处理,所以这里只需要在filename=”61d84d3057024e6192faba2d3260dbbe.jpg”这里加上的名字前加上../即可。

任务-页面5

这次目标是获取一个文件名叫做“path-traversal-secret”的jpg图片。

点击按钮show random cat picture发现图片会随机变化,f12打开控制台,查看network,发现存在请求`http://localhost:8080/WebGoat/PathTraversal/random-picture`。访问发现是个错误图片,我们在继续看一下请求头。发现

Location:/PathTraversal/random-picture?id=8.jpg

HTTP 重定向是一种通过服务器响应将客户端请求引导到另一个 URL 的机制。它通常通过 HTTP 状态码和 Location 字段实现,广泛应用于页面跳转、URL 优化和安全性提升等场景。

我们拼接一下,访问一下`http://localhost:8080/WebGoat/PathTraversal/random-picture?id=8.jpg`发现显示内容为

C:\Users\erhui\.webgoat-8.2.2\PathTraversal\cats\1.jpg,C:\Users\erhui\.webgoat-8.2.2\PathTraversal\cats\10.jpg,C:\Users\erhui\.webgoat-8.2.2\PathTraversal\cats\2.jpg,C:\Users\erhui\.webgoat-8.2.2\PathTraversal\cats\3.jpg,C:\Users\erhui\.webgoat-8.2.2\PathTraversal\cats\4.jpg,C:\Users\erhui\.webgoat-8.2.2\PathTraversal\cats\5.jpg,C:\Users\erhui\.webgoat-8.2.2\PathTraversal\cats\6.jpg,C:\Users\erhui\.webgoat-8.2.2\PathTraversal\cats\7.jpg,C:\Users\erhui\.webgoat-8.2.2\PathTraversal\cats\8.jpg,C:\Users\erhui\.webgoat-8.2.2\PathTraversal\cats\9.jpg

发现出现上面路径。应该是将这路径下面的所有图片文件的路径都显示了出来。我们尝试一下../发现提示参数值非法。因为这个是get请求,我们很容易就能想到,使用一下url编码。将../编码后,访问`http://localhost:8080/WebGoat/PathTraversal/random-picture?id=%2E%2E%2F8.jgp`

发现访问显示上一级目录的各文件地址。

C:\Users\erhui\.webgoat-8.2.2\PathTraversal\cats\..\cats,C:\Users\erhui\.webgoat-8.2.2\PathTraversal\cats\..\lihuan,C:\Users\erhui\.webgoat-8.2.2\PathTraversal\cats\..\test,C:\Users\erhui\.webgoat-8.2.2\PathTraversal\cats\..\鐏劙-copy.png

下面访问`http://localhost:8080/WebGoat/PathTraversal/random-picture?id=%2E%2E%2F%2E%2E%2F8.jgp`,显示结果如下:

C:\Users\erhui\.webgoat-8.2.2\PathTraversal\cats\..\..\ClientSideFiltering,C:\Users\erhui\.webgoat-8.2.2\PathTraversal\cats\..\..\data,C:\Users\erhui\.webgoat-8.2.2\PathTraversal\cats\..\..\path-traversal-secret.jpg,C:\Users\erhui\.webgoat-8.2.2\PathTraversal\cats\..\..\PathTraversal,C:\Users\erhui\.webgoat-8.2.2\PathTraversal\cats\..\..\test,C:\Users\erhui\.webgoat-8.2.2\PathTraversal\cats\..\..\XXE

发现path-traversal-secret.jpg

访问http://localhost:8080/WebGoat/PathTraversal/random-picture?id=%2E%2E%2F%2E%2E%2Fpath-traversal-secret注意这里不能带.jpg后缀,会报错。发现图片是无法显示的,我们抓包看一下。

HTTP/1.1 200 OK
Connection: keep-alive
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
Content-Type: image/jpeg
Content-Length: 63
Date: Thu, 04 Sep 2025 07:43:19 GMT

You found it submit the SHA-512 hash of your username as answer

结果是个字符串,当然无法显示为图片了。

给出提示,将自己的用户名进行sha-512哈希加密,即可得出答案。

任务-页面7

暂时不知道如何在windows环境下完成此问题。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
下一篇