本文主要介绍PHP命令执行的漏洞及防御。如今,网络安全越来越受到重视。脆弱性和防御需要理解。这篇文章很详细,有一定的参考价值。有需要的朋友可以参考一下。
目录
命令执行漏洞的原理命令执行漏洞的原因命令执行漏洞的危害防御手段DVWA简介
命令执行漏洞的原理
应用有时需要调用一些执行系统命令的函数,如system、exec、shell exec、passthru、popen、proc popen等。在php中。当用户可以控制这些函数的参数时,他们可以将恶意的系统命令拼接到正常命令中,从而引起命令注入攻击。
两个条件
(1)用户可以控制功能输入。
(2)存在可以执行代码的危险函数。
命令执行漏洞产生原因
1.开发人员在编写源代码时,没有对代码中可执行的特殊函数条目进行过滤,导致客户端恶意构造语句,提交给服务器执行。
2.在命令注入攻击中,web服务器没有过滤system、eval、exec等函数。这也是此次漏洞攻击成功的主要原因。
命令执行漏洞的危害
1.继承web服务程序执行系统命令或读写文件的权限。
2.弹跳壳
3.控制整个网站甚至服务器
4.进一步的内部网渗透
例子
?PHP echo shell _ exec($ _ GET[ a ]);
将url中的参数a作为cmd命令行指令执行。
危险的函数会导致代码执行。
?服务器端编程语言(Professional Hypertext Preprocessor的缩写)
$ arr=$ _ GET[ arr ];
$ array=$ _ GET[ array ];
$new_array=arraymap($arr,$ array);
?
Arraymap是一个危险的函数,默认情况下会将参数作为php代码执行。
一些危险的PHP函数可以调用外部程序
评估攻击
eval函数将输入参数作为php代码执行。
混合求值(字符串代码str)
?服务器端编程语言(Professional Hypertext Preprocessor的缩写)
$ var= var
if(isset($_GET[arg]))
{
$ arg=$ _ GET[ arg ];
eval( $ var=$ arg;));
回显“$var=”。$ var
}
?
Preg_replace函数
preg_replace()函数执行正则表达式的搜索和替换。
php版本低于5.5.0时存在漏洞。当这个函数使用不安全的修饰符 e 时,preg_replace()通常会替换替换字符串的反向引用,将其计算为php代码,并用结果替换搜索字符串。
这里的/e的作用是引用括号中的字符,也就是用参数a替换括号中的字符。
Ps:别忘了代码两边的括号。
呼叫用户功能
功能用法:
call_user_func($_GET[a],$_GET[b])
a作为函数执行,B作为函数参数传入。
在命令注入的过程中,经常需要执行多个命令。
在linux下,可以用|或者||来代替。
|是一个管道符号,显示以下执行结果。
|||当前面的命令出错时,执行下面的命令。
在窗口下,可以用、|、|代替。
如果前面的语句为假,将执行下面的语句。
如果前面的语句为false,则直接出错,后面的语句不会执行。
|直接执行下面的语句。
|||前一个错误执行以下语句。
命令执行的防御手段
1.尽量不要执行外部命令。
2.使用自定义函数或函数库,而不是外部函数。
3.使用escapeshellarg函数处理命令参数
4.使用safe_mode_exec_dir:指定可执行文件路径,以便将要使用的命令可以提前放入该路径。
安全模式执行目录=/usr/local/php/bin
DVWA介绍
DVWA平台:
用于安全漏洞识别的PHP/Mysql Web应用
为安全专业人员提供测试和总结专业技能和工具的法律环境。
帮助web开发人员更好地理解web应用程序安全的过程。
DVWA的构建
DVWA是基于php/mysql环境开发的。
:
购买类固醇在线英国-合成代谢类固醇出售英国
开源代码库
DVWA练习命令注入
利用射击场自己练习。
关于PHP网络安全命令执行漏洞及防御的这篇文章到此为止。更多相关PHP漏洞和防御内容,请搜索我们之前的文章或者继续浏览下面的相关文章。希望大家以后能多多支持我们!