RCE漏洞
RCE漏洞

代码执行漏洞演示
在虚拟机小皮面板网站根目录创建test.php
访问
就会显示phpinfo()的信息
于是有这个漏洞就可以在网站写入后门文件
命令执行漏洞演示
在网站根目录写入
访问
ipconfig会被执行
RCE漏洞形成的条件
- 可控变量
- 漏洞函数

知识点: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产品
禁用敏感函数
变量过滤或者固定