21、命令执行

文章目录

  • 一、命令执行概述
    • [1.1 基本定义](#1.1 基本定义)
    • [1.2 原理](#1.2 原理)
    • [1.3 两个条件](#1.3 两个条件)
    • [1.4 命令执行漏洞产生的原因](#1.4 命令执行漏洞产生的原因)
    • [1.5 管道符号和通用命令符](#1.5 管道符号和通用命令符)
  • 二、远程命令执行
    • [2.1 远程命令执行相关函数](#2.1 远程命令执行相关函数)
    • [2.2 远程命令执行漏洞的利用](#2.2 远程命令执行漏洞的利用)
  • 三、系统命令执行
    • [3.1 相关函数](#3.1 相关函数)
    • [3.2 系统命令执行漏洞利用](#3.2 系统命令执行漏洞利用)
  • 四、命令执行漏洞防御

一、命令执行概述

1.1 基本定义

命令执行漏洞是指攻击者可以随意执行系统命令,分为远程命令执行 (远程代码执行)和系统命令执行两类。

1.2 原理

  应用程序有时需要调用一些执行系统命令的函数,如PHP中的systemexecshell_execpassthrupopenproc_popen等,当用户能控制这些函数中的参数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击。

1.3 两个条件

  • 用户能够控制函数的输入
  • 存在可以执行代码或者系统命令的危险函数

1.4 命令执行漏洞产生的原因

  • 由于开发人员编写源码时,没有针对代码中可执行的特殊函数入口做过滤,导致客户端可以提交而已构造语句,并提交服务器执行。
  • 命令注入攻击中,web服务器没有过滤类似systemevalexec等函数,是该漏洞攻击成功的主要原因。

1.5 管道符号和通用命令符

(1)Linux

  • <command 1>;<command 2>命令1执行完,再执行命令2。
  • <command 1> | <command 2>是管道符,命令1的结果作为命令2的输入,直接执行命令2,显示命令2的执行结果。
  • <command 1> || <command 2>当命令1执行出错时,执行命令2。

(2)Windows

  • <command 1> & <command 2>:命令1是否假,都执行命令2。
  • <command 1> && <command 2>:命令1为假直接报命令1的错误,命令2不会被执行。
  • <command 1> | <command 1>:直接执行命令2,显示命令2的执行结果。
  • <command 1> || <command 2>当命令1执行出错时,执行命令2.

(3)通用命令符

  • <command 1> | <command 1>:命令1的结果作为命令2的输入,直接执行命令2,显示命令2的执行结果。
  • <command 1> & <command 2>:命令1和命令2之间不相互影响;
  • <command 1> && <command 2>:命令1为假直接报命令1的错误,命令2不会被执行。

二、远程命令执行

2.1 远程命令执行相关函数

  在PHP中,允许命令执行的函数有:eval()assert()preg_replace()call_user_func()$a($b)。如果页面中存在这些函数并且对用户的输入没有做严格的过滤,那么就有可能造成远程命令执行漏洞。

2.2 远程命令执行漏洞的利用

(1)?a=@eval($_POST[666]); //一句话木马

(2)?a=print(_FILE_); //获取当前绝对路径

(3)?a=var_dump(file_get_contents('<file_path>')); //读取文件

(4)?a=var_dump(file_put_contents($_POST[1],$_POST[2])); //写shell

三、系统命令执行

3.1 相关函数

  允许系统命令执行的函数有:system()exec()shell_exec()passthru()popen()反引号

3.2 系统命令执行漏洞利用

(1)?a=type <file_path> //查看文件

(2)?a=cd //查看当前绝对路径

(3)?a=echo "<?php phpinfo();?>" > <file_path> //写shell

四、命令执行漏洞防御

  • 尽量不要执行外部命令
  • 使用escapeshellarg函数来处理命令参数,escapeshellarg函数会将任何引起参数或命令结束的字符转义;
  • 使用safe_mode_exec_dir指定要执行程序的主目录(php.ini),该函数会将要使用的命令提前放入此路径内。
相关推荐
BullSmall7 小时前
第三方软件安全-Dependency‑Track Docker 部署
安全·docker·容器
AImatters8 小时前
国产算力底座,支撑油气储运数字化迈过关键分水岭
安全·cpu·算力·海光·油气储运
叠叠乐11 小时前
中国移动家庭云电脑window关闭所有安全脚本
安全
Jmyd012311 小时前
实训室的 3D 模型涉及肖像文物,数据安全与合规怎么做?
安全·3d·数据安全·虚拟实训
芯盾时代11 小时前
《金融业网络安全管理办法(征求意见稿)》全条款深度拆解(三)
网络·安全·网络安全
敢敢是只喵i12 小时前
一个本地 AI Agent 要操作多个门店或 SaaS 账号,应该怎样安全切换身份?
人工智能·安全·ai·系统架构·业界资讯
Acrel123413 小时前
DC800V 大规模落地,算力机房安全该如何保障
安全
其实防守也摸鱼13 小时前
权限提升与横向移动:从内网渗透到域控的完整技术图谱
运维·服务器·数据库·安全·github·copilot·渗透
深圳海导科技14 小时前
资产防盗追踪系统:物联网高价值资产安全管理|海导科技navynav
科技·物联网·安全
波多利希最高礼仪的握力器14 小时前
安全复制SCP
linux·服务器·安全