远程命令/代码执行漏洞(RCE)那些事儿

  • Post author:
  • Post category:其他




1:远程代码执行和远程命令执行概念


-RCE(remote command/code execute)









系统命令:windows或者Linux命令




攻击者直接向后台服务器远程注入操作系统命令或者代码,进而控制后台系统。



远程系统命令执行漏洞产生原因?


应用系统从设计上需要给用户提供指定的远程命令操作的接口:

例如:在常见的



路由器、防火墙、入侵检测



等设备的


web管理界面


上,通常会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交之后,后台会对该IP地址进行一次ping测试,并返回测试结果。



****想象一下以下场景


如果设计者在设计该功能时,并没有对其做严格的安全限制,则很有可能会导致攻击者通过该接口提交“意想不到”的命令,后台执行这些命令,从而控制整个后台服务器。


总结:


考虑到一些需求设计,后台有时也会把用户的输入作为代码的一部分进行执行,从而造成了远程代码执行漏洞。无论是使用了代码执行的函数,还是使用了不安全的反序列化等等(都容易产生远程执行漏洞)。




因此,






如果需要给前端用户提供操作类的API接口,一定需要对接口输入的内容进行严格的判断,比如实施严格的白名单策略会是一个比较好的方法。





2:RCE远程命令执行-实验演示







如果后端没有过滤操作(安全限制),即:是否可以执行一些远程命令?









直接把ifconfig执行结果展示出来了









****



除了提交IP地址为还可以通过拼接去执行一些其他的命令,那么这种操作很危险,攻击者可以直接通过这个入口远程控制你的操作系统


等。



分析后端源码:


3:远程代码执行漏洞–实验演示






输入PHP代码:







提交之后得到下面的结果:我们发现提交的PHP代码:phpinfo();被后端给执行了,把相关的结果返回给前端了。如上图所示:





分析源码:





产生原因:




  1. 没有对用户的输入做任何处理,直接参与到操作系统的交互当中去



  2. 使用了“危险”的函数,或者错误的方法。来对用户输入的数据进行了处理。



版权声明:本文为weixin_40667448原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。