Pikachu:RCE(Remote command/code execute)

概述:

  RCE(Remote command/code execute)漏洞,意为“远程命令/代码执行”,分为远程命令执行ping和远程代码执行evel。可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。

  远程命令执行,漏洞出现的原因,是没有在输入口做输入处理,应用系统从设计上需要给用户提供指定的远程命令操作的接口。我们常见的路由器、防火墙、入侵检测等设备的web管理界面上,一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交后,后台会对该IP地址进行一次ping测试,并返回测试结果。如果,设计者在完成该功能时,没有做严格的安全控制,则可能会导致攻击者通过该接口提交“意想不到”的命令,从而让后台进行执行,从而控制整个后台服务器 。其实这就是一个接口,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统,这就是RCE漏洞。

  远程代码执行也是同样的道理,因为需求设计,后台有时候也会把用户的输入作为代码的一部分进行执行,也就造成了远程代码执行漏洞。 不管是使用了代码执行的函数,还是使用了不安全的反序列化等等。
  因此,如果需要给前端用户提供操作类的API接口,一定需要对接口输入的内容进行严格的判断,比如实施严格的白名单策略会是一个比较好的方法。

Exec“ping”(远程命令执行):

  我们进入页面,提示我们在文本框中写入ip地址,我们就写入127.0.0.1本地地址,成功ping通:

  接下来我们尝试在127.0.0.1后面使用拼接符号,然后添加命令来实现我们相应的目的,这里我们后面跟一个ipconfig,读取网卡的信息,我们看到ip等信息被输出出来:

  127.0.0.1 & ipconfig    

   很明显只是直接进行了拼接,导致产生了注入漏洞,我们来看一下源代码(路径如下图所示),使用了shell_exec()函数,直接将ip和命令拼接起来,实现了远程的命令执行:

Exec“evel”(远程代码执行)

  进入页面,提示我们提交一个喜欢的字符串,随便输入一个,这里我输入我的名字:

 

 

   返回的结果说我奇怪,他这个结果也蛮奇奇怪怪的。我们来看看源码(路径如下图所示):

  源码中就体现出来了,没有对输入字符进行过滤,直接在下面的网页代码就引用了,下面用eval函数判断,如果报错就会输出‘你喜欢的字符还挺奇怪的’,不报错的话就会执行注入的代码。所以这存在一个漏洞,可以将我们的代码执行,那还客气啥,直接注入代码,我们这里输入一个php的函数:

  phpinfo();(一定要加分号。因为它是语句)   

  它会返回 PHP 所有相关信息。是PHP 系统功能的函数,包括了 PHP 的编译选项及扩充配置、PHP 版本、服务器信息及环境变量、PHP 环境变量、操作系统版本信息、路径及环境变量配置、HTTP 标头、及版权宣告。

   然后我们发现所有的php信息全都出来了。

原文地址:https://www.cnblogs.com/FHBBS/p/12605398.html