前言

简单记一下在前段时间的 GKCTF X DASCTF 应急挑战杯中遇到的这个有趣的 CMS,题目不难,但是还蛮有趣的。

预期解

进入题目,是一个蝉知 CMS:

访问 admin.php 见到后台:

后台账号密码为弱⼝令 admin/12345,登陆进入,并在设计处存在可以编辑模板的地方:

但是点击保存时发现存在限制:

请在服务器创建 /var/www/html/system/tmp/fdbe.txt 文件,如果存在该文件,使用编辑软件打开,重新保存一遍。

但是我们没有服务器的权限所以我发创建这个文件,也就暂时无法执行编辑模块等敏感操作,所以我们要想办法将这个 fdbe.txt 上传或写入进去或者直接绕过这里的限制。

我们发现在设置中存在一个微信设置可以设置你的微信公众号,先胡乱填一下:

点击“已完成接入”作进一步设置:

点击保存后发现可以进一步上传微信二维码:

随便上传一个图片后发现图片名变为了你设置的“原始ID”:

经测试,这里在上传二维码图片时可以进行目录穿越,即我们可以通过修改之前的 “原始ID” 来将图片上传到其他目录。那我们便可以通过这里上传我们的 fdbe.txt 文件:

保存后随便上传一张照片:

然后便可以去编辑模板了:

成功 Getshell 并获得 flag:

非预期解

这里应该算不上是一个洞,当时进了后台一直没有找到绕过那个文件判断的方法,始终不能编辑模板。我就到处点啊点,看啊看,突然就 tmd 能编辑了。。。我都不知道是怎么做到的!!!后来复现了好多次才发现了这个非预期。

还是先看到这里,由于存在这个文件验证,我们不能直接编辑模板,要想办法绕过:

我们在设置中发现了“重要操作”选项,发现除了“文件验证”的方法外还有一个“密保问题验证”:

我们勾选这个“密保问题验证”并保存,然后去个人主页中设置一个密保问题:

保存,然后去“设置”里面使用刚刚开启的“密保问题验证”的方式尝试新建一个管理员,这里的作用就是激活刚刚开启的“密保问题验证”:

点击保存即可,然后当前的登录会话变成了经过权限验证后的会话了,此时便可以进行编辑模板等重要操作了:


该 CMS 除了 admin 用户外,还存在一个默认的 demo/demo 用户,使用该用户登录同样可以像 admin 用户那样可以完成以上攻击过程,所以如果管理员不禁用该用户的话便会将网站置于危险当中。

点击收藏 | 1 关注 | 1
登录 后跟帖