网络安全学习笔记:命令注入

命令注入

1、漏洞的危害

1、继承Web 服务器程序权限(Web 用户权限)读写文件、执行系统命令
2、反弹Shell(服务器主动连接攻击方)
3、控制整个服务器

2、相关命令

1、system()函数

system() 能够将字符串作为OS 命令执行,自带输出功能,需要等待命令执行完成后才会返回结果并输出
    <?php
    $str=$_GET['cmd'];
    system($str);
    ?>
    
提交参数    ?cmd=ipconfig

2、exec()函数

exec() 函数能将字符串作为OS命令执行,需要输出执行结果
    <?php
    $str=$_GET['cmd'];
    print(exec($str));
    ?>
​
提交参数    ?cmd=whoami (返回结果有限)

3、shell_exec()函数

shell_exec()函数能将字符串作为OS命令执行,需要输出执行结果
<?php
$str=$_GET['cmd'];
print(shell_exec($str));
?>
​
提交参数    ?cmd=whoami (使用最多)

4、passthru()函数

passthru()函数 能够将字符串作为OS 命令执行,自带输出功能,
<?php
$str=$_GET['cmd'];
passthru($str);
?>
​
提交参数    ?cmd=whoami

4、popen()函数

popen()函数,将命令执行结果需要导出到别的文件
<?php
$str=$_GET['cmd'].">> 1.txt";
popen($str,'r');
?>
    查看1.txt文件
提交参数    ?cmd=whoami

5、反引号

反引号[``] 内的字符串,也会解析成OS 命令
<?php
$str=$_GET['cmd'];
print `$str`;
?>
​
提交参数    ?cmd=whoami

3、防御方法

1、尽量减少命令执行函数的使用,并在disable_functions 中禁用
2、在进入命令执行的函数或方法之前,对参数进行过滤
3、参数的值尽量使用引号包裹,并在拼接前调用addslashes 进行转义

 

posted @ 2020-11-11 10:13  xs123456789  阅读(220)  评论(0编辑  收藏  举报