某CMS从CSRF到Getshell

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

某CMS从CSRF到Getshell

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

环境搭建:

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

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

某CMS从CSRF到Getshell

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

某CMS从CSRF到Getshell

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

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

某CMS从CSRF到Getshell

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

某CMS从CSRF到Getshell

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

某CMS从CSRF到Getshell

前台输入之后

某CMS从CSRF到Getshell

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

某CMS从CSRF到Getshell

可以尝试结合一下其他的漏洞使得这个漏洞的可用性提高。翻了一下整个源码,发现这个系统并没有防止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>

某CMS从CSRF到Getshell

可以成功触发

某CMS从CSRF到Getshell

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

某CMS从CSRF到Getshell

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

某CMS从CSRF到Getshell

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

某CMS从CSRF到Getshell
某CMS从CSRF到Getshell

某CMS从CSRF到Getshell修复建议:

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

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

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

本文为转载文章,源自互联网,由网络整理整理编辑,转载请注明出处:https://www.hacksafe.net/articles/web/2682.html

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

请登录后发表评论