OS命令执行漏洞

代码执行漏洞指的是可以执行PHP脚本代码,而命令执行漏洞指的是可以执行系统命令或应用指令(如cmd命令或bash命令)的漏洞

php命令执行漏洞主要是一些函数的参数过滤不严格所导致,可以执行OS命令的函数一共有7个:system(), exec(), shell_exec(), passthru(), pcntl_exec(), popen(), proc_open()

另外,反单引号(`)也可以执行命令,不过要调用shell_exec()函数

1.system(),exec(),shell_exec()和passthru()函数是可以直接传入命令并且会返回执行结果

payload:  //返回当前web服务器用户

2.pcntl是php的多进程处理扩展,在处理大量任务的情况下会使用

void pcntl_exec(string $path, [,array $args [, array $envs]])

3.popen()和proc_open()函数不会直接返回执行结果,而是返回一个文件指针

payload: >D:/2.txt','r'); ?>  //两个参数,第二个参数是指针文件的连接模式,有r和w模式

4.反单引号(`)执行命令需要调用shell_exec()函数

payload: //返回当前用户

命令防注入函数:

1.escapeshellcmd()函数是过滤的整条命令

payload:

请求1.php?a=whoami', 在windows下返回whoami^',在linux下返回whoami\'

2.escapeshellarg()函数则是过滤参数

payload:

  //会见双引号替换成空格,输出为"a "



你可能感兴趣的:(OS命令执行漏洞)