网站漏洞修复之上传webshell漏洞修补的示例分析
发布时间 - 2023-05-30 00:00:00 点击率:次sine安全在对某客户的网站进行网站漏洞检测与修复发现该网站存在严重的sql注入漏洞以及上传webshell网站木马文件漏洞,该网站使用的是某cms系统,采用php语言开发,mysql数据库的架构,该网站源码目前是开源的状态。
某CMS是专注于提供付费知识的社交CMS系统,知识付费在目前的互联网中有这很高的需求,该系统可以对文档进行分享,收费下载,用户发布的知识内容可以隐藏,提供给付费客户阅读。代码比较精简深受广大站长们的喜欢,该网站漏洞主要发生在上传压缩包的同时,构造恶意解压代码讲zip包里的webshell解压到指定目录,导致漏洞发生。该CMS还存在sql注入漏洞,我们一一的来详细分解漏洞。
SQL注入漏洞详情与修复方案
对网站的代码数据库配置文件进行查看,看到数据库的连接函数使用的是pdo模式,再仔细的追踪代码查看到还使用了一些特殊符号的转义操作,有些sql注入代码并没有对齐进行全面的安全过滤,导致发生sql注入攻击,代码截图如下:
以上代码使用就是select查询功能,我们着重的来看下他的cond函数,通过对代码的详细查看确定这个函数是用来对接前端的用户写入的值,当前端用户提交恶意的代码的时候就会传入到id这个值当中,我们来拼接SQL语句,对id的值进行变量覆盖操作,可以配合IN,like等sql语句来进行攻击数据库,查看数据库的账号密码,以及修改数据库。
为修复 SQL 注入漏洞,需要在 GET 请求和 POST 请求中过滤非法字符的输入。'分号过滤 --过滤%20特殊字符过滤,单引号过滤,%百分号,and过滤,tab键值等的的安全过滤。启用php魔术,防止一些非法参数进行传输以及构造。
网站上传webshell漏洞
网站是公开免费注册用户的,也算是普通的用户,在对其上传功能进行全面的安全检测的时候发现存在上传zip压缩包的漏洞,上传doc等文件是需要审核,但是zip直接写入到数据库中,我们通过上面发现的sql注入漏洞对数据库进行查看,可以看到zip的文件地址。
如何上传webshell,我们通过sql注入漏洞查询到网站后台的管理员账号密码,登录网站后台,后台的各项功能都不存在漏洞,但是在查看源码当中发现有一段可以对zip文件解压的功能代码,无需使用用户权限就可以进行解压,那么我们来构造参数直接对该解压代码文件进行访问,post请求过去,直接将我们的zip文件解压到了当前文件中,我们就可以将我们的webshell木马上
传上去。
关于网站上传漏洞的修复,建议管理员关闭掉解压功能,或者对其解压的文件进行权限判断,是管理员用户有解压功能,还是普通会员权限拥有解压文档的权限,对权限进行合理的安全分配,再一个对上传的目录进行无脚本权限设置,防止webshell木马后门的运行。如果您对网站漏洞修复不熟悉的话,建议找专业的网站安全公司帮您修复网站漏洞,国内也就Sinesafe和绿盟、启明星辰等安全公司比较专业.
# php
# sql
# mysql
# 架构
# select
# pdo
# 数据库
# cms
# 上传
# 的是
# 在对
# 压缩包
# 以对
# 启明
# 进行全面
# 就可以
# 有一
# 就会
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复
如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体
JS经典正则表达式笔试题汇总
PHP 500报错的快速解决方法
Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用
Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】
Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧
如何利用DOS批处理实现定时关机操作详解
网站制作大概多少钱一个,做一个平台网站大概多少钱?
如何在七牛云存储上搭建网站并设置自定义域名?
如何在阿里云高效完成企业建站全流程?
Laravel如何自定义分页视图?(Pagination示例)
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
Laravel如何使用Eloquent进行子查询
Laravel如何与Docker(Sail)协同开发?(环境搭建教程)
Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】
Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】
Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制
北京专业网站制作设计师招聘,北京白云观官方网站?
node.js报错:Cannot find module 'ejs'的解决办法
Java遍历集合的三种方式
如何在阿里云完成域名注册与建站?
成都网站制作公司哪家好,四川省职工服务网是做什么用?
详解Huffman编码算法之Java实现
原生JS实现图片轮播切换效果
Laravel怎么为数据库表字段添加索引以优化查询
html5audio标签播放结束怎么触发事件_onended回调方法【教程】
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
详解CentOS6.5 安装 MySQL5.1.71的方法
Laravel如何处理文件下载请求?(Response示例)
详解Android——蓝牙技术 带你实现终端间数据传输
如何用搬瓦工VPS快速搭建个人网站?
如何在宝塔面板中创建新站点?
简单实现jsp分页
JS中对数组元素进行增删改移的方法总结
Laravel Session怎么存储_Laravel Session驱动配置详解
米侠浏览器网页背景异常怎么办 米侠显示修复
Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】
企业网站制作这些问题要关注
Laravel怎么在Controller之外的地方验证数据
Win11怎么开启自动HDR画质_Windows11显示设置HDR选项
如何正确下载安装西数主机建站助手?
微信h5制作网站有哪些,免费微信H5页面制作工具?
Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
如何快速搭建虚拟主机网站?新手必看指南
如何快速生成凡客建站的专业级图册?
如何在IIS管理器中快速创建并配置网站?
jQuery中的100个技巧汇总
如何在IIS中新建站点并配置端口与物理路径?

