命令执行漏洞:
介绍:攻击者可以任意执行系统命令
- PHP命令执行
- Java命令执行
- 命令连接符
1)PHP命令执行
介绍:PHP提供部分函数用来执行外部应用程序(四种方式执行命令)
- system()、shell_exec()、exec()、passthru()
1.1)命令执行(例如):利用pxp.exe执行php文件
执行命令:php.exe cmd.php "|net user"
php.exe:执行某文件
cmd.php:代码文件
"|net user":代码文件中的参数
1.2)代码执行:利用eval()函数执行字符串(php代码)
1.3)动态函数调用:
1.4)PHP函数代码执行漏洞:像preg_replace()、ob_start()、array_map()等
2)Java命令执行
例如在Runtime类中存在exec()方法以单独的进程执行指定的字符串命令
......
3)防范命令执行漏洞
- 尽可能不使用系统执行命令
- 对于开启了系统执行命令函数,做好过滤和特殊字符转义
- 动态函数使用之前,确保使用的函数是指定函数之一
- 对于PHP,不能完全控制的函数尽可能不使用
4)命令连接符号
windows支持:
command1 && command2 #command1执行成功了才会执行command2
command1 & command2 #不管command1是否执行成功,command2都会执行
command1 | command2 #直接执行command2
command1 || command2 #command1执行失败了,才会执行command2
Linux支持:
command1 ; command2 #command1执行完执行command2
command1 && command2 #command1执行成功了才会执行command2
command1 & command2 #不管command1是否执行成功,command2都会执行
command1 | command2 #将command1的输出结果作为command2的输入的内容(管道符)
command1 || command2 #command1执行失败了,才会执行command2