网络安全——命令执行漏洞(RCE)详解

简介: 我也想好好捋一下其他类型的漏洞,同时也分享出来,希望也能帮到大家,今天的内容是命令执行

我感觉自己网安的学习遇到了问题,会花很多时间去挖洞,但是只能挖到注入和XSS,还都是比较简单的那种(cnvd都不收的),但是我明明还学了很多其他的漏洞,难道是我没遇到吗?我想也许是经验的欠缺和对其他漏洞理解的不全面吧

很多人都说这个阶段需要沉定来积累经验靶场,漏洞复现和总结经验才是当前的中心任务,所以我也想好好捋一下其他类型的漏洞,同时也分享出来,希望也能帮到大家,今天的内容是命令执行漏洞

目录

一:简述命令执行漏洞

1.形成原因

2.漏洞分类

1、代码层过滤不严     

2、系统的漏洞造成命令注入     

3、调用的第三方组件存在代码执行漏洞     

二:命令执行漏洞的利用条件 

三:可能存在命令执行漏洞的函数(PHP)

1.利用系统函数实现命令执行的函数

 2.直接执行系统命令的代码函数

四:命令拼接符号

1.windows的系统命令拼接符 

2.linux的系统命令拼接符 

五:常用绕过防护的方法

1.通配符 

2.连接符

3.未初始化变量 

六:常见位置 

七:修复方案


一:简述命令执行漏洞

1.形成原因

应用有时需要调用一些执行系统命令的函数,如PHP中的system、exec、shell_exec、passthru、popen、proc_popen等,当用户能控制这些函数的参数,并且开发人员对这个参数没有严格的过滤时就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击,这就是命令执行漏洞。

2.漏洞分类

1、代码层过滤不严    

    商业应用的一些核心代码封装在二进制文件中,在web应用中通过system函数来调用:                  

system("/bin/program --arg $arg");

2、系统的漏洞造成命令注入    

     比如:bash破壳漏洞(CVE-2014-6271)

3、调用的第三方组件存在代码执行漏洞     

   如wordPress中用来处理图片的imageMagick组件    

   JAVA中的命令执行漏洞(struts2/ElasticsearchGroovy等)    

   ThinkPHP5.x的命令执行

二:命令执行漏洞的利用条件

根据上面形成原因中我加粗的部分,想来大家应该也明白了利用命令执行漏洞的前提条件,就是三点

1.开发人员调用了能够执行系统命令的函数

2.这个函数的参数可控(即用户能够控制)

3.开发人员没有对该函数的参数进行过滤或过滤不严

满足上面的条件,才能称之为漏洞执行命令,当然“过滤不严”的程度就需要根据你自己的绕过能力来自我评判了,绕过方式待会我们也会讲到一些

而这些        

三:可能存在命令执行漏洞的函数(PHP)

1.利用系统函数实现命令执行的函数

eval()、assert()、preg_replace()、call_user_func()

如果页面中存在以上这些函数并且对于用户的输入没有做严格的过滤,那么就可能造成远程命令执行漏洞,除此以外还有其他函数

ob_start()、unserialize()、creat_function() 、usort()、uasort()、uksort()、 array_filter()、 array_reduce()、 array_map()

2.直接执行系统命令的代码函数

system(),exec(),shell_exec(),passthru(), pcntl_exec(), popen(), proc_open(),反引号

四:命令拼接符号

如果问命令执行漏洞中一定要会的东西是什么,那一定是命令拼接符,因为恶意命令通常是拼接在正常命令后面,会用命令拼接符才是你利用命令执行漏洞的基础,这里也为大家准备了windowslinux常用的拼接符

1.windows的系统命令拼接符

拼接符

示例

拼接符的详解

&

A&B

无论A是false还是true,B都执行,即互不影响

&&

A&&B

具有短路效果,A是false,B就不执行,有短路效果

|

A|B

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

||

A||B

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

2.linux的系统命令拼接符

linux的命令有点复杂,需要给出示例图部分同学才能理解,一共有5个,下面我们一个一个介绍

第一个是“&”:     ‘&’的作用是使命令在后台运行。只要在命令后面跟上一个空格和 ‘&’。你                                可以一口气 在后台运行多个命令。需要停止,就是kill -s  进程号,展示如                              下图

第二个是“;”:      就是分号,作用就是可以进行多条命令的无关联执行,每一条执行结果                                   互不影响,示例如下

第三个是“&&”:   这个没啥讲的,跟windows的用法和功能都一样,都是左边成功才执行                                   右边,这里就不给例子了

第四个是“||” :     这个也跟windows一样,前面执行失败才执行后面

第五个是“()”:       如果想执行几个命令,则需要用命令分隔符分号隔开每个命令,并使用                                   圆括号()把所有命令组合起来,示例如下:

3.简述

常用的命令拼接符这里都涵盖完了,但是要注意的是,使用时不要局限于单个的,简单的用法,因为很多过滤参数的方式都是识别对应的拼接符,所以要思维变通,很多时候,大量拼接符层层嵌套往往会有出其不意的效果

比如上面这个圆括号的使用例子,意思就是当echo 1 执行成功后会执行后面的命令,把echo 1输出到 11.txt ,然后复制11.txt到根目录。 结合||和&&可以实现复杂的功能。

五:常用绕过防护的方法

上面就讲到了本文会提一些过滤方法,所以这里就讲一讲命令执行漏洞中常用的一些过滤方法,其实本质都是模糊匹配,下面给大家详细讲讲几种方法

1.通配符

常见的通配符

符号

含义

匹配单个字符如果匹配多个字符,就需要多个?连用

*

*代表任意数量的字符

[ ]

代表一定有一个在括号内的字符(非任意字符)。例如 [abcd] 代表一定有一个字符, 可能是 a, b, c, d 这四个任何一个

使用示例

一个常用的读取密码命令如下

cat /etc/passwd

使用了通配符之后,他就可能有很多种变化,比如这两种,而这些亲测都是可以使用

cat /?tc/?as?wd

cat /*tc/*as*wd

这里需要注意的也是一样,不要局限自己的思维,几种通配符也是可以搭配使用的

2.连接符

常见连接符

单双引号反斜杠 " " ‘ ’ 如:/'b'i'n'/'c'a't' /'e't'c'/'p'a's's'w'd

使用示例

3.未初始化变量

简介

未初始化的变量值都是null,例如a , a,a,b,在linux环境下输出都为null ,所以可以用未初始化变量加在一些命令的末尾,来绕过一些黑名单

使用示例

cat$a /etc$a/passwd$a

六:常见位置

各种cms框架的命令执行漏洞是最多的,着重在这些地方找,除此之外就是插件位置,插件因为各种原因经常也需要执行系统命令,当然其他的地方也有,只是说这两个位置最多

七:修复方案

1、各种框架、插件等位置都有可能出现命令执行,升级到新版本,多打补丁

2、关注行业最新安全动态,一旦爆发命令执行漏洞,迅速修复,避免造成更大影响

3、少用框架/CMS

4、可以过滤一些符号从而减少一些危险

5、安全配置好php相关参数      

       通过Php配置文件里面有个disable_functions = 配置,这个禁止某些php函数, 服务器便是用这个来禁止php的执行命令函数。

       例如: disable_functions=system,passthru,shell_exec,exec,popen 便禁止了用这些函数来执行系统命令

6、升级中间件

7、严格控制传入变量,严禁使用魔法函数

今日份学习结束,网络安全将是我一生奋斗的方向,,谢谢大家的阅读,一起加油

相关文章
|
1月前
|
NoSQL 关系型数据库 MySQL
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
176 56
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
|
1月前
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。
|
1月前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
59 10
|
1月前
|
存储 安全 网络安全
网络安全的盾与剑:漏洞防御与加密技术的实战应用
在数字化浪潮中,网络安全成为保护信息资产的重中之重。本文将深入探讨网络安全的两个关键领域——安全漏洞的防御策略和加密技术的应用,通过具体案例分析常见的安全威胁,并提供实用的防护措施。同时,我们将展示如何利用Python编程语言实现简单的加密算法,增强读者的安全意识和技术能力。文章旨在为非专业读者提供一扇了解网络安全复杂世界的窗口,以及为专业人士提供可立即投入使用的技术参考。
|
1月前
|
安全 网络安全 数据安全/隐私保护
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
在数字化时代,网络安全和信息安全已成为我们日常生活中不可或缺的一部分。本文将深入探讨网络安全漏洞、加密技术和安全意识等方面的问题,并提供一些实用的建议和解决方案。我们将通过分析网络攻击的常见形式,揭示网络安全的脆弱性,并介绍如何利用加密技术来保护数据。此外,我们还将强调提高个人和企业的安全意识的重要性,以应对日益复杂的网络威胁。无论你是普通用户还是IT专业人士,这篇文章都将为你提供有价值的见解和指导。
|
1月前
|
安全 网络安全 数据安全/隐私保护
网络安全与信息安全:漏洞、加密与意识的艺术
在数字世界的迷宫中,网络安全和信息安全是守护者之剑。本文将揭示网络漏洞的面纱,探索加密技术的奥秘,并强调安全意识的重要性。通过深入浅出的方式,我们将一起走进这个充满挑战和机遇的领域,了解如何保护我们的数字身份不受威胁,以及如何在这个不断变化的环境中保持警惕和适应。
43 1
|
1月前
|
存储 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
在数字化时代,网络安全和信息安全已经成为了我们生活中不可或缺的一部分。本文将介绍网络安全的基本概念,包括网络安全漏洞、加密技术以及如何提高个人和组织的安全意识。我们将通过一些实际案例来说明这些概念的重要性,并提供一些实用的建议来保护你的信息和数据。无论你是网络管理员还是普通用户,都可以从中获得有用的信息和技能。
33 0
|
1月前
|
安全 网络安全 数据安全/隐私保护
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
在数字化时代,网络安全和信息安全已成为全球关注的焦点。本文将探讨网络安全漏洞、加密技术以及提升安全意识的重要性。通过深入浅出的解释和实际案例分析,我们将揭示网络攻击的常见手段,介绍加密技术如何保护数据安全,并强调个人和企业应如何提高安全防范意识。无论你是IT专业人士还是普通网民,这篇文章都将为你提供宝贵的信息和建议,帮助你在网络世界中更安全地航行。
|
1月前
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
73 17
|
1月前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
在数字化时代,网络安全和信息安全已成为我们生活中不可或缺的一部分。本文将介绍网络安全漏洞、加密技术和安全意识等方面的内容,并提供一些实用的代码示例。通过阅读本文,您将了解到如何保护自己的网络安全,以及如何提高自己的信息安全意识。
66 10