(1)命令执行的原理
程序员使用脚本语言开发应用程序过程中,脚本语言开发快,简洁方便,但是伴随速度慢、无法接触系统底层等问题。如果我们开发的应用,特别是企业级的一些应用需要去调用一些外部程序。当应用需要调用一些外部程序时会用到一些执行系统命令的函数。应用在调用这些函数执行系统命令的时候,如果将用户的输入作为系统命令的参数拼接到命令行中,在没有过滤用户输入的情况下,就会造成命令执行漏洞。
(2)代码分析
从代码中,ipaddress参数时外部可以控制的,再判断类型,再使用shell_exec函数调用系统命令,所以存在命令执行漏洞。
(3)相关函数
system(args)有回显
passthru(args)有回显
exec(args)(回显最后一行-必须echo输出)
shell_exec(args)(无回显-必须输出)
反引号: ``
popen(handle,mode)(无回显)
proc_open('cmd','flag','flag')(无回显)
$process = proc_open('dir',$des,$pipes)
ec