命令执行漏洞

这篇具有很好参考价值的文章主要介绍了命令执行漏洞。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:

坚持就是有点麻烦,但是你只要做下去就会感到习惯和快乐的事。

一、命令执行漏洞概念

什么是命令执行漏洞?命令执行漏洞就是服务器端没有对客户端用户输入的命令进行过滤,导致用户可以通过任意拼接系统命令,使服务器端成功执行任意系统命令。为什么客户端能直接对服务器执行命令呢,因为在服务器安装的web程序,web框架和web组件等外部程序有时候去需要调用执行命令的函数,所以如果没有对客户端用户输入的命令进行过滤,就会使得用户通过外部程序直接编写和执行系统的命令函数。

二、命令执行原理

命令执行漏洞主要是服务端没有对执行命令的函数做出过滤导致的。我们可通过编写一些系统函数来输入疑似存在命令执行接口的地方,来检测是否此接口是否存在命令执行漏洞。

1. 常见的执行系统命令的函数有:

windows系统:

whoami:查看服务器用户名

ipconfig:查看本机IP地址子网掩码以及默认网关等

dir:查看本目录文件

Linux系统:

whoami:查看服务器用户名

ifconfig:查看本机IP地址子网掩码以及默认网关等

ls:列出本目录文件

pwd:查看现目录的绝对路径

除了拼接函数外,我们还可以使用命令连接符来组合这些系统函数增加命令执行成功率。常见的命令连接符有(“|,&&,||”这三个连接符都是Windows系统与Linux系统共有的,而“&”是Windows系统特有,“;”是Linux系统特有的):

  • |

管道操作符

A|B:无论执行的A命令是否正确,B命令都执行

  • &&

逻辑与

A&&B:只有在A命令成功执行的前提下,B命令才可以执行

  • ||

逻辑或

A||B:只有在A命令没有执行失败的前提下,B命令才可以执行

  • &

A&B:不管A是否执行成功,B命令都会执行

  • ;

A&B:不管A是否执行成功,B命令都会执行

2. 代码命令执行

一般我们能通过外部程序直接调用的系统命令的接口并不多,但是有些外部程序使用的代码可以也导致命令执行。 PHP代码执行漏洞是将PHP代码注入到Web应用中通过Web容器执行 。例如PHP中的 eval()、assert()、``、system()、exec()、shell_exec()、passthru()、 pcntl_exec()等(Windows上未对反斜杠进行过滤),当用户可以控制命令执行函数中的参数时,将可以注入恶意系统命令到正常命令中,造成命令执行攻击。

我们来解释一下这些命令的意思

system():

system函数是php函数通过调用外部程序命令来实现与系统命令函数交互达到执行系统函数的目的,system将执行结果显示输出

举例

创建一个123.php文件,在里面写入

<?php
system("whoami");
?>

命令执行漏洞

执行命令whoami并输出

passthru()

passthru()函数(一般用于UNIX系统)和system函数类似,执行命令并且可以将输出结果回显

<?php
echo"<pre>";
passthru("ipconfig");
echo"</pre>";
?>

命令执行漏洞

exec函数也是命令执行函数。作用与system差不多,只不过exec函数可以执行,但是不回显结果,只返回执行结果的最后一行。

要回显结果可以加上echo函数

<?php
exec("ipconfig");
?>

命令执行漏洞

命令执行漏洞

shell_exec()

与exec函数差不多,执行命令函数,但是不回显,我们可以使用echo函数把执行结果显示出来

命令执行漏洞

代码执行漏洞

由于服务器对危险函数过滤不严,导致用户输入的一些字符串可以被转换成代码来执行,从而造成代码执行漏洞。

下面介绍一些危险函数,它们可以将输入的字符串转化为代码。

eval()

eval() 函数可将括号里面的字符串转换为代码执行,字符串必须是合法的php代码并且用分号结束,这样才能执行代码命令。

创建text.php文件。里面代码是

<?php
$cmd=$_GET["cmd"];
eval("$cmd");
?>

命令执行漏洞

然后我们往这个文件名后面加上?cmd=phpinfo();

命令执行漏洞

发现代码被后台解析了,并且成功执行了,但是一般情况下这个页面是不能显示出来了,是被过滤掉的,因为这样会暴露里面的配置信息。而这里是因为eval函数我们才能实现代码执行。

这里说一下php中的phpinf代码是表示输出php的配置信息的。如果服务端没有过滤eval这个危险注入函数的话,就会导致代码执行漏洞。

assert()

assert()函数是一个断言函数,在php里面判断一个表达式是否成立,返回真或假。如果直接将PHP代码传入也会被执行

命令执行漏洞

三、命令执行漏洞演示

我们只是通过文字解说的话太抽象了,听起来还是懵懂,所以我们来通过使用DVWA靶场来为大家演示命令执行漏洞。

首先我们观察这个页面得知,这里是一个ping装置,就是说类似于我们使用cmd窗口ping的功能

一般来说ping装置只能输入ip进行ping,而输入其他系统则不能成功执行的。这时候如果我们能执行除了ip之外的系统命令,就证明存在命令执行漏洞了。

LOW等级:

我们输入ip试试,可以执行成功

命令执行漏洞

再试一下直接输入其他系统命令。

命令执行漏洞

发现不成功。

说明这里需要使用命令连接符拼接。

然后我们查看一下源码,发现没有任何防护,也就是说我们可以通过这个装置任意执行其他命令

命令执行漏洞

我们试一下拼接系统命令来查看服务器的用户,发现这里居然能执行成功

命令执行漏洞

medium等级

我们再次输入上次那个low等级的命令函数试一下,发现执行失败

命令执行漏洞

我们看一下源码,发现这里多了一层防护,过滤掉了&&和;符号

命令执行漏洞

但是命令连接符可不止这两个啊,既然这两个被过滤掉了,我们使用其他命令

命令执行漏洞

high等级

我们尝试输入了所有的命令连接符去拼接系统命令了,发现都不能执行系统命令了,为啥呢,我们查看一下源码

命令执行漏洞

发现所有的连接符都被过滤掉了,这个可怎么办啊,难道没有办法了吗,不,既然这里直接拼接的命令不成功,那我们试一下绕过

使用空格绕过

命令执行漏洞

成功绕过。

四、漏洞危害

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

2. 可以反弹shell

五、安全防护

1. 服务端过滤危险函数

2. 使用自定义函数或函数库来代替外部命令


————————————————
版权声明:本文为CSDN博主「bk天气」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_49577923/article/details/121341057文章来源地址https://www.toymoban.com/news/detail-471342.html

到了这里,关于命令执行漏洞的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【网络安全】命令执行漏洞

    应用程序中有时候需要调用一些执行系统命令的函数,在php中常见的为 system 、 exec 、 shell_exec 、 passthru 、 proc_poen 、 popen 等函数用来执行系统命令。当黑客能控制这些函数的参数时,就可以讲恶意的系统命令拼接到正常的命令中,就会命令执行攻击,这就是命令执行漏洞。

    2024年02月03日
    浏览(39)
  • Yapi命令执行漏洞复现

    YApi 是高效、易用、功能强大的 api 管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服务。可以帮助开发者轻松创建、发布、维护 API,YApi 还为用户提供了优秀的交互体验,开发人员只需利用平台提供的接口数据写入工具以及简单的点击操作就可以实现接口的管

    2024年02月12日
    浏览(48)
  • 命令执行漏洞

    坚持就是有点麻烦,但是你只要做下去就会感到习惯和快乐的事。 什么是命令执行漏洞?命令执行漏洞就是服务器端没有对客户端用户输入的命令进行过滤,导致用户可以通过任意拼接系统命令,使服务器端成功执行任意系统命令。为什么客户端能直接对服务器执行命令呢,

    2024年02月07日
    浏览(34)
  • 命令执行漏洞超详细讲解

    💕💕💕 博主昵称:摆烂阳💕💕💕 🥰博主主页跳转链接 👩‍💻博主研究方向:web渗透测试 、python编程 📃 博主寄语:希望本篇文章能给大家带来帮助,有不足的地方,希望友友们给予指导 ———————————————— 应用有时需要调用一些执行系统命令的函数

    2024年02月01日
    浏览(41)
  • 命令执行漏洞 | iwebsec

    这是 iwebsec 靶场,具体搭建过程可以看前面的文章。 应用程序有时需要调用一些执行系统命令的函数,如在PHP中,使用system、exec、shell_exec、passthru、popen、proc_popen等函数执行系统命令。当黑客能控制这些函数中的参数时,就可以将恶意的系统命令拼接到正常的命令中,从而

    2024年01月24日
    浏览(53)
  • nginxWebUI 远程命令执行漏洞

    nginxWebUI是一款图形化管理nginx配置的工具,能通过网页快速配置nginx的各种功能,包括HTTP和TCP协议转发、反向代理、负载均衡、静态HTML服务器以及SSL证书的自动申请、续签和配置,配置完成后可以一键生成nginx.conf文件,并控制nginx使用此文件进行启动和重载。nginxWebUI后台提

    2024年02月11日
    浏览(36)
  • 禅道后台命令执行漏洞

    禅道是第一款国产的开源项目管理软件。它集产品管理、项目管理、质量管理、文档管理、 组织管理和事务管理于一体,是一款专业的研发项目管理软件,完整地覆盖了项目管理的核心流程。 禅道管理思想注重实效,功能完备丰富,操作简洁高效,界面美观大方,搜索功能

    2024年02月11日
    浏览(39)
  • 【漏洞复现】锐捷 EWEB auth 远程命令执行漏洞

    免责声明:文章来源互联网收集整理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。             

    2024年03月12日
    浏览(94)
  • dvwa命令执行漏洞分析

    high难度的源码: $target = trim($_REQUEST[ ‘ip’ ]);是一个接收id值的变量 array_keys()函数功能是返回包含原数组中所有键名的一个新数组。 str_replace() 函数如下,把字符串 “Hello world!” 中的字符 “world” 替换为 “Shanghai”: shell_exec()函数是执行Linux命令函数,可以获取全部数

    2024年02月07日
    浏览(45)
  • 禅道后台命令执行漏洞二

    禅道是第一款国产的开源项目管理软件。它集产品管理、项目管理、质量管理、文档管理、 组织管理和事务管理于一体,是一款专业的研发项目管理软件,完整地覆盖了项目管理的核心流程。 禅道管理思想注重实效,功能完备丰富,操作简洁高效,界面美观大方,搜索功能

    2024年02月11日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包