Content

php网络安全中命令执行漏洞的产生及本质探究(phpinfo漏洞利用)居然可以这样

文章摘要

这篇文章主要探讨了PHP编程语言中命令执行漏洞的产生原因、本质及其防御方法。文章指出,命令执行漏洞通常通过以下危险函数造成:`system()`、`exec()`、`shell_exec()`、`passthru()`、`popen()`和反引号等。这些函数的使用可能导致用户提交的恶意代码被服务器执行,从而引发安全风险。 文章进一步分析了这些漏洞的具体危害,并强调了防御策略的重要性。防御措施包括严格过滤用户输入,避免直接或间接使用危险函数,以及对参数进行过滤和转义。例如,尽量减少使用执行命令函数,启用`disable_functions`以禁用危险功能;在调用执行命令函数之前,对输入参数进行过滤,避免敏感字符被滥用。 文章还提供了几个测试代码示例,说明了不同函数的使用方法及其输出效果。此外,文章提到反引号(`[``]`)内的字符串会被解析为命令,禁用`shell_exec()`同样会禁用反引号的使用。最后,文章总结了编写安全PHP代码的心得,建议开发者尽量少使用执行命令函数,并对参数进行严格过滤。 总结而言,文章通过实例分析了命令执行漏洞的产生原因,详细阐述了其防御方法,并为开发者提供了实用的建议,以提升PHP程序的安全性。


目录漏洞的产生原因漏洞的本质涉及到的函数命令执行漏洞的危害命令执行漏洞的防御命令执行相关函数的使用system()exec()shell_exec()passthru()popen()反引号
代码层过滤不严。应用程序直接或间接使用了动态执行命令的危险函数,并且这个函数的运行参数是可控的系统的漏洞造成命令注入

应用有时需要调用一些执行系统命令的函数,当服务器没有严格过滤用户提供的参数时,就有可能导致用户提交恶意代码被服务器执行,从而造成命令执行漏洞。

1.system2.exec()3.shell_exec()4.passthru()5.popen()6.反引号 1.继承Web 服务器程序权限(Web用户权限),去执行系统命令2.继承Web服务器权限,读写文件3.反弹Shell4.控制整个网站5.控制整个服务器 1、尽量少使用执行命令函数或者禁用disable_functions2、在进入执行命令的函数之前,对参数进行过滤,对敏感字符进行转义3、参数值尽量使用引号包括,并在拼接前调用addslashes进行转义 说明:能够将字符串作为OS命令执行,自带输出功能测试参考代码:
<?php if(isset($_GET[‘cmd’])){ system($_GET[‘cmd’]); } ?> payload:?cmd=ipconfig
说明:能将字符串作为OS命令执行,但无输出,需要输出执行结果print。exec() 默认只输出最后一行的数据如果想让他输出全部结果,可以加一个参数,即exec(ifconfig,$arr); print_r($arr);,如一句话木马:<?php exec($_REQUEST[123],$arr);print_r($arr)?>测试参考代码
<?php if(isset($_GET[‘cmd’])){ print exec($_GET[‘cmd’]); } ?> payload:?cmd=whoami
说明:执行命令并以字符串的形式,返回完整的信息,但是函数无回显,需要输出执行结果。测试参考代码
<?php if(isset($_GET[‘cmd’])){ print shell($_GET[‘cmd’]); } ?> payload:?cmd=whoami
说明:执行外部命令,与system()类似,但是该函数会直接将结果输出,无需输出执行。测试参考代码
<?php if(isset($_GET[‘cmd’])){ passthru($_GET[‘cmd’]); } ?> payload:?cmd=whoami
说明:能够执行OS命令,但是该函数并不是返回命令结果,而是返回一个文件指针测试参考代码
<?php if(isset($_GET[‘cmd’])){ $cmd=$_GET[‘cmd’].”>>1.txt”; popen($cmd,’r’); } ?> payload:?cmd=whoami
说明:反引号[“]内的字符串,也会被解析成OS命令反引号背后执行的代码其实是调用了shell_exec(),所以禁用了shell_exec()同样反引号也无法使用了。测试参考代码
<?php if(isset($_GET[‘cmd’])){ $cmd=$_GET[‘cmd’]; print `$cmd`; } ?> payload:?cmd=whoami

到此这篇关于php网络安全中命令执行漏洞的产生及本质探究的文章就介绍到这了,更多相关php命令执行漏洞内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:PHP网络安全之命令执行漏洞及防御