网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > PHP > 正文
php escapeshellcmd多字节编码漏洞解析
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/12/05
下载{$ArticleTitle}原创论文样式

1 2 3 4 5 下一页

  漏洞公告在http://www.sektioneins.de/advisories/SE-2008-03.txt

  PHP 5 <= 5.2.5

  PHP 4 <= 4.4.8

  一些允许如GBK,EUC-KR, SJIS等宽字节字符集的系统都可能受此影响,影响还是非常大的,国内的虚拟主机应该是通杀的,在测试完这个漏洞之后,发现还是十分有意思的,以前也有过对这种类型安全漏洞的研究,于是就把相关的漏洞解释和一些自己的想法都写出来,也希望国内的一些有漏洞的平台能迅速做出响应,修补漏洞。

  这个漏洞出在php的用来转义命令行字符串的函数上,这些函数底层是用的php_escape_shell_cmd这个函数的,我们先来看看他的处理过程:

   /*{{{php_escape_shell_cmd
  Escapeallcharsthatcouldpossiblybeusedto
  breakoutofashellcommand
  Thisfunctionemalloc'sastringandreturnsthepointer.
  Remembertoefreeitwhendonewithit.
  *NOT*safeforbinarystrings
  */
  char*php_escape_shell_cmd(char*str){
  reGISterintx,y,l;
  char*cmd;
  char*p=NULL;
  l=strlen(str);
  cmd=safe_emalloc(2,l,1);
  for(x=0,y=0;x<l;x++){
  switch(str[x]){
  case'"':
  case''':
  #ifndefPHP_WIN32
  if(!p&&(p=memchr(str+x+1,str[x],l-x-1))){
  /*noop*/
  }elseif(p&&*p==str[x]){
  p=NULL;
  }else{
  cmd[y++]='';
  }
  cmd[y++]=str[x];
  break;
  #endif
  case'#':/*Thisischaracter-setindependent*/
  case'&':
  case';':
  case'`':
  case'|':
  case'*':
  case'?':
  case'~':
  case'<':
  case'>':
  case'^':
  case'(':
  case')':
  case'[':
  case']':
  case'{':
  case'}':
  case'content#39;:
  case'':
  case'x0A':/*excludingthesetwo*/
  case'xFF':
  #ifdefPHP_WIN32
  /*sinceWindowsdoesnotallowustoescapethesechars,justremovethem*/
  case'%':
  cmd[y++]='';
  break;
  #endif
  cmd[y++]='';
  /*fall-through*/
  default:
  cmd[y++]=str[x];
  }
  }
  cmd[y]='';
  returncmd;
  }
  /*}}}*/

(责任编辑:admin)

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号