1.命令执行
命令执行是指计算机程序或系统执行由用户输入的命令或指令的过程。用户可以通过命令行界面(CommandLine lnterface, CLI) 或图形用户界面 (Graphical User Interface,GUI) 等方式向计算机系统发送命令,系统会解释和执行这些命令。
2.命令执行漏洞
远程命令执行漏洞(Remote Command Execution),简称RCE。命令执行是用户与计算机系统进行交百的一种重要方式,尤其在一些服务器、操作系统和开发环境中,命令行界面被广泛应用。然而,命令执行也可能面临一些安全风险。如果用户的输入未经过充分验证和过滤,恶意用户可能通过注入恶意命令来执行一些危险的操作,这就是所谓的命令注入攻击
3.场景
一般出现这种漏洞,是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口,比如我们常见的路由器、防火墙、入侵检测等设备的web管理界面上,一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交后后台会对该IP地址进行一次ping测试,并返回测试结果。如果设计者在完成该功能时,没有做严格的安全控制,则可能会导致攻击者通过该接口提交恶意命令,从而导致漏洞的发生
4.命令执行&代码执行
命令执行指用户或程序向系统发送命令,然后系统执行这些命令的过程代码执行指程序或系统执行编程代码的过程,这些代码可以是脚本、程序或其他形式的可执行代码
5.危害
攻击者可以利用远程命令执行漏洞远程控制受影响系统。攻击者可以在不需要直接物理访问的情况下执行命令,修改系统配置,执行恶意代码等
6.相关函数
PHP:system()、exec()、shell_exec()、passthru()、penti_exec()、popen()、proc_pen()等,此外还有反引号命令执行,这种方式实际上是调用shell_exec()函数来执行。
ASP.NET:System.Diagnostics.Start.Process、System.Diagnostics.Start.ProcessStartInfo
Java:java.lang.runtime.Runtime.getRuntime、java.lang.runtime.Runtime.exec等
Python:system()、popen()、subprocess.call
(1)Exec
语法格式:exec(command, output, return_var);
作用: 执行一个外部程序,exec()执行command参数所指定的命令;第二个参数是执行命令返回的结果,这是一个可选参数,如果不提供,exec函数会直接将输出打印到页面上;第三个