命令执行漏洞
开发人员在进行开发的过程中,或多或少都会调用一些执行系统命令的函数,如PHP中的system、exec、shell_exec、passthru、popen、proc_popen等。对于开发人员而言,使用这些函数可以方便去除系统的特殊功能等。但是也会带来一些命令执行漏洞。
黑客在渗透应用时,可能控制了某些函数中的参数,从而把想要执行的恶意代码接入到原来的正常代码中一起执行。
PHP命令执行漏洞
PHP是一门脚本语言,比较简洁、方便,但是不是事先编译好的运行速度上自然是没有优势的。而且他不能接触到系统底层,所以就必须要调用系统函数来执行一些指令,自然就造成了漏洞。
举几个例子来说明问题:
<?php
System($_GET['cmd']);
?>
这个我觉得也可以算一句话木马吧,结合命令执行的密码,很多时候程序员代码过滤环节到位,PHP命令执行漏洞很少,我们可以自己创造。
我将其上传到DVWA里,进行访问http://192.168.42.157/DVWA/hackable/uploads/1.php?cmd=ipconfig
可以看到我输入的命令在系统中被执行了。
再试一个简单的案例:
<?php
$cmd=($_GET['cmd']);
System("ping ".$cmd);
?>
编写是要注意在ping后面留空格,毕竟cmd命令还是很吃格式的,格式错了那么效果可能就达不到了。一开始写的时候没有注意这个地方,试了一会儿都出不来结果,最后打开cmd对着看了才发现了空格漏了。
然后上传到DVWA靶机,在访问http://192.168.42.157/DVWA/hackable/uploads/1.php?cmd=www.baidu.com
结果可以看出我输入的参数被成功执行了。
这就是两个PHP的简单实例,当然除了代码里的系统函数调用的原因,还有可能是系统本身的漏洞造成命令执行。还有可能是调用的第三方组件纯在代码执行漏洞。这里我目前只有接触到PHP的所以就先这样了,还有很长的路需要走。