命令执行&代码执行漏洞

一、漏洞介绍

cmd:command 命令执行

rce:

web应用提供调取外部应用、执行系统命令功能。用户利用这些功能执行系统命令,从而读取敏感信息、拿到系统权限。

 

命令执行与代码执行的区别:
命令执行是调用系统的命令执行接口,与语句本身无关,只与系统版本有关。
代码执行是调用后端语言(java、php等)。

 

二、产生原因

  1. 使用命令执行、代码执行函数调取外部应用、执行系统命令
  2. 参数用户可控
  1. 未对用户输入进行过滤、转义和限制

 

三、漏洞危害

  1. 继承web应用权限执行系统命令、读写文件。
  2. 反弹shell
  1. 控制服务器
  2. 攻击内网

 

四、应用场景

提供ping功能的网站。

五、产生条件

使用命令执行&代码执行函数

命令执行函数:

  1. system(): 执行一个外部的应用程序并显示输出的结果
  2. exec(): 执行一个外部的应用程序,以数组形式保存结果,回显需要echo ???
  1. shell_exec(): 执行shell命令并返回输出的结果的字符串,回显需要echo
  2. passthru(): 执行一个unix系统命令并显示原始的输出

代码执行函数:

  1. eval(): 将字符串带入php中执行
  2. assert():直接执行php中的命令

代码执行函数前面加@,不报错。

 

六、漏洞利用

命令执行

使用命令连接符拼接命令

windows:

  1. &: 顺序执行,全部执行
  2. &&: 顺序执行,遇到假则报错
  1. |: 顺序执行,遇到假则报错
  2. ||: 顺序执行,遇到真则结束

linux:

  1. 分号: 顺序执行,全部执行
  2. &: 使命令在后台运行,这样就可以同时执行多条命令
  1. &&: 顺序执行,前面成功,则继续执行后面
  2. |: 将前面的输出作为后面的输入;前后都执行,但只显 示后面的结果
  1. ||: 若前面的命令执行成功,则直接结束;若前面的命令执 行失败,则执行后面的命令

代码执行

在代码执行函数中使用命令执行函数。

 

七、防御与修复

  1. 尽量不要使用命令执行&代码执行函数
  2. 对用户输入进行过滤、转义和限制
    1. 尽量不要使用不能完全控制的危险函数
posted @ 2021-10-27 17:28  天才小2b  阅读(261)  评论(0编辑  收藏  举报