热点

熊海cms代码审计

时间:2010-12-5 17:23:32  作者:综合   来源:娱乐  查看:  评论:0
内容摘要:熊海CMS的搜索框,我盯着看了五分钟。一个单引号丢进去,页面直接白了,报错信息里夹着数据库路径。那会儿我就知道,这套系统的问题不在功能多不多,而在写代码的人根本没把用户输入当回事。 先看/search

熊海CMS的熊海搜索框,我盯着看了五分钟。码审一个单引号丢进去,熊海页面直接白了,码审报错信息里夹着数据库路径。熊海那会儿我就知道,码审这套系统的熊海问题不在功能多不多,而在写代码的码审人根本没把用户输入当回事。

先看/search.php。熊海整段代码不到三十行,码审过滤逻辑约等于没有。熊海开发者用$_GET['keyword']接参数,码审转手就拼进SQL语句,熊海中间连个addslashes()都舍不得加。码审更离谱的熊海是,它把查询结果直接echo到页面里,XSS和SQL注入凑成一对了。我试过' UNION SELECT 1,2,3-- -,字段数都不用猜,页面回显的位置明明白白告诉你哪几列是输出点。

后台登录那块更有意思。/admin/login.php里有一段验证码校验,逻辑是这样的:先判断$_SESSION['captcha']是否存在,存在就比对,不存在就跳过。问题来了——只要把cookie里的PHPSESSID删掉,服务端session找不到,校验直接放行。写这段代码的人大概觉得“session肯定有值”,但攻击者不按他的剧本走。我本地搭环境复现的时候,用Burp把请求里的Cookie头整个删掉,密码随便填,直接进了后台。那一刻我甚至笑出了声。

文件上传是另一个重灾区。/admin/upload.php只检查了Content-Type,而且用的是$_FILES['file']['type']。这玩意儿是浏览器发的,想改多容易。把application/octet-stream改成image/jpeg,传个.php上去,路径还是可控的——$_POST['dir']没做任何过滤,直接拼进move_uploaded_file()的目标路径。你甚至可以用../../跳到网站根目录。我传了个一句话木马,用菜刀连上去,权限是www-data。整套流程不到两分钟。

还有个细节:/inc/config.php里数据库密码是明文。这倒不算漏洞,但说明开发者的安全意识停留在“能跑就行”的阶段。config.php本身没有exit保护,直接访问会输出空白页,但如果服务器配置不当,比如.php文件被当成文本处理,那就全漏了。我见过有人把熊海CMS装在IIS上,结果config.php直接下载,数据库账号密码全暴露。这不是CMS的锅,但CMS也没做任何防护。

熊海CMS的代码里到处都是extract($_POST)、$$key这种写法。变量覆盖漏洞在好几个文件里都能触发。比如/admin/update.php里有一句foreach($_POST as $key=>$value){ $$key=$value;},你提交_SESSION[admin]=1,就能把自己变成管理员。这种写法在十年前可能还算常见,放到现在,任何一本安全入门书都会告诉你别这么干。

我翻完整个源码,最大的感受是:这不是某个单点漏洞的问题,而是整条开发链路上缺了安全这根弦。过滤函数写了但没调用,验证逻辑写了但有条件绕过,上传检查写了但只查表面。代码能跑,功能能用,但每个入口都像没关严的门。你不需要什么高级技巧,一个单引号、一个改包工具、一个删掉的Cookie,就能把整套系统拆得七零八落。

如果你还在用熊海CMS,别想着打补丁了。搜索框加intval,登录加session_regenerate_id,上传用白名单加随机文件名,这些都能做。但更省事的办法是换一套还在维护的CMS。毕竟,给一栋地基歪了的房子刷漆,住着还是不踏实。

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