命令执行漏洞是指Web应用程序中由于对用户输入的验证不足,导致恶意用户能够构造并传递一些预期之外的命令给服务器,从而在服务器上执行任意命令。这种漏洞可能允许攻击者获取敏感信息、破坏服务、访问系统文件,甚至获得服务器的控制权。
一、命令执行漏洞简介
1.1 命令执行漏洞产生原因
应用未对用户输入做严格的检查过滤,导致用户输入得参数被当成命令来执行。
1.2 命令执行漏洞的危害
- 继承Web服务程序的权限去执行系统命令或读写文件
- 反弹Shell,获得目标服务器的权限
- 进一步内网渗透
1.3 远程代码执行
因业务需求,在PHP中有时需要调用一些命令执行的函数,如eval(),assert(),preg_replace(),creat_funcation()等,如果存在一个使用这些函数且未对可被用户控制的参数进行检查过滤的页面,那么这个页面就可能存在远程代码执行漏洞。
1.4 远程系统命令执行
一般出现这种漏洞,是因为应用系统从设计上需要给用户提供指定的远程命令操作的借口,比如我们常见的路由器、防火墙、入侵检测等设备的Web管理界面上,一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交后后台会对IP地址进行一次ping测试,并返回测试结果。如果设计者在完成该功能时,没有做严格的安全控制,则可能会导致攻击者通过该接口提交恶意命令,让后台执行,从而获得后台服务器的权限。
利用PHP的系统命令执行函数来调用系统命令并执行,这类函数有system(),exec(),shell_exec(),passthru(),penti_exec(),proc_pen()等,此外还有反引号命令执行,这种方式实际上是调用shell_exec()函数来执行的。