某CMS从CSRF到Getshell – 作者:sjy93812

写在前:

最近准备看一下代码执行相关漏洞,日常逛cnvd时发现一个和代码执行有关的漏洞如下图所示。

image.png

看了一眼这个漏洞的简介这个是一个比较小众的CMS,加之这个马赛克,这明显是疯狂暗示去分析一下这个漏洞。

环境搭建:

我使用的是该cms1.0 +ache2.4.39+PHP Version 5.6.9,该cms只能使用php5.x,不支持最新版的PHP。

傻瓜式安装,安装成功之后入下图所示。

image.png

在CNVD的漏洞详情里明确说是后台的漏洞,所以我们直接查看后台的代码。根据神打码的提示,定位到相关的文件

image.png

该文件内容很少,漏洞也相当明显。

一开始注意到了这里插入了php代码,没有过滤。

image.png

然后去查了一下php echo函数后怎么执行代码

image.png

不过好像并没有找到echo函数执行代码的方式。返回去上面重新看一下代码,发现这里将用户的输入写入了一个文件中。

image.png

前台输入之后

image.png

找到Ping.php文件,发现直接写入了一个没有任何权限校验的文件中。不过漏洞有些鸡肋就是输入点在后台。

image.png

 

可以尝试结合一下其他的漏洞使得这个漏洞的可用性提高。翻了一下整个源码,发现这个系统并没有防止CSRF漏洞的措施,我们可以CSRF来组合利用。

构造一个CSRF界面

<html>

 <!– CSRF PoC – generated by Burp Suite Professional –>

 <body>

 <script>history.pushState(”, ”, ‘/’)</script>

   <formaction=”http://www.test.com/sea/72vlt3/admin_ping.php?action=set“method=”POST”>

     <input type=”hidden” name=”weburl”value=”&#63;&gt;&#59;1″ />

     <input type=”hidden” name=”token”value=”123456789″ />

     <input type=”submit” value=”Submit request” />

   </form>

 </body>

</html>

image.png

可以成功触发

image.png

插入payload,可以在未授权的情况下直接命令执行。

image.png

 

延伸一下,其实这个问题属于全局性的。另两个点

image.png

这里同样直接将用户的输入直接保存到了没有任何权限校验的文件中。

image.png

image.png

 

image.png修复建议:

1,在数据包中添加随机token,防止CSRF漏洞的发生,这样在一定程度上可以降低风险。

2,前端用户的输入内容不要输入到文件中,使用数据库进行保存。

3,其实这一种方法比较“偷懒”,将生成的文件以随机字符串的方式命名,并且以txt后缀名结尾。

来源:freebuf.com 2020-06-30 22:02:55 by: sjy93812

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论