热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

代码注入漏洞以及修复方法

1.漏洞概述PHP代码执行漏洞指应用程序本身过滤不严格,用户可以通过请求将代码注入到程序中执行,类似于SQL注入漏洞,可以把SQL语句通

1.漏洞概述

PHP代码执行漏洞指应用程序本身过滤不严格,用户可以通过请求将代码注入到程序中执行,类似于SQL注入漏洞,可以把SQL语句通过网页注入到SQL服务执行,而PHP代码执行漏洞则是可以把代码注入应用到网站后端中,如果漏洞没有特殊的过滤,相当于直接有一个web后门存在,该漏洞主要由动态代码执行函数的参数过滤不严格导致。

2.技术概述

执行PHP代码写入WebShell

3.风险概述

控制网站甚至服务器


4.黑盒测试

在自己搭建的平台上表单处键入 phpino()语句

这条语句在后端中没有被当做正常字符串信息显示出来而是当做PHP代码执行

接下来我们在键入一个能写webshell的语句

显示正常

服务器中已经被写入了一个webshell

5.查看源码,可以看见动态代码执行函数eval,该函数将字符串直接以PHP代码形式执行,反斜杠‘\’作为转义符号将从表单提交的数据转义成了字符串,这样就构成了代码注入的漏洞,即输入的代码被转义为字符串又被eval以php形式执行。


6.修复方案

业内最新的修复方案基于黑名单的思想,将一些函数必有的符号进行过滤。

function checkstr($str,$find){$find_str = $find;$tmparray = explode($find_str,$str); //explode()函数把字符串通过某个指定的字符拆分为数组。$str为原始字符串 $findstr为 if(count($tmparray)>1){ //要查找的字符,如果存$findstr 那么这个字符串就会被拆分成两份或者两份以上 那么数组里的元素就在两个或者两个以上return true;} else{return false;}
}/*判断请求表单字段含下划线,左括号,右括号,分号 */
if(isset($_REQUEST[&#39;submit&#39;]) && !checkstr($_REQUEST[&#39;name&#39;],&#39;;&#39;) && !checkstr($_REQUEST[&#39;name&#39;],&#39;(&#39;) && !checkstr($_REQUEST[&#39;name&#39;],&#39;)&#39;) && !checkstr($_REQUEST[&#39;name&#39;],&#39;_&#39;)&& !checkstr($_REQUEST[&#39;email&#39;],&#39;;&#39;) && !checkstr($_REQUEST[&#39;email&#39;],&#39;(&#39;) && !checkstr($_REQUEST[&#39;email&#39;],&#39;)&#39;) && !checkstr($_REQUEST[&#39;email&#39;],&#39;_&#39;)&& !checkstr($_REQUEST[&#39;message&#39;],&#39;;&#39;) && !checkstr($_REQUEST[&#39;message&#39;],&#39;(&#39;) && !checkstr($_REQUEST[&#39;message&#39;],&#39;)&#39;) && !checkstr($_REQUEST[&#39;message&#39;],&#39;_&#39;)){/*用filter过滤特殊编码*/ //filter 函数编码&#xff0c;过滤特殊字符HTML 转义字符 &#39;"<>& 以及 ASCII 值小于 32 的字符。$name &#61; filter_var($_REQUEST["name"],FILTER_SANITIZE_SPECIAL_CHARS); //filter 函数编码&#xff0c;过滤特殊字符HTML 转义字符 &#39;"<>& 以及 ASCII 值小于 32 的字符。 $email &#61; filter_var($_REQUEST["email"],FILTER_SANITIZE_SPECIAL_CHARS); //filter 函数编码&#xff0c;过滤特殊字符HTML 转义字符 &#39;"<>& 以及 ASCII 值小于 32 的字符。$message &#61; filter_var($_REQUEST["message"],FILTER_SANITIZE_SPECIAL_CHARS); //filter 函数编码&#xff0c;过滤特殊字符HTML 转义字符 &#39;"<>& 以及 ASCII 值小于 32 的字符。&#64;eval("\$var1 &#61; $name;"); echo $var1; &#64;eval("\$var2 &#61; $email;"); echo $var2; &#64;eval("\$var3 &#61; $message;"); echo $var3;}else{echo "请勿提交非法字符";}?>





推荐阅读
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
  • 深入解析HTML5字符集属性:charset与defaultCharset
    本文将详细介绍HTML5中新增的字符集属性charset和defaultCharset,帮助开发者更好地理解和应用这些属性,以确保网页在不同环境下的正确显示。 ... [详细]
  • oracle c3p0 dword 60,web_day10 dbcp c3p0 dbutils
    createdatabasemydbcharactersetutf8;alertdatabasemydbcharactersetutf8;1.自定义连接池为了不去经常创建连接和释放 ... [详细]
  • importpymysql#一、直接连接mysql数据库'''coonpymysql.connect(host'192.168.*.*',u ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • MySQL 5.7 学习指南:SQLyog 中的主键、列属性和数据类型
    本文介绍了 MySQL 5.7 中主键(Primary Key)和自增(Auto-Increment)的概念,以及如何在 SQLyog 中设置这些属性。同时,还探讨了数据类型的分类和选择,以及列属性的设置方法。 ... [详细]
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • 使用虚拟机配置服务器
    本文详细介绍了如何使用虚拟机配置服务器,包括购买云服务器的操作步骤、系统默认配置以及相关注意事项。通过这些步骤,您可以高效地配置和管理您的服务器。 ... [详细]
  • 本文讨论了在进行 MySQL 数据迁移过程中遇到的所有 .frm 文件报错的问题,并提供了详细的解决方案和建议。 ... [详细]
  • Spark中使用map或flatMap将DataSet[A]转换为DataSet[B]时Schema变为Binary的问题及解决方案
    本文探讨了在使用Spark的map或flatMap算子将一个数据集转换为另一个数据集时,遇到的Schema变为Binary的问题,并提供了详细的解决方案。 ... [详细]
  • 本文详细介绍了MySQL数据库的基础语法与核心操作,涵盖从基础概念到具体应用的多个方面。首先,文章从基础知识入手,逐步深入到创建和修改数据表的操作。接着,详细讲解了如何进行数据的插入、更新与删除。在查询部分,不仅介绍了DISTINCT和LIMIT的使用方法,还探讨了排序、过滤和通配符的应用。此外,文章还涵盖了计算字段以及多种函数的使用,包括文本处理、日期和时间处理及数值处理等。通过这些内容,读者可以全面掌握MySQL数据库的核心操作技巧。 ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
    在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
  • Python错误重试让多少开发者头疼?高效解决方案出炉
    ### 优化后的摘要在处理 Python 开发中的错误重试问题时,许多开发者常常感到困扰。为了应对这一挑战,`tenacity` 库提供了一种高效的解决方案。首先,通过 `pip install tenacity` 安装该库。使用时,可以通过简单的规则配置重试策略。例如,可以设置多个重试条件,使用 `|`(或)和 `&`(与)操作符组合不同的参数,从而实现灵活的错误重试机制。此外,`tenacity` 还支持自定义等待时间、重试次数和异常处理,为开发者提供了强大的工具来提高代码的健壮性和可靠性。 ... [详细]
  • 在 Axublog 1.1.0 版本的 `c_login.php` 文件中发现了一个严重的 SQL 注入漏洞。该漏洞允许攻击者通过操纵登录请求中的参数,注入恶意 SQL 代码,从而可能获取敏感信息或对数据库进行未授权操作。建议用户尽快更新到最新版本并采取相应的安全措施以防止潜在的风险。 ... [详细]
author-avatar
w50251898
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有