RCE漏洞的前因后果

什么是RCE?

RCE,Remote Command Execute,远程命令执行,又称为远程代码执行。可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。RCE分为远程命令执行ping和远程代码执行evel。

产生背景:应用系统从设计上需要给用户提供指定的远程命令操作的接口,用户通过浏览器提交执行命令,由于服务器没有针对执行函数做过滤,导致了执行了服务器的系统命令。

如何挖掘RCE漏洞?

黑盒测试:网站中有特殊功能,比如Ping、数据库备份等等。

白盒测试:查看命令执行函数是否做过滤。命令执行函数如下:

PHP代码执行函数:eval()、assert()、preg_replace()、create_function()、array_map()、call_user_func()、call_user_func_array()、array_filter()、uasort()

PHP命令执行函数:system()、exec()、shell_exec()、pcntl_exec()、popen()、proc_popen()、passthru()

当后端代码中使用上述函数时,一般都会存在RCE漏洞。

如何利用RCE漏洞?

要想利用RCE漏洞,要先了解关于命令拼接符号的理论知识。

        Windows下命令拼接符号

符号含义例子
&&左边命令执行成功,才执行右边的命令ping 127.0.0.1 && echo 'hi'
&右边的命令执行不受左边命令执行的影响ping 127.0.0.1 & echo 'hi'
|左边命令执行的结果,作为右边命令执行的参数cd /1.txt | cat 
||左边命令执行失败,才执行右边的命令ping 127.0.0.1 || echo 'hi'

        Linux下命令拼接符号

符号含义例子
&&左边命令执行成功,才执行右边的命令ping 127.0.0.1 && echo 'hi'
右边的命令执行不受左边命令执行的影响  简单的命令拼接ping 127.0.0.1 & echo 'hi'
|左边命令执行的结果,作为右边命令执行的参数cd /1.txt | cat 
||左边命令执行失败,才执行右边的命令ping 127.0.0.1 || echo 'hi'
&在后台执行命令

然后,我们找到源码,进行代码审计,找出代码中对输入参数的限制,接着利用“等效替换”的方法,绕过过滤,进而拿到webshell,进行内网横向渗透。下面是一些常见的绕过机制:

  • 空格代替:使用IFS$9、%09、、<>、{,}、%20、${ IFS}、${IFS}来代替空格
  • cat过滤:使用more、less、head、tail
  • 过滤目录分隔符:%0a代替目录分隔符
  • 过滤关键字:采用模糊匹配,正则表达式进行绕过
  • 采用url编码进行绕过

RCE的危害与防御

RCE属于高危漏洞,能直接获取服务器的控制权。常见的危害如下:

1.获取服务器权限

2.获取敏感数据文件

3.写入恶意文件getshell

4.植入木马病毒勒索软件等

防御:

1.尽量不要使用命令执行的函数

2.如果必须使用,需要做白名单处理(白名单策略:不在名单内的 都是拒绝的)

3.用正则表达式对用户输入的内容进行处理

4,使用WAF

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值