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实现映射操作,结合实例形式详细分析了PHP映射概念、原理及使用链表与二叉树实现映射的相关操作技巧,需要的朋友可以参考下
    2019-10-10
  • 解读PHP中的垃圾回收机制

    解读PHP中的垃圾回收机制

    这篇文章主要介绍了解读PHP中的垃圾回收机制,是否拥有GC功能是一门编程语言开发的重要关注点,需要的朋友可以参考下
    2015-08-08
  • php字符串截取的3个简单方法

    php字符串截取的3个简单方法

    这篇文章主要给大家介绍了关于php字符串截取的3个简单方法,字符串的截取php中有非常多的字符串处理函数,其中就有字符串截取函数,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • 求PHP数组最大值,最小值的代码

    求PHP数组最大值,最小值的代码

    求PHP数组最大值,最小值的代码,需要的朋友可以参考下。
    2011-10-10
  • PHP记录页面停留时间的方法

    PHP记录页面停留时间的方法

    这篇文章主要介绍了PHP记录页面停留时间的方法,涉及PHP结合js针对文件与时间的相关操作技巧,需要的朋友可以参考下
    2016-03-03
  • 基于PHP实现的多元线性回归模拟曲线算法

    基于PHP实现的多元线性回归模拟曲线算法

    这篇文章主要介绍了基于PHP实现的多元线性回归模拟曲线算法,结合具体实例形式分析了多元线性回归模拟曲线算法的原理与相关php实现技巧,需要的朋友可以参考下
    2018-01-01
  • PHP实现从PostgreSQL数据库检索数据分页显示及根据条件查找数据示例

    PHP实现从PostgreSQL数据库检索数据分页显示及根据条件查找数据示例

    这篇文章主要介绍了PHP实现从PostgreSQL数据库检索数据分页显示及根据条件查找数据操作,涉及PHP操作PostgreSQL数据库的SQL条件查询、分页、显示等相关操作技巧,需要的朋友可以参考下
    2018-06-06
  • php获取指定数量随机字符串的方法

    php获取指定数量随机字符串的方法

    这篇文章主要介绍了php获取指定数量随机字符串的方法,涉及php针对数组的遍历及字符串运算相关操作技巧,需要的朋友可以参考下
    2017-02-02
  • php+jquery编码方面的一些心得(utf-8 gb2312)

    php+jquery编码方面的一些心得(utf-8 gb2312)

    在开发php与jquery的过程中,需要注意的一些心得,防止乱码的出现。
    2010-10-10
  • 浅谈php的优缺点

    浅谈php的优缺点

    本文给大家简单总结了php的10点优点和3个缺点,都是个人对于php开发的一些体悟和总结,有需要的小伙伴可以参考下。
    2015-07-07

最新评论