红明谷2023 WEB

开赛时间对社畜来说实在是太不友好了,趁着中午饭空摸鱼做了几道。

点击签到

按照hint “题目内容:每一次点击都是为了让你更接近flag!” 去点击网页按钮,待所有字符输出完毕后得到flag。

WEB

0x1 Dreamer

题目是一个CMS框架(v4.0版本),该版本存在“后台附件管理处存在任意文件下载”漏洞,题目hint给了flag路径,则通过该漏洞可以下载得到flag文件。

0、漏洞分析

题目给了源码,后台的附件功能src/main/java/cc/iteachyou/cms/controller/admin/AttachmentController.java74行,上传附件时未对附件做任何处理。

image-20230419152819790

该文件115行,下载时访问文件路径直接进行了路径拼接,因此产生了漏洞。

image-20230419152627781

1、登录后台-附件管理

根据题目给的源码,README.md给出了后台管理员账号:wangjn:123456。

找到“附件管理功能”,上传任意附件。

image-20230419151628565

2、修改上传文件路径

选择附件后,在点击“确认”按钮前进行抓包,修改filePath为flag路径,放包。

image-20230419151916555 image-20230419152049283

3、下载文件

下载新上传的文件,得到flag。

image-20230419152156759 image-20230419152227500

0x2 Dreamer_revenge

因为题目代码同Dreamer,漏洞一样,但是题目没有给flag位置,应该需要getshell找到flag位置。

1、后台模板管理任意编辑导致路径穿越

1) 漏洞分析

src/main/java/cc/iteachyou/cms/controller/admin/TemplateController.java第161行,利用templateFile.getCanonicalPath().startsWith(themeDir.getCanonicalPath())判断文件权限,getCanonicalPath返回的是文件绝对路径,将路径中包含“.”或“..”等当前路径及上层路径表示法,会从路径名中删除“.”和“..”使用真实路径代替,即存在路径穿越问题。

image-20230423114014067

2) 漏洞利用

src\main\resources\db\dreamer-cms\templates复制default_v2目录修改成default_v3,把v3的theme.json其中的themePath值修改成../../../../../../../../../../../../../../。打包default_v3default_v3.zip,到后台风格管理处上传zip文件并启用主题,再到模板管理处就可以看到目录下的文件了。

3) 找flag文件

因为没有flag路径,只能一个文件一个文件打开查找flag。

(由于时间原因,没有找完所有的文件,而且如果flag在隐藏文件中也无法找到,同时这个办法很笨,服务器上文件太多了。

flag在访问环境变量/proc/1/environ

2、后台压缩校验不正确导致Getshell

1) 漏洞分析

src/main/java/cc/iteachyou/cms/utils/ZipUtils.java将*换成/,如果文件构造路径..*..*..*..*..*..*..*..*..*etc/passwd经过replace得到../../../../../../../../../etc/passwd,造成路径穿越。

image-20230423115304098

2) 漏洞利用-写定时任务

但是服务器没有开定时任务,利用失败。