OS命令注入

原理以及成因

  程序员使用脚本语言开发的过程中需要去调用一些外部应用。当应用调用外部应用时就会用到一些系统命令的函数。应用在调用这些函数执行系统命令的时候,如果将用户的输入作为系统命令的参数拼接到命令行中,在没有过滤用户输入的情况下,就会造成命令执行漏洞。

 

漏洞危害

  1.继承web服务器程序权限,去执行系统命令

  2.继承web服务器权限,读写文件

  3.反弹shell

  4.控制整个网站

  5.控制整个服务器

 

相关函数

  system()

  调用终端,执行命令并输出

  测试代码如下:

  

<?php
	if($_GET['cmd']){
		$str=$_GET['cmd'];
		system($str);
	}
	else{
	echo '请通过get传参';
	}
?>

  exec()

    类似system,也是调用终端执行命令,但需要print来输出结果,并且有长度限制

    测试代码

    

<?php
	if($_GET['cmd']){
		$str=$_GET['cmd'];
		print exec($str);
	}
	else{
	echo '请通过get传参';
	}
?>

  shell_exec()同exec()

  passthru()自带输出结果

  popen()没有回显,但会执行指令

  反引号

    反引号[ `` ]里面的字符串也会被解析为OS命令

    测试代码如下

<?php
	if(isset($_GET['cmd'])){
	    $str=$_GET['cmd'];
	    print `$str`;
	}
	else{
	    echo 'please input ';
	}
?>

 

 

漏洞利用

  OS命令注入漏洞,攻击者直接继承web用户权限,在服务器上执行任意命令

  1.查看系统文件

    提交参数[ ?cmd=type c:\windows\system32\drivers\etc\hosts ],查看系统host文件

  2.显示当前路径

    [ ?cmd=chdir ]

  3.写文件

    echo "<?php phpinfo(); ?>" >> shell.php

防御方法

  1.尽量减少命令执行函数的使用,并在php.ini中禁用

  2.对用户输入的参数进行过滤

  3.参数的值尽量用引号包裹,拼接前调用addslashes进行转义(默认情况下会对单引号,双引号,空字符,反斜杠转义)

 

 

posted on   没名字别找了  阅读(46)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
点击右上角即可分享
微信分享提示