OS命令注入

命令执行漏洞利用条件:

  1. 应用调用执行系统命令的函数
  2. 将用户输入作为系统命令的参数拼接到了命令行中
  3. 没有对用户输入进行过滤或过滤不严

漏洞分类:

  1. 代码过滤不严
  2. 系统漏洞:bash破壳漏洞
  3. 调用的第三方组件存在代码执行漏洞:
    WordPress用来处理图片的ImageMagick组件
    JAVA中的命令执行漏洞(struts2/ElasticsearchGroovy)
    ThinkPHP命令执行漏洞

命令执行绕过技巧

  1. 使用通配符
  2. 连接符
  3. 未初始化的bash变量

命令执行函数

  1. system():将字符串当做OS命令执行,自带输出功能
<?php
if(isset($_GET['cmd'])){
	echo "<pre>";
	system($_GET['cmd']);
}
?>//?cmd=ipconfig
  1. exec():将字符串当做OS命令执行,需要输出执行结构,输出内容有限
<?php
if(isset($_GET['cmd'])){
	echo "<pre>";
	print exec($_GET['cmd']);
}
?>//?cmd=ipconfig
  1. shell_exec():将字符串当做OS命令执行,需要输出执行结构
<?php
if(isset($_GET['cmd'])){
	print shell_exec($_GET['cmd']);
}
?>//?cmd=ipconfig
  1. passthru()
<?php
if(isset($_GET['cmd'])){
	passthru($_GET['cmd']);
}
?>//?cmd=ipconfig
  1. popen(),返回文件指针
<?php
if(isset($_GET['cmd'])){
	$cmd=$_GET['cmd'];
	popen($cmd,'r');
}
?>//?cmd=ipconfig >>1.txt
  1. `反引号
<?php
if(isset($_GET['cmd'])){
	print `$_GET['cmd']`;
}
?>//?cmd=ipconfig

漏洞危害

  1. 继承web服务器程序权限(web 用户权限),去执行系统命令
  2. 继承web服务器权限,读写文件
  3. 反弹shell
  4. 控制整个网站
  5. 控制整个服务器

防御方法

  1. 尽量少使用可执行系统命令的函数,并用disable_functions禁用
  2. 在进入命令执行的函数或方法之前,对参数进行过滤
  3. 参数的值尽量使用引号包裹,并在拼接前调用addslashes转义
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值