帝国cms渗透测试
帝国CMS的帝国漏洞,八成出在它那个万能的渗试后台参数上。我见过一个站,透测前台看着干干净净,帝国结果一个 帝国CMS的透测架构决定了它的攻击面。它不像WordPress那样插件满天飞,帝国核心代码相对封闭,渗试但封闭不等于安全。透测它的帝国 我去年测过一个政府站,用的帝国CMS 7.5。前台搜索框直接拼接 后台才是重灾区。帝国CMS默认后台路径 文件上传是另一个口子。 还有个坑是 我习惯用 防御?别指望帝国CMS官方补丁。他们更新慢,老版本直接放弃。自己改代码:所有 渗透测试不是拿工具扫一圈就完事。帝国CMS的洞,得手动挖。看代码,跟参数,构造payload。工具只能告诉你“可能有洞”,真正能不能打进去,还得靠脑子。/?渗试username=admin' AND 1=1-- 就进了后台。别笑,透测2023年了,帝国这种站还有。渗试e/ 目录下那些 class 文件,尤其是渗试 connect.php 和 functions.php,是透测渗透测试的第一站。很多老版本里,db_connect() 函数压根没做参数化查询,全靠 addslashes() 过日子。这玩意儿在GBK编码下就是个笑话——宽字节注入,一个 %df' 就能把反斜杠吃掉。$_GET['key'] 进SQL,连过滤都省了。用 sqlmap 跑,--level=3 --risk=2,三分钟出库。数据库里躺着三十万条公民信息,明文存储。运维还跟我说“我们用了帝国,很安全的”。安全个屁。/e/admin/,改起来麻烦,很多人干脆不改。登录框的验证码?早期版本可以直接绕过——把 ckecode 参数删掉,或者用 Burp 抓包后 repeater 无限重放。暴力破解更简单,admin 用户的密码在 phome_enewsuser 表里,password 字段是 md5(md5(password).salt)。salt 是明文存在 salt 字段里的,拿到数据库就等于拿到密码。e/admin/file/FileUpload.php 里对扩展名的检查,老版本只查 $_FILES['file']['name'] 的后缀。把 shell.php 改成 shell.php.jpg,再配合 %00 截断,或者干脆用 .phtml、.php5 这种冷门后缀,直接过。上传后路径在 /d/file/ 下,访问一下,whoami 就出来了。e/class/connect.php 里的 RepPostVar() 函数。它本意是过滤 $_POST 和 $_GET,但过滤逻辑写得稀烂——只替换了 select|insert|update|delete|and|or|union 这些关键词,大小写混写就废了。SeLeCt 直接过。更骚的是,它把 % 也过滤了,但 _ 没管,LIKE 注入照样打。Burp 的 Intruder 跑一遍 e/enews/ 下的所有 index.php,参数名从 classid 到 id 全试一遍。经常能碰到 classid 没过滤的,直接 UNION SELECT 出管理员密码。有个站更离谱,e/enews/index.php?classid=1 后面加个 ' 就报错,路径直接暴露:/var/www/html/e/class/connect.php on line 123。省了我找路径的功夫。$_GET、$_POST 进SQL前用 intval() 或 mysqli_real_escape_string() 过一遍。后台路径改掉,验证码换成 Google reCAPTCHA。文件上传白名单,别用黑名单。还有,把 php.ini 里的 magic_quotes_gpc 关了——这玩意儿早该进坟墓了。
-
上一篇
-
下一篇