RCE远程 代码/命令 执行及文件包含

本文详细解析RCE漏洞,探讨其如何通过远程命令执行和代码执行漏洞影响服务器控制,以及如何通过安全措施如白名单策略避免风险。案例演示和安全验证方法也一并涵盖。

RCE(remote command/code execute)概述
RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。

远程系统命令执行
一般出现这种漏洞,是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口。
比如我们常见的路由器、防火墙、入侵检测等设备的web管理界面上
一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交后,后台会对该IP地址进行一次ping测试,并返回测试结果。 而如果,设计者在完成该功能时,没有做严格的安全控制,则可能会导致攻击者通过该接口提交“意想不到”的命令,从而让后台进行执行,从而控制整个后台服务器。
现在很多的甲方企业都开始实施自动化运维,大量的系统操作会通过"自动化运维平台"进行操作。 在这种平台上往往会出现远程系统命令执行的漏洞。

漏洞验证

在命令执行漏洞中,通过&、&&、|、||、;等符合拼接执行的命令

例1:192.168.10.7 | net user test1 123.com /add   --->创建用户test1 密码:123.com

创建成功后通过:net user 查看系统中所有用户

例2:127.0.0.1 & ipconfig   --->这个时候会同时执行ping 和 ipconfig命令

Windows:
“|”:直接执行后面的语句。
“||”:如果前面执行的语句出错,则执行后面的语句。前面的语句只能为假。
“&”:如果前面的语句为假则直接执行后面的语句。前面的语句可真可假。
“&&”:如果前面语句为假则直接出错,也不执行后面的语句。前面的语句只能为真。
Linux:
“;”:执行完前面的语句再执行后面的。
“|”、“||”、“&”、“&&”和Windows使用方法相同。

远程代码执行
同样的道理,因为需求设计,后台有时候也会把用户的输入作为代码的一部分进行执行,也就造成了远程代码执行漏洞。不管是使用了代码执行的函数,还是使用了不安全的反序列化等等。
因此,如果需要给前端用户提供操作类的API接口,一定需要对接口输入的内容进行严格的判断,比如实施严格的白名单策略会是一个比较好的方法。

直接查看源码,发现后台使用了evel()函数来处理用户输入的内容,如果不是evel要处理的格式就输出“你喜欢的字符还挺奇怪的!”。因此我们可以构造一个特殊内容触发evel函数执行,我们尝试输入:phpinfo(),页面直接将phpinfo()的内容显示了出来。

 

文件包含 

文件包含,是一个功能。在各种开发语言中都提供了内置的文件包含函数,其可以使开发人员在一个代码文件中直接包含(引入)另外一个代码文件。

例如:

PHP中提供了:include(),include_once()

                   require(),require_once()

这些文件包含函数,在代码设计中被经常使用到。

大多数情况下,文件包含函数中包含的代码文件是固定的,因此也不会出现安全问题。但是,有些时候,文件包含的代码文件被写成了一个变量,且这个变量可以由前端用户传进来,

这种情况下,如果没有做足够的安全考虑,则可能会引发文件包含漏洞。 攻击着会指定一个“意想不到”的文件让包含函数去执行,从而造成恶意操作。

根据不同的配置环境,文件包含漏洞分为如下两种情况:

1、本地文件包含漏洞

    仅能够对服务器本地的文件进行包含,由于服务器上的文件并不是攻击者所能够控制的,因此该情况下,攻击着更多的会包含一些 固定的系统配置文件,从而读取系统敏感信息。很多时候本地文件包含漏洞会结合一些特殊的文件上传漏洞,从而形成更大的威力。
2、远程文件包含漏洞

  能够通过url地址对远程的文件进行包含,这意味着攻击者可以传入任意的代码,这种情况没啥好说的,准备挂彩。因此,在web应用系统的功能设计上尽量不要让前端用户直接传变量给包含函数,如果非要这么做,也一定要做严格的白名单策略进行过滤。

更简洁的:

两者区别:

命令执行:指用户通过浏览器提交执行恶意操作命令

代码执行:指用户通过浏览器 提交执行恶意脚本代码

RCE(Remote Code Execution)即远程代码执行,是指攻击者能够通过Web应用程序在远程服务器上执行任意操作系统命令安全缺陷,这类漏洞通常源于应用程序将用户可控的输入直接拼接到系统命令执行,且缺乏足够的过滤和验证 [^1]。 ### RCE代码命令执行漏洞原理与危害 正常情况下,用户访问网站或使用应用程序,只能按照开发者设定的功能操作。但存在RCE漏洞时,攻击者能打破限制,在目标服务器上执行自己编写的代码,可能导致数据泄露、系统被控制等严重后果 [^2]。 ### 攻击方式 - **利用未过滤的用户输入**:如果应用程序直接将用户输入拼接到系统命令执行,攻击者可构造恶意命令。例如,在一个允许用户输入文件名进行文件查看的功能中,若代码如下: ```python import os filename = input("请输入文件名: ") os.system(f"cat {filename}") ``` 攻击者可输入 `; rm -rf /`(在类Unix系统),实现删除系统文件的操作。 - **利用脚本语言特性**:一些脚本语言如PHP、Python等,若代码编写不当,可被攻击者利用。例如PHP的`eval`函数: ```php <?php $code = $_GET['code']; eval($code); ?> ``` 攻击者可通过URL传递恶意代码,如`http://example.com/test.php?code=system('ls');` 执行系统命令。 ### 防御措施 - **输入验证和过滤**:对用户输入进行严格验证和过滤,只允许合法字符。例如在Python中: ```python import re filename = input("请输入文件名: ") if re.match(r'^[a-zA-Z0-9_.]+$', filename): os.system(f"cat {filename}") else: print("输入包含非法字符") ``` - **避免直接执行用户输入**:尽量不将用户输入直接拼接到系统命令执行,可使用更安全的方式,如使用参数化查询。 - **最小化权限原则**:运行应用程序的用户账户应具有最小的系统权限,降低漏洞利用后的危害。 ### 应用场景 - **安全测试**:安全人员可利用RCE漏洞检测工具和技术,对自己的系统进行漏洞扫描和测试,发现潜在安全问题。 - **应急响应**:在发现系统被攻击后,通过分析RCE攻击的方式和路径,采取相应的应急措施,如修复漏洞、清除恶意代码等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值