1:远程代码执行和远程命令执行概念
-RCE(remote command/code execute)
:
系统命令:windows或者Linux命令
攻击者直接向后台服务器远程注入操作系统命令或者代码,进而控制后台系统。
远程系统命令执行漏洞产生原因?
应用系统从设计上需要给用户提供指定的远程命令操作的接口:
例如:在常见的
路由器、防火墙、入侵检测
等设备的
web管理界面
上,通常会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交之后,后台会对该IP地址进行一次ping测试,并返回测试结果。
****想象一下以下场景
:
如果设计者在设计该功能时,并没有对其做严格的安全限制,则很有可能会导致攻击者通过该接口提交“意想不到”的命令,后台执行这些命令,从而控制整个后台服务器。
总结:
考虑到一些需求设计,后台有时也会把用户的输入作为代码的一部分进行执行,从而造成了远程代码执行漏洞。无论是使用了代码执行的函数,还是使用了不安全的反序列化等等(都容易产生远程执行漏洞)。
因此,
如果需要给前端用户提供操作类的API接口,一定需要对接口输入的内容进行严格的判断,比如实施严格的白名单策略会是一个比较好的方法。
2:RCE远程命令执行-实验演示
如果后端没有过滤操作(安全限制),即:是否可以执行一些远程命令?
直接把ifconfig执行结果展示出来了
****
除了提交IP地址为还可以通过拼接去执行一些其他的命令,那么这种操作很危险,攻击者可以直接通过这个入口远程控制你的操作系统
等。
分析后端源码:
3:远程代码执行漏洞–实验演示
输入PHP代码:
提交之后得到下面的结果:我们发现提交的PHP代码:phpinfo();被后端给执行了,把相关的结果返回给前端了。如上图所示:
分析源码:
产生原因:
-
没有对用户的输入做任何处理,直接参与到操作系统的交互当中去
-
使用了“危险”的函数,或者错误的方法。来对用户输入的数据进行了处理。