RCE漏洞

约 3 分钟读完

RCE漏洞

RCE

代码执行漏洞演示

在虚拟机小皮面板网站根目录创建test.php

访问

http://192.168.140.130/test.php?x=phpinfo();

就会显示phpinfo()的信息

于是有这个漏洞就可以在网站写入后门文件

命令执行漏洞演示

在网站根目录写入

访问

http://192.168.140.130/test.php?code=ipconfig

ipconfig会被执行

RCE漏洞形成的条件

  • 可控变量
  • 漏洞函数

image-20241202013305791

知识点:PHP 支持一个执行运算符:反引号(``)。注意这不是单引号!PHP 将尝试将反引号中的内容作为 shell 命令来执行,并将其输出信息返回。

常见RCE漏洞函数

1.系统命令执行函数 system():能将字符串作为OS命令执行,且返回命令执行结果;

exec():能将字符串作为OS命令执行,但是只返回执行结果的最后一行(约等于无回显);

shell_exec():能将字符串作为OS命令执行

passthru():能将字符串作为OS命令执行,只调用命令不返回任何结果,但把命令的运行结果原样输出到标准输出设备上;

popen():打开进程文件指针

proc_open():与popen()类似

pcntl_exec():在当前进程空间执行指定程序;

反引号:反引号内的字符串会被解析为OS命令;

2.代码执行函数 eval():将字符串作为php代码执行;

assert():将字符串作为php代码执行;

preg_replace():正则匹配替换字符串;

create_function():主要创建匿名函数;

call_user_func():回调函数,第一个参数为函数名,第二个参数为函数的参数;

call_user_func_array():回调函数,第一个参数为函数名,第二个参数为函数参数的数组;

可变函数:若变量后有括号,该变量会被当做函数名为变量值(前提是该变量值是存在的函数名)的函数执行;

防御

WAF产品

禁用敏感函数

变量过滤或者固定

← SQL注入基础与分类 XML DTD基础与安全 →