74CMS 曝高危漏洞,攻击者只需注册会员账号,上传一份包含恶意内容的简历,即可控制网站服务器,进行任意操作。
为使大家更为直观的了解漏洞危害,千里目安全实验室倾力打造漏洞演示视频,供大家观看:
千里百科
74CMS 又称 “骑士 CMS ”,是一项以 PHP 和 MySQL 为核心开发的一套免费并开源的专业人才网站系统。软件具有执行效率高、模板自由切换、后台管理功能方便等诸多优秀特点。
74CMS 多应用于大型人才招聘网站,网站中通常会含有大量会员个人简历等私密信息,因此,该漏洞一旦被不法分子利用将产生极为严重的后果。
漏洞影响
通过谷歌搜索暴露在公网中的 74CMS 系统,发现使用 74CMS 建站的各类人才网站页面多达 50.9 万个。
漏洞原理
通过对 74CMS 最新版本进行源码分析,发现此漏洞是一个模板注入漏洞。 在文件 Application/Home/Controller/MController.class.php 中
可见,这里将 $type 参数传入 display 函数,display 函数是 ThinkPHP 中展示模板的函数。跟进了几个函数,进入了 View 类的 display 函数:
可见,这里拿到了 $templateFile 并传入 fetch 函数,将 fetch 的结果交给 render 函数。这两个函数,fetch 是将文件内容获取到,render 是使用 ThinkPHP 的模板引擎渲染之。
拿自带的 favicon.ico 做下试验,可成功包含: http://localhost/upload/index.php?m=&c=M&a=index&type=../favicon.ico
漏洞利用那么,这个漏洞如何利用?因为 type 的值是作为 display 函数的参数传入的,所以实际上这个漏洞可以理解为 “模板引擎注入”,现在只需要上传一个内容符合 ThinkPHP 模板格式的文件,再作为 type 的值即可。
查看 ThinkPHP 文档:
可知,要使用原生 PHP 的话,只需要将代码包含在 <php> 标签内即可。 74CMS 里,某公司创建简历后支持上传 docx 格式的简历。我们上传一个包含一句话木马的 docx 文件,将其作为模板。数据包如下:
pid 是简历 id,word_resume 就是包含模板的文件。上传成功,获取文件名和路径:
再将这个文件名作为 type 的值,成功执行一句话木马,CKnife(网站管理工具)连接,获取服务器权限:
关注千里目安全实验室微信,了解最新的安全动态 |