RCE概述:
RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统
远程系统命令执行:
一般出现这种漏洞,是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口
比如我们常见的路由器、防火墙、入侵检测等设备的web管理界面上
一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交后,后台会对该IP地址进行一次ping测试,并返回测试结果。 而,如果,设计者在完成该功能时,没有做严格的安全控制,则可能会导致攻击者通过该接口提交“意想不到”的命令,从而让后台进行执行,从而控制整个后台服务器
输入127.0.0.1&ipconfig
可以发现该漏洞把&后面的ipconfig也执行了(有?的原因不详,估计是编码转换的问题)
远程代码执行:
同样的道理,因为需求设计,后台有时候也会把用户的输入作为代码的一部分进行执行,也就造成了远程代码执行漏洞。 不管是使用了代码执行的函数,还是使用了不安全的反序列化等等。
因此,如果需要给前端用户提供操作类的API接口,一定需要对接口输入的内容进行严格的判断,比如实施严格的白名单策略会是一个比较好的方法。
输入phpinfo();
成功执行
RCE漏洞产生的根本原因:
服务器没有针对执行函数做过滤,导致在没有指定绝对路径的情况下就执行命令。
如何挖掘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()
挖到这个漏洞能做什么:
远程命令、代码执行(单凭这一点能做的事情就不少,如下)
获取敏感数据、文件、服务器信息
写入恶意文件Getshell
漏洞造成的危害:
RCE漏洞造成的危害不言而喻,高危漏洞。能直接获取服务器的控制权
发现此漏洞,该怎么修复:
通用的修复方案,升级插件/框架/服务最新版。
如若必须使用危险函数,那么针对危险函数进行过滤。
如何防范此漏洞:
在进入执行命令函数前进行严格的检测和过滤;
尽量不要使用命令执行函数,不能完全控制的危险函数最好不使用;
对于eval函数,一定要保证用户不能轻易接触eval的参数或者用正则严格判断输入的数据格式;
云WAF
Comments NOTHING