代码审计day6

 · 2020-3-22  ·次阅读


命令执行漏洞

命令注入是一种攻击,目标是通过易受攻击的应用程序在主机操作系统上执行任意命令。当应用程序将不安全的用户提供的数据(表单、cookie、HTTP头等)传递给系统shell时,命令注入攻击是可能的。在这种攻击中,攻击者提供的操作系统命令通常以易受攻击的应用程序的特权执行。命令注入攻击可能很大程度上是由于输入验证不足。

命令执行和代码执行的区别

代码执行:执行的效果完全受限于语言本身

命令执行:执行的效果不受限于语言语法本身,不受命令本身限制

命令执行类型:

1.代码层过滤不严

2.系统漏洞

3.第三方组件存在代码执行漏洞

常见函数:

system函数
passthru函数
Exec函数
Shell_exec函数

1.system函数

string system( string $command[,int &$return_var] )

$command 要执行的命令

$return_var 如果提供此参数,则外部命令执行后的返回状态将会被设置到此变量中

2.passthru函数

string passthru ( string $command [, int &$return_var] )

$command 要执行的命令

$return_var 如果提供此参数,Unix命令的返回状态会被记录到此参数

3.Exec函数

string exec ( string $command [, array &$output [, int &$return var ]] )

$command 要执行的命令

$output 如果提供此参数,会有命令执行的输出填充此数组

$return_ var如果同时提供$output和$return_var参数,命令执行后的返回状态会被写入到此变量

4.Shell_exec函数

string shell_exec ( string $cmd )

$cmd 要执行的命令

反引号(`)则调用此函数

5.过滤函数

Escapeshellcmd() 过滤整条命令

Escapeshellarg() 过滤整个参数