RCE:远程命令/代码执行(remote command/code execute)
在 Web 应用中有时候程序员为了考虑灵活性、简洁性,会在代码调用代码或命令执行函数去处理。比如当应用在调用一些能将字符串转化成代码的函数时,没有考虑用户是否能控制这个字符串,将造成代码执行漏洞。同样调用系统命令处理,将造成命令执行漏洞。
一般出现这种漏洞,是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口。
PHP eval()函数
eval() 函数把字符串按照 PHP 代码来计算。
该字符串必须是合法的 PHP 代码,且必须以分号结尾。
如果没有在代码字符串中调用 return 语句,则返回 NULL。如果代码中存在解析错误,则 eval() 函数返回 false。
php代码
如图
php system
(PHP 4, PHP 5, PHP 7, PHP 8)
system — 执行外部程序,并且显示输出
系统命令
如图
漏洞产生
代码层面
可控变量,漏洞函数。
网站的应用决定漏洞走向。
可控变量:网址传参
漏洞漏洞函数:通过函数操作变量
漏洞产生与网站功能相关
漏洞发现
扫描工具 awvs xray
网站漏洞
手工测试 功能点测试
代码审计