Web安全攻防:10---RCE(远程命令执行)漏洞介绍

一、漏洞介绍

  • 应用程序有时需要调用一些执行系统命令的函数,如在PHP中,使用system、exec、shell_ exec、passthru、pcntl_exec、popen、proc_popen等函数可以执行系统命令。当黑客能控制这些函数中的参数时,就可以将恶意的系统命令拼接到正常命令中,从而造成命令执行攻击,这就是命令执行漏洞

二、常用的管道符

Windows系统管道符

Web安全攻防:10---RCE(远程命令执行)漏洞介绍_第1张图片

Linux管道符

Web安全攻防:10---RCE(远程命令执行)漏洞介绍_第2张图片

三、漏洞的发现

黑盒测试

  • 通过网站的功能:部分网站有特殊功能,比如ping、数据库备份等

白盒测试

  • 命令执行函数:system、exec、shell_ exec、passthru、pcntl_exec、popen、proc_popen等函数
  • 反引号('):搜索可执行命令的反引号(')

四、漏洞的修复建议

  • 尽量不要使用命令执行函数。
  • 客户端提交的变量在进入执行命令函数前要做好过滤和检测
  • 在使用动态函数之前,确保使用的函数是指定的函数之一
  • 对PHP语言来说 ,不能完全控制的危险函数最好不要使用

五、演示案例

漏洞代码

  • 下面的rce.php代码提供ping的功能,程序获取GET参数IP,然后拼接到system()函数中,利用system()函数执行ping的功能
  • 例如我们输入http://127.0.0.1/rce.php?ip=127.0.0.1

 Web安全攻防:10---RCE(远程命令执行)漏洞介绍_第3张图片

漏洞攻击

  • 代码中没有对参数IP做过滤和检测,导致可以利用管道符执行其他的系统命令
  • 我们将IP参数设置为127.0.0.1 | dir,那么就会执行命令dir

Web安全攻防:10---RCE(远程命令执行)漏洞介绍_第4张图片

你可能感兴趣的:(Web安全攻防)