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

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

漏洞的产生原因

  • 代码层过滤不严。应用程序直接或间接使用了动态执行命令的危险函数,并且这个函数的运行参数是可控的
  • 系统的漏洞造成命令注入

漏洞的本质

应用有时需要调用一些执行系统命令的函数,当服务器没有严格过滤用户提供的参数时,就有可能导致用户提交恶意代码被服务器执行,从而造成命令执行漏洞。

涉及到的函数

  • 1.system
  • 2.exec()
  • 3.shell_exec()
  • 4.passthru()
  • 5.popen()
  • 6.反引号

命令执行漏洞的危害

  • 1.继承Web 服务器程序权限(Web用户权限),去执行系统命令
  • 2.继承Web服务器权限,读写文件
  • 3.反弹Shell
  • 4.控制整个网站
  • 5.控制整个服务器

命令执行漏洞的防御

  • 1、尽量少使用执行命令函数或者禁用disable_functions
  • 2、在进入执行命令的函数之前,对参数进行过滤,对敏感字符进行转义
  • 3、参数值尽量使用引号包括,并在拼接前调用addslashes进行转义

命令执行相关函数的使用

system()

  • 说明:能够将字符串作为OS命令执行,自带输出功能
  • 测试参考代码:
<?php
if(isset($_GET['cmd'])){
    system($_GET['cmd']);
}
?>
payload:?cmd=ipconfig

exec()

  • 说明:能将字符串作为OS命令执行,但无输出,需要输出执行结果print。
  • exec() 默认只输出最后一行的数据
  • 如果想让他输出全部结果,可以加一个参数,即exec(ifconfig,$arr); print_r($arr);,如一句话木马:<?php exec($_REQUEST[123],$arr);print_r($arr)?>
  • 测试参考代码
<?php
if(isset($_GET['cmd'])){
    print exec($_GET['cmd']);
}
?>
payload:?cmd=whoami

shell_exec()

  • 说明:执行命令并以字符串的形式,返回完整的信息,但是函数无回显,需要输出执行结果。
  • 测试参考代码
<?php
if(isset($_GET['cmd'])){
    print shell($_GET['cmd']);
}
?>
payload:?cmd=whoami

passthru()

  • 说明:执行外部命令,与system()类似,但是该函数会直接将结果输出,无需输出执行。
  • 测试参考代码
<?php
if(isset($_GET['cmd'])){
    passthru($_GET['cmd']);
}
?>
payload:?cmd=whoami

popen()

  • 说明:能够执行OS命令,但是该函数并不是返回命令结果,而是返回一个文件指针
  • 测试参考代码
<?php
if(isset($_GET['cmd'])){
    $cmd=$_GET['cmd'].">>1.txt";
    popen($cmd,'r');
}
?>
payload:?cmd=whoami

反引号

  • 说明:反引号[``]内的字符串,也会被解析成OS命令
  • 反引号背后执行的代码其实是调用了shell_exec(),所以禁用了shell_exec()同样反引号也无法使用了。
  • 测试参考代码
<?php
if(isset($_GET['cmd'])){
    $cmd=$_GET['cmd'];
    print `$cmd`;
}
?>
payload:?cmd=whoami

到此这篇关于php网络安全中命令执行漏洞的产生及本质探究的文章就介绍到这了,更多相关php命令执行漏洞内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • PHP延迟静态绑定使用方法实例解析

    PHP延迟静态绑定使用方法实例解析

    这篇文章主要介绍了PHP延迟静态绑定使用方法实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • PHP中文分词的简单实现代码分享

    PHP中文分词的简单实现代码分享

    对于中文搜索引擎来说, 中文分词是整个系统最基础的部分之一, 因为目前基于单字的中文搜索算法并不是太好。
    2011-07-07
  • php文件包含的几种方式总结

    php文件包含的几种方式总结

    在本篇文章里小编给大家整理的是一篇关于php文件包含的几种方式总结内容,有需要的朋友们跟着学习参考下。
    2019-09-09
  • PHP获取当前文件的父目录方法汇总

    PHP获取当前文件的父目录方法汇总

    本文给大家汇总介绍了使用PHP获取当前文件所在目录的父目录的路径的2种方法,并附上php获取路径和目录的相关函数,有需要的小伙伴可以参考下
    2016-07-07
  • 非常精妙的PHP递归调用与静态变量使用

    非常精妙的PHP递归调用与静态变量使用

    在PHP编程中,递归调用常常与静态变量使用。静态变量的含义可以参考PHP手册.希望下面的代码,会更有利于对递归以及静态变量的理解
    2012-12-12
  • php实现用手机关闭计算机(电脑)的方法

    php实现用手机关闭计算机(电脑)的方法

    这篇文章主要介绍了php实现用手机关闭计算机(电脑)的方法,涉及php使用system方法调用系统命令的相关技巧,需要的朋友可以参考下
    2015-04-04
  • PHP中的use关键字概述

    PHP中的use关键字概述

    这篇文章主要介绍了PHP中的use关键字,需要的朋友可以参考下
    2014-07-07
  • 常见php数据文件缓存类汇总

    常见php数据文件缓存类汇总

    这篇文章主要介绍了常见php数据文件缓存类,实例讲述了php文件缓存与利用memcache来缓存数据的方法,代码封装性好,使用简单,是非常实用的技巧,需要的朋友可以参考下
    2014-12-12
  • PHP实现更新中间关联表数据的两种方法

    PHP实现更新中间关联表数据的两种方法

    这篇文章主要介绍了PHP实现更新中间关联表数据的两种方法,在进行多表操作时比较有参考价值,需要的朋友可以参考下
    2014-09-09
  • php获取远程图片并下载保存到本地的方法分析

    php获取远程图片并下载保存到本地的方法分析

    这篇文章主要介绍了php获取远程图片并下载保存到本地的方法,结合实例形式对比分析了php基于curl与缓存操作获取远程图片及图片保存的相关操作技巧,需要的朋友可以参考下
    2016-10-10

最新评论