命令执行漏洞

简介: 命令执行漏洞

简介

命令执行漏洞是指应用程序在调用执行系统命令的函数时,未对用户输入进行严格的过滤和验证,导致恶意用户可以通过构造恶意命令参数来执行任意系统命令。这种漏洞可能会导致公鸡者获取敏感信息、执行恶意操作或者控制服务器等危害。

命令执行漏洞的分类主要有两种情况:

代码层过滤不严:开发人员在编写代码时没有对用户输入进行充分的验证和过滤,导致恶意用户可以通过构造恶意命令参数来执行任意系统命令。

命令拼接符:恶意命令通常是拼接在正常命令后面,公鸡者利用命令拼接符来构造恶意命令参数,从而执行任意系统命令。

在Windows系统中,常见的命令拼接符有:

&:无论前一个命令执行成功与否,都会执行后一个命令。

&&:具有短路效果,如果前一个命令执行失败,则后面的命令不会执行。

|:将前一个命令的输出作为后一个命令的输入执行。

||:表示前一个命令执行失败,然后才执行后一个命令。

为了防止命令执行漏洞,开发人员应该对用户输入进行严格的验证和过滤,避免直接拼接用户输入到系统命令中。可以使用安全的API或者库来执行系统命令,并且避免使用可执行命令的函数。

image.png

命令执行漏洞是一种常见的安全漏洞,它允许公鸡者通过执行恶意命令来获取系统权限或者执行未授权的操作。该漏洞通常出现在应用程序中,当应用程序接受用户输入并将其作为命令或命令参数传递给底层操作系统时,如果没有对用户输入进行充分的验证和过滤,公鸡者就可以通过构造恶意输入来执行任意命令。

公鸡者可以利用命令执行漏洞来执行以下操作:

执行系统命令:公鸡者可以通过注入恶意命令来执行系统命令,例如查看敏感文件、修改系统配置等。

执行远程命令:公鸡者可以通过注入远程命令来执行远程操作,例如下载恶意文件、执行远程代码等。

执行特权命令:如果应用程序在特权用户或管理员权限下运行,公鸡者可以通过命令执行漏洞来获取特权权限,从而完全控制系统。

命令执行漏洞的原理是由于应用程序没有对用户输入进行充分的验证和过滤,导致用户输入被当作命令或命令参数直接传递给底层操作系统。公鸡者可以通过构造恶意输入来绕过应用程序的安全机制,从而执行任意命令。

为了防止命令执行漏洞,开发人员应该始终对用户输入进行严格的验证和过滤,并使用安全的API或函数来执行系统命令。例如,可以使用参数化查询或预编译语句来防止SQL注入漏洞,使用安全的文件操作函数来防止路径遍历漏洞,以及使用安全的命令执行函数来防止命令执行漏洞

漏洞分类

1、远程命令执行漏洞

概念:

远程命令执行漏洞,指用户通过浏览器提交执行操作命令, 由于服务器端,没有针对执行函数做过滤,就执行了恶意命令

2、远程代码执行漏洞

概念:

代码执行漏洞也叫代码注入漏洞,指用户通过浏览器 提交执行恶意脚本代码,执行恶意构造的脚本代码

认识命令连接符

1、window层面

&:无论左边是false还是true,右边都执行,按顺序执行

&&:具有短路效果,左边是false,右边不执行  

|:表示A命令语句的输出,作为B命令语句的输入执行。当A为false的时候将不会执行

||:A||B,表示A命令语句执行失败,然后才执行B命令语句。  

2、linux层面

‘&‘:在后台运行  

';':分号(;) 可以进行多条命令的无关联执行,每一条执行结果不会影响其他命令的执行  

'&&':按照顺序执行,如果前面应该正确就会执行下一个,如果错误那么就不会执行下一个  

'||':如果 || 左边的命令执行失败(返回1表示失败),才执行||右边的命令,否则不执行右边的命令,具有短路功能。  

'()':如果想执行几个命令,则需要用命令分隔符分号隔开每个命令,并使用圆括号()把所有命令组合起  

命令执行常用函数

在 PHP 中,一些常用的可以执行系统命令的函数包括:

system():执行系统命令,并直接输出结果。

shell_exec():执行系统命令,并返回输出结果。

exec():执行系统命令,并返回输出结果和执行结果。

passthru():执行系统命令,并直接输出结果。

popen():打开一个管道,并执行指定命令。

proc_open():通过指定命令打开一个进程,并建立管道进行通信。

反引号其实调用的是shell_exec()函数,当反引号中的变量可控时就会造成命令执行,且无回显。

pcntl_exec():执行指定的可执行文件,并用该文件替换当前进程。(在 Linux/Unix 系统中执行指定的可执行文件,并替换当前进程。)

expect_popen():通过 spawn 的方式启动一个进程,并对其进行交互式控制。(使用 Tcl 的 expect 扩展执行交互式命令。)

dl():装载指定的动态链接库文件,并执行其中的函数。(5.4已经移弃)

posix_spawn():启动一个新的进程,并指定要执行的程序文件名、命令行参数等。(针对 POSIX 环境)

这些函数都可以用于执行系统命令,但是都存在着安全风险。在编写 PHP 代码时,应该避免使用这些函数或者对用户输入进行严格的验证和过滤,以防止命令注入公鸡。

低安全级别

image.png

通过burp截取请求页面

image.png

相关文章
|
6月前
|
人工智能 编解码 芯片
告别低效沟通|让技术提问不再头疼-这套高效AI提问模板来帮你
不会向ai提问,不知道怎么提问的 可以看看
20556 1
告别低效沟通|让技术提问不再头疼-这套高效AI提问模板来帮你
|
Kubernetes Apache 对象存储
海程邦达基于Apache Paimon+Streampark实现 Streaming warehouse的实战应用(中)
海程邦达基于Apache Paimon+Streampark实现 Streaming warehouse的实战应用
496 0
|
30天前
|
人工智能 运维 安全
2025年工作流自动化的15个趋势,如何影响企业的业务?
越来越多企业正通过自动化与智能化升级工作模式,聚焦科技、制造、医疗三大领域。从RPA、AI到低代码平台,技术赋能提升效率、保障安全;智能制造优化运维;智慧医疗减轻负担。超自动化推动流程互联,让员工更专注创新与核心事务,实现高效协同与可持续发展。
210 1
|
1月前
|
Java API 开发工具
百宝箱开放平台 ✖️ Java SDK
百宝箱提供Java SDK,支持开发者集成其开放能力。需先发布应用,准备Java 8+及Maven环境,通过添加依赖安装SDK,并初始化客户端调用对话型或生成型智能体,实现会话管理、消息查询与文件上传等功能。
1251 0
百宝箱开放平台 ✖️ Java SDK
|
6月前
|
机器学习/深度学习 人工智能 监控
什么是信息化?什么是数字化?这两者有什么联系和区别?
本文探讨了信息化与数字化的概念、联系及区别。信息化是将线下业务流程线上化,提升效率;数字化则基于大数据和新技术优化企业运营模式,重构商业逻辑。两者层层递进,信息化为基础,数字化为升级。文中通过实例对比二者在理念、方法、数据应用等方面差异,并强调数字化转型需明确目标,借助低代码等工具实现能力重构,推动企业全价值链连通与效率提升。总结指出,真正的转型是能力的全面提升,而非单纯技术替换。
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
AI Compass前沿速览:字节Seedream4.0、Qwen3-Max、EmbeddingGemma、OneCAT多模态、rStar2-Agent
AI Compass前沿速览:字节Seedream4.0、Qwen3-Max、EmbeddingGemma、OneCAT多模态、rStar2-Agent
AI Compass前沿速览:字节Seedream4.0、Qwen3-Max、EmbeddingGemma、OneCAT多模态、rStar2-Agent
|
7月前
|
机器学习/深度学习 人工智能 自然语言处理
人工智能应用领域有哪些
本文全面探讨了人工智能(AI)的应用领域和技术核心,涵盖医疗、交通、金融、教育、制造、零售等多个行业,并分析了AI技术的局限性及规避策略。同时,介绍了生成式人工智能认证项目的意义与展望。尽管AI发展面临数据依赖和算法可解释性等问题,但通过优化策略和经验验证,可推动其健康发展。未来,AI将在更多领域发挥重要作用,助力社会进步。
|
4月前
|
人工智能 Android开发 iOS开发
安卓版快捷指令,加了AI语音可以一句话操作v0.2.7
Shortcuts for Android(SFA)是一款安卓自动化工具,支持语音创建快捷指令,实现听歌、导航、发消息等操作。操作简单,提升效率,快来体验语音控制的便捷!
732 0
安卓版快捷指令,加了AI语音可以一句话操作v0.2.7
|
5月前
|
API 开发工具 开发者
HarmonyOS NEXT实战:拨打电话
本课程介绍如何在HarmonyOS SDK中使用Telephony Kit实现拨打电话功能。通过CallPhoneDemoPage示例,讲解如何输入电话号码并调用makeCall接口拨号,涉及call模块的使用及设备通话能力检测。
7844 0

热门文章

最新文章