我的编程空间,编程开发者的网络收藏夹
学习永远不晚

PHP网络安全之命令执行漏洞及防御

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

PHP网络安全之命令执行漏洞及防御

命令执行漏洞的原理

程序应用有时需要调用一些执行系统命令的函数,如php中的system,exec,shell exec,passthru,popen,proc popen等,当用户可以控制这些函数的参数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令注入攻击

两个条件

(1)用户可以控制函数输入

(2)存在可以执行代码的危险函数

命令执行漏洞产生原因

1.开发人员编写源码时,未针对代码中可执行的特殊函数入口作过滤,导致客户端可以恶意构造语句,并提交服务端执行

2.命令注入攻击中,web服务器没有过滤类似system,eval,exec等函数,是该漏洞攻击成功的主要原因。

命令执行漏洞的危害

1.继承web服务程序的权限去执行系统命令或读写文件

2.反弹shell

3.控制整个网站甚至服务器

4.进一步内网渗透

实例

<?php echo shell_exec($_GET['a']); ?>

将url中的参数a作为cmd命令行指令执行

危险函数导致代码执行

<?php 
$arr = $_GET['arr']; 
$array = $_GET['array']; 
$new_array = arraymap($arr,$array); 
?>

arraymap是一个危险函数,它会默认将参数作为php代码执行

PHP一些可调用外部程序的危险函数

eval攻击

eval函数将输入的参数当成php代码来执行

mixed eval(string code str)

<?php
$var = "var";
if(isset($_GET["arg"]))
{
$arg = $_GET["arg"];
eval("\$var = $arg;");
echo "\$var = ".$var;
}
?>

preg_replace()函数

preg_replace()函数执行一个正则表达式的搜索和替换

在php版本为5.5.0以下时有一个漏洞,当该函数使用了一个不安全的修饰符"\e"时,preg_replace()会对替换字符串的反向引用进行正常替换,将其作为php代码进行计算,并使用 结果替换搜索字符串。

此处/e的用处是引用括号里的字符 也就是以参数a去替代括号里的字符

ps:不要忘记代码两侧的中括号

call_user_func

函数用法:

call_user_func($_GET["a"] , $_GET["b"])

将a作为函数执行,b作为函数参数传递进去

在命令注入时,常有需要多命令执行的情况

在linux下,可以使用|或||代替

|是管道符,显示后面的执行结果

||当前面命令执行出错时再执行后面的

在Window下,可以使用&、&&、|、||代替

&前面的语句为假则执行后面的

&&前面的语句为假则直接出错,后面的也不执行

|直接执行后面的语句

||前面出错执行后面的语句

命令执行的防御手段

1.尽量不要执行外部命令

2.使用自定义函数或函数库替代外部函数功能

3.使用escapeshellarg函数来处理命令参数

4.使用safe_mode_exec_dir:指定可执行文件路径 ,这样可以将会使用的命令提前放入此路径内

safe_mode_exec_dir = /usr/local/php/bin

DVWA介绍

DVWA平台:

用来进行安全脆弱性鉴定的PHP/Mysql Web应用

为安全专业人员测试总结的专业技能和工具提供合法环境

帮助web开发者更好的理解web应用安全防范的过程

DVWA的搭建

DVWA是基于php/mysql环境开发的

下载地址:

Buy Steroids Online UK - Anabolic Steroids For Sale UK

GitHub

DVWA练习命令注入

使用靶场自行练习

到此这篇关于PHP网络安全之命令执行漏洞及防御的文章就介绍到这了,更多相关PHP漏洞及防御内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

PHP网络安全之命令执行漏洞及防御

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

php网络安全中命令执行漏洞怎么预防

这篇文章主要介绍了php网络安全中命令执行漏洞怎么预防的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php网络安全中命令执行漏洞怎么预防文章都会有所收获,下面我们一起来看看吧。漏洞的产生原因代码层过滤不严。应用
2023-07-05

php网络安全中命令执行漏洞的产生及本质探究

这篇文章主要介绍了php网络安全中命令执行漏洞的产生及本质,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
2023-02-24

网络安全中怎么进行漏洞的防御与修复

这篇文章主要为大家展示了“网络安全中怎么进行漏洞的防御与修复”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“网络安全中怎么进行漏洞的防御与修复”这篇文章吧。漏洞管理工作是企业安全建设必不可少的一环
2023-06-27

PHP网站常见的安全漏洞及防御方法有哪些

本篇内容主要讲解“PHP网站常见的安全漏洞及防御方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PHP网站常见的安全漏洞及防御方法有哪些”吧!一、常见PHP网站安全漏洞对于PHP的漏洞,
2023-07-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录