娱乐

74cms漏洞

时间:2010-12-5 17:23:32  作者:时尚   来源:探索  查看:  评论:0
内容摘要:2023年夏天,我在一个甲方内网做常规渗透测试,翻到一套老旧的招聘系统,指纹识别显示是74cms。当时没太在意,这玩意儿在国内中小企业里装得挺多,版本号停在v5.0.1,后台路径还是默认的/admin

2023年夏天,我在一个甲方内网做常规渗透测试,翻到一套老旧的招聘系统,指纹识别显示是74cms。当时没太在意,这玩意儿在国内中小企业里装得挺多,版本号停在v5.0.1,后台路径还是默认的/admin/。我随手试了个弱口令,admin/123456,进去了。就这么简单。

74cms,全称骑士人才管理系统,早期叫骑士CMS,PHP写的,国内不少地方招聘网站、人才市场官网都在用。它的代码结构不算复杂,但历史漏洞攒了一箩筐。我翻过几个版本,从v4.x到v5.x,问题基本集中在几个地方:文件上传过滤不严、SQL查询拼接、模板渲染逃逸。最要命的是,很多站长装完就不管了,版本停在两三年前,后台路径懒得改,数据库前缀还是默认的qs_。

说个具体的。v5.0.1有个前台SQL注入,在index.php?m=home&c=jobs&a=index的keyword参数里。代码大概是这样:$where = "job_name like '%".$keyword."%'",直接拼进查询。没有过滤,没有预处理。用sqlmap跑一下,数据库账号密码就出来了。更离谱的是,这个注入点不需要登录,浏览器地址栏直接构造payload就行。我试过在几个公网资产上搜,fofa语法app="74CMS",结果里至少三成能直接注出数据。

后台那边更热闹。有个文件上传漏洞,在admin/controller/ArticleController.class.php里,上传图片时只检查了Content-Type,后缀名用的是黑名单,但黑名单里漏了.phtml和.php5。Apache默认配置下,.phtml照样当PHP解析。传个webshell上去,权限直接是www-data。我见过一个站,上传目录权限给到777,连提权都省了,直接读/etc/shadow。

模板渲染那块也有意思。74cms用了ThinkPHP的模板引擎,但自己改了一层。某个版本里,{ $smarty}变量没过滤,前台提交的参数能直接进模板编译。构造{ php}echo md5(1);{ /php},页面就回显了。这相当于前台任意代码执行。不过这个利用条件稍微苛刻点,需要开启模板缓存,而且缓存目录得可写。很多站为了性能,缓存目录权限给得很大,正好中招。

为什么74cms漏洞这么多?我琢磨过。一是代码年代早,那会儿PHP社区对安全编码还没现在这么重视,预处理语句用得少。二是官方更新慢,v5.0.1之后隔了快两年才出v5.1,中间爆出的漏洞全靠社区打补丁。三是用户群体特殊,地方人才网、小招聘平台,运维力量薄弱,装完就扔那儿,连后台路径都不改。我甚至见过一个站,数据库备份文件直接放在web根目录下,/data/backup/20220101.sql,浏览器就能下载。

修复建议?官方在v5.1里加了PDO预处理,上传白名单也严了。但老版本用户得自己动手。最直接的办法:升级到最新版,改后台路径,删掉install目录,数据库前缀改掉,上传目录禁止PHP执行。如果懒得升级,至少装个WAF,把union select、php、phtml这些关键词拦一下。不过说实话,WAF绕过的姿势比漏洞本身还多,治标不治本。

我后来在几个漏洞平台上翻了翻,74cms的提交记录从2016年一直排到2023年,类型清一色是SQL注入和文件上传。有个提交者写了句备注:“这系统还能挖出洞,我是没想到的。”底下有人回复:“你挖的是2018年的版本吧?2023年的早修了。”然后楼主贴了张截图,版本号v5.0.1,发布时间2017年。沉默。

所以这事儿的核心不是74cms本身多烂,而是那些跑着老版本的系统,像钉子户一样扎在互联网上。你扫到一个,背后可能就是个县城的招聘网站,日活不过百,但数据库里躺着几万份简历,姓名、身份证、手机号、家庭住址,全乎的。SQL注入一跑,全打包带走。站长可能到现在都不知道。

最近更新
热门排行
copyright © 2026 powered by 力不从心网   sitemap