红明谷2023 WEB
开赛时间对社畜来说实在是太不友好了,趁着中午饭空摸鱼做了几道。
点击签到
按照hint “题目内容:每一次点击都是为了让你更接近flag!” 去点击网页按钮,待所有字符输出完毕后得到flag。
WEB
0x1 Dreamer
题目是一个CMS框架(v4.0版本),该版本存在“后台附件管理处存在任意文件下载”漏洞,题目hint给了flag路径,则通过该漏洞可以下载得到flag文件。
0、漏洞分析
题目给了源码,后台的附件功能src/main/java/cc/iteachyou/cms/controller/admin/AttachmentController.java
74行,上传附件时未对附件做任何处理。

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

1、登录后台-附件管理
根据题目给的源码,README.md给出了后台管理员账号:wangjn:123456。
找到“附件管理功能”,上传任意附件。

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


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


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返回的是文件绝对路径,将路径中包含“.”或“..”等当前路径及上层路径表示法,会从路径名中删除“.”和“..”使用真实路径代替,即存在路径穿越问题。

2) 漏洞利用
src\main\resources\db\dreamer-cms\templates
复制default_v2
目录修改成default_v3
,把v3的theme.json
其中的themePath
值修改成../../../../../../../../../../../../../../
。打包default_v3
成default_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
,造成路径穿越。

2) 漏洞利用-写定时任务
但是服务器没有开定时任务,利用失败。