命令执行漏洞攻击&修复建议
应用程序有时需要调用一些执行系统命令的函数,如在PHP中,使用system、exec、shell_exec、passthru、popen、proc_popen等函数可以执行系统命令。当黑客能控制这些函数中的参数时,就可以将恶意的系统命令拼接到正常命令中,从而造成命令执行攻击,这就是命令执行漏洞。
命令执行攻击过程
页面1.php提供了ping的功能,当给参数IP输入127.0.0.1时, 程序会执行ping 127.0.0.1,然后将ping的结果返回到页面上,如下图所示。

而如果将参数IP设置为127.0.0.1|dir,然后再次访问,从返回结果可以看到,程序直接将目录结构返回到页面上了,这里就利用了管道符"|” 让系统执行了命令dir,如下图所示。

下面展示了常用的管道符。
Windows系例支持的管道符如下所示。
- "|”:直接执行后面的语句。例如: ping 127.0.0.1|whoami.
- “||”:如果前面执行的语句执行出错,则执行后面的语句,前面的语句只能为假。例如: ping 2|whoami.
- "&”: 如果前面的语句为假则直接执行后面的语句,前面的语句可真可假。例如: ping 127.0.0.1&whoami.
- "&&” :如果前面的语句为假则直接出错,也不执行后面的语句,前面的语句只能为真。例如: ping 127.0.0.1&&whoami.
Linux系统支持的管道符如下所示。
- ";" :执行完前面的语句再执行后面的。例如: ping 127.0.0.1;whoami.
- "|":显示后面语句的执行结果。例如: ping 127.0.0.1|whoami.
- "||":当前面的语句执行出错时,执行后面的语句。例如: ping 1||whoami.
- "&" :如果前面的语句为假则直接执行后面的语句,前面的语句可真可假。例如: ping 127.0.0.1&whoami.
- "&&" :如果前面的语句为假则直接出错,也不执行后面的,前面的语句只能为真。例如: ping 127.0.0.1&&whoami.
命令执行漏洞代码分析
服务端处理ping的代码如下所示,程序获取GET参数IP,然后拼接到system()函数中,利用system()函数执行ping的功能,但是此处没有对参数IP做过滤和检测,导致可以利用管道符执行其他的系统命令,代码如下所示。
<?php
echo system("ping -n 2 " . $_GET['ip']);
?>
命令执行漏洞修复建议
- 尽量不要使用命令执行函数。
- 客户端提交的变量在进入执行命令函数前要做好过滤和检测。
- 在使用动态函数之前,确保使用的函数是指定的函数之一。
- 对PHP语言来说,不能完全控制的危险函数最好不要使用。
命令执行漏洞攻击&修复建议的更多相关文章
- XXE漏洞介绍 & XXE漏洞攻击 & 修复建议
介绍XXE漏洞 XML外部实体注入(XML External Entity)简称XXE漏洞,XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是-种允许用户对自己的标记语 ...
- 高危Windows系统 SMB/RDP远程命令执行漏洞 手工修复办法
1.Windows Update更新补丁方式: 更新方法:点击“开始”->“控制面板”->“Windows Update” ,点击“检查更新”-“安装更新”: 2.检查安装结果: 点击“ ...
- [web安全原理]PHP命令执行漏洞基础
前言 PHP命令执行漏洞 应用程序的某些功能功能需要调用可以执行系统命令的函数,如果这些函数或者函数的参数被用户控制,就有可能通过命令连接符将恶意命令拼接到正常的函数中,从而随意执行系统命令,这就是命 ...
- 19.Imagetragick 命令执行漏洞(CVE-2016–3714)
Imagetragick 命令执行漏洞(CVE-2016–3714) 漏洞简介: Imagetragick 命令执行漏洞在16年爆出来以后,wooyun上面也爆出了数个被该漏洞影响的大厂商,像腾讯, ...
- NETGEAR 系列路由器命令执行漏洞简析
NETGEAR 系列路由器命令执行漏洞简析 2016年12月7日,国外网站exploit-db上爆出一个关于NETGEAR R7000路由器的命令注入漏洞.一时间,各路人马开始忙碌起来.厂商忙于声明和 ...
- 【漏洞预警】SaltStack远程命令执行漏洞 /tmp/salt-minions
前言: 2020年5月3日,阿里云应急响应中心监测到近日国外某安全团队披露了SaltStack存在认证绕过致命令执行漏洞以及目录遍历漏洞.在多个微信群和QQ群已经有群友反映中招,请马上修复. 以下 ...
- Spring Framework 远程命令执行漏洞(CVE-2022-22965)
Spring Framework 远程命令执行漏洞 (CVE-2022-22965) 近日,Spring 官方 GitHub issue中提到了关于 Spring Core 的远程命令执行漏洞,该漏洞 ...
- struts2远程命令执行漏洞S2-045
Apache Struts2最新漏洞(CVE-2017-5638,S02-45) struts2远程命令执行漏洞S2-045 Apache Struts 2被曝存在远程命令执行漏洞,漏洞编号S2-04 ...
- WordPress <= 4.6 命令执行漏洞(PHPMailer)复现分析
漏洞信息 WordPress 是一种使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设属于自己的网站.也可以把 WordPress 当作一个内容管理系统(C ...
随机推荐
- zero:seo优化的三部曲
http://www.wocaoseo.com/thread-230-1-1.html 理解用户的需求.了解搜索引擎的原理.明白如何通过搜索引擎优化对网站产生价值,这是SEO学习中应该陆续深入的三个部 ...
- WPF新手快速入门系列 2.绑定
[概要] 上一章讲了布局,按照市面上的书籍每一本讲的顺序都不一样,本系列是希望大家能快速上手去应对工作需要,所以本章就直接开始讲绑定. 如有学习过程中想交流学习.疑惑解答可以来此QQ群交流:58074 ...
- 安装oracleXE快捷版(一)
yum找不到包,参考了一些文章,用iso上的包安装了.在文章后面贴有我实际的操作(黑体)和日志. 更换yum源https://www.cnblogs.com/zrxuexi/p/11587173.ht ...
- Android开发工程师面试题之handler详解。android程序员,android开发面试资料,详解
Message:消息:其中包含了消息ID,消息对象以及处理的数据等,由MessageQueue统一列队,终由Handler处理 Handler:处理者:负责Message发送消息及处理.Handler ...
- 深入了解Netty【五】线程模型
引言 不同的线程模型对程序的性能有很大的影响,Netty是建立在Reactor模型的基础上,要搞清Netty的线程模型,需要了解一目前常见线程模型的一些概念. 具体是进程还是线程,是和平台或者编程语言 ...
- ES6特性整理
ESMAScript6.0 ES6 兼容 IE10+ .Chrome.Firefox 要想兼容IE10以下的有两种方法: 用 babel 工具 borwer.js ,在 script 标签里添加 ty ...
- js去掉最右边的逗号
str=(str.substring(str.length-1)==',')?str.substring(0,str.length-1):str;
- java输出1-100之间的数并求和for+while+do while实现
public static void main(String args[]) {//do while int sum = 0; //当前之和 int i = 1; //加数 do { if (i%2= ...
- Spring Boot 启动第一个页面(Spring二)
在前面的文章里我配置好了spring boot的环境,并选择STS开发工具 具体文章见:https://blog.csdn.net/qq_38175040/article/details/105481 ...
- python 3 for与while嵌套