WEB安全

如何挖掘任意文件读取漏洞

字号+ 作者:sqler 来源:转载 2016-11-24 20:27 我要评论( )

0x01前言 签约的时候说了每周两更,今天就来说说任意文件读取漏洞。我今天就从代码审计的角度讲。 0x02什么是 任意文件下载漏洞 一 般的网站都提供读取文件功能,......

0x01  前言       
        签约的时候说了每周两更,今天就来说说任意文件读取漏洞。我今天就从代码审计的角度讲。

0x02  什么是任意文件下载漏洞
     一 般的网站都提供读取文件功能,常规的思路是使用一个动态页面(php、jsp、aspx、asp等)将待下载文件作为参数一般参数名称为 filename,如.php?filename/.jsp?filename等。一般实现过程是,在根据参数filename的值,获得该文件在网站上 的绝对路径,读取文件。大部分情况下,与任意文件下载的危害性相同(都获取到了源代码里的包含的信息)。

0x03  任意文件下载漏洞的危害
      任意文件读取漏洞,是web安全里高危的漏洞,它可以泄露源码、数据库配置文件等等,导致网站处于极度不安全状态。

0x04  实战的案例
    我们来看看zzcms的任意文件读取漏洞,这是个能拿出来当教材的CMS(有兴趣的朋友可以下载看看)
     


    index.php
    参数$siteskin是通过$_request['skin']获取的,然后通过fread读取,最后echo出来。

  1. $file=dirname(__FILE__)."/template/".$siteskin."/index.htm";
  2. if (file_exists($file)==false){
  3. WriteErrMsg($file.'模板文件不存在');
  4. exit;
  5. }
  6. $fso = fopen($file,'r');
  7. $strout = fread($fso,filesize($file));
  8. 。。。。。。
  9. echo  $strout;
复制代码
http://127.0.0.1/index.php?skin=../inc/config.php%00(00截断)


第二处:
/area/show.php
代码是一样的

  1. $fp="../template/".$siteskin."/area_show.htm";
  2. $f = fopen($fp,'r');
  3. $strout = fread($f,filesize($fp));
  4. fclose($f);
  5. $strout=str_replace("{#siteskin}",$siteskin,$strout) ;
  6. $strout=str_replace("{#sitename}",sitename,$strout) ;
  7. $strout=str_replace("{#siteurl}",siteurl,$strout) ;
  8. $strout=str_replace("{#pagetitle}",$province.sitetitle,$strout);
  9. $strout=str_replace("{#pagekeywords}",$province.sitekeyword,$strout);
  10. $strout=str_replace("{#pagedescription}",sitedescription,$strout);
  11. $strout=str_replace("{#province}",$province,$strout) ;
  12. $strout=str_replace("{#sitebottom}",sitebottom(),$strout);
  13. $strout=str_replace("{#sitetop}",sitetop(),$strout);
  14. $strout=showlabel($strout);
  15. echo  $strout;
复制代码
第三处:/company/company.php

  1. $fp="../template/".$siteskin."/company.htm";
  2. $f= fopen($fp,'r');
  3. $strout = fread($f,filesize($fp));
  4. fclose($f);
  5. 。。。。。
  6. echo  $strout;
复制代码
第四处:
/company/index.php

  1. $file="../template/".$siteskin."/company_index.htm";
  2. if (file_exists($file)==false){
  3. WriteErrMsg($file.'模板文件不存在');
  4. exit;
  5. }
  6. $fso = fopen($file,'r');
  7. $strout = fread($fso,filesize($file));
  8. $strout=str_replace("{#siteskin}",$siteskin,$strout) ;
  9. $strout=str_replace("{#sitename}",sitename,$strout) ;
  10. $strout=str_replace("{#pagetitle}",companylisttitle,$strout);
  11. $strout=str_replace("{#pagekeywords}",companylistkeyword,$strout);
  12. $strout=str_replace("{#pagedescription}",companylistdescription,$strout);
  13. $strout=str_replace("{#sitebottom}",sitebottom(),$strout);
  14. $strout=str_replace("{#sitetop}",sitetop(),$strout);
  15. $strout=showlabel($strout);
  16. echo  $strout;
复制代码
第五处:
/company/search.php


  1. $file="../template/".$siteskin."/company_search.htm";
  2. $fp = fopen($file,'r');
  3. $strout = fread($fp,filesize($file));
  4. fclose($fp);
  5.  
  6. 。。。。。
  7. echo  $strout;
复制代码
第六处:
/dl/dl.php

  1. $fp="../template/".$siteskin."/dl.htm";
  2. $f = fopen($fp,'r');
  3. $strout = fread($f,filesize($fp));
  4. fclose($f);
  5. 。。。。。
  6. echo  $strout;
复制代码
第七处:
/dl/index.php

  1. $fp="../template/".$siteskin."/dl_index.htm";
  2. if (file_exists($fp)==false){
  3. WriteErrMsg($fp.'模板文件不存在');
  4. exit;
  5. }
  6. $f = fopen($fp,'r');
  7. $strout = fread($f,filesize($fp));
  8. fclose($f);
  9. $strout=str_replace("{#siteskin}",$siteskin,$strout) ;
  10. $strout=str_replace("{#sitename}",sitename,$strout) ;
  11. $strout=str_replace("{#pagetitle}",dllisttitle,$strout);
  12. $strout=str_replace("{#pagekeywords}",dllistkeyword,$strout);
  13. $strout=str_replace("{#pagedescription}",dllistdescription,$strout);
  14. $strout=str_replace("{#sitebottom}",sitebottom(),$strout);
  15. $strout=str_replace("{#sitetop}",sitetop(),$strout);
  16. $strout=showlabel($strout);
  17. mysql_close($conn);
  18. echo  $strout;
复制代码
第八处:
/dl/search.php

  1. $fp="../template/".$siteskin."/dl_search.htm";
  2. $f = fopen($fp,'r');
  3. $strout = fread($f,filesize($fp));
  4. fclose($f);
  5. 。。。。
  6. echo  $strout;
复制代码
第九处:
/inc/bottom.php

  1. $file=zzcmsroot."/template/".$siteskin."/bottom.htm";
  2. $fso = fopen($file,'r');
  3. $strout = fread($fso,filesize($file));
  4.  
  5. $strout=str_replace("{#sitename}",sitename,$strout) ;
  6. $strout=str_replace("{#siteurl}",siteurl,$strout) ;
  7. $strout=str_replace("{#zzcmsver}",zzcmsver,$strout) ;
  8. $strout=str_replace("{#kftel}",kftel,$strout) ;
  9. $strout=str_replace("{#kfmobile}",kfmobile,$strout);
  10. $strout=str_replace("{#kfqq}",kfqq,$strout);
  11. $strout=str_replace("{#icp}",icp,$strout);
  12. $strout=str_replace("{#sitecount}",sitecount,$strout);
  13. return $strout;
复制代码
第十处:
/one/getpassword.php
  1. $file="../template/".$siteskin."/getpassword.htm";
  2. if (file_exists($file)==false){
  3. WriteErrMsg($file.'模板文件不存在');
  4. exit;
  5. }
  6. 。。。。。
  7. echo  $strout;
复制代码
第十一处:
/one/help.php
  1. $fp="../template/".$siteskin."/help.htm";
  2. if (file_exists($fp)==false){
  3. WriteErrMsg($fp.'模板文件不存在');
  4. exit;
  5. }
  6. $f = fopen($fp,'r');
  7. $strout = fread($f,filesize($fp));
  8. fclose($f);
  9. $strout=str_replace("{#siteskin}",$siteskin,$strout) ;
  10. $strout=str_replace("{#sitename}",sitename,$strout) ;
  11. $strout=str_replace("{#siteurl}",siteurl,$strout) ;
  12. $strout=str_replace("{#logourl}",logourl,$strout) ;
  13. $strout=str_replace("{#sitebottom}",sitebottom(),$strout);
  14. $strout=str_replace("{#sitetop}",sitetop(),$strout);
  15. $strout=showlabel($strout);
  16. mysql_close($conn);
  17. echo  $strout;
复制代码
第十二处:
/one/link.php
  1. $fp="../template/".$siteskin."/link.htm";
  2. if (file_exists($fp)==false){
  3. WriteErrMsg($fp.'模板文件不存在');
  4. exit;
  5. }
  6. $f = fopen($fp,'r');
  7. $strout = fread($f,filesize($fp));
  8. fclose($f);
  9. $strout=str_replace("{#siteskin}",$siteskin,$strout) ;
  10. $strout=str_replace("{#sitename}",sitename,$strout) ;
  11. $strout=str_replace("{#siteurl}",siteurl,$strout) ;
  12. $strout=str_replace("{#logourl}",logourl,$strout) ;
  13. $strout=str_replace("{#sitebottom}",sitebottom(),$strout);
  14. $strout=str_replace("{#sitetop}",sitetop(),$strout);
  15. $strout=showlabel($strout);
  16. mysql_close($conn);
  17. echo  $strout;
复制代码

第十三处:
/one/siteinfo.php
  1. $fp="../template/".$siteskin."/siteinfo.htm";
  2. if (file_exists($fp)==false){
  3. WriteErrMsg($fp.'模板文件不存在');
  4. exit;
  5. }
  6. $f = fopen($fp,'r');
  7. $strout = fread($f,filesize($fp));
  8. fclose($f);
  9. $strout=str_replace("{#siteskin}",$siteskin,$strout) ;
  10. $strout=str_replace("{#sitename}",sitename,$strout) ;
  11. $strout=str_replace("{#siteurl}",siteurl,$strout) ;
  12. $strout=str_replace("{#title}",$title,$strout) ;
  13. $strout=str_replace("{#content}",$content,$strout) ;
  14. $strout=str_replace("{#logourl}",logourl,$strout) ;
  15. $strout=str_replace("{#sitebottom}",sitebottom(),$strout);
  16. $strout=str_replace("{#sitetop}",sitetop(),$strout);
  17. //$strout=showlabel($strout);
  18. echo  $strout;
复制代码

第十四处:
/one/sitemap.php
  1. $file="../template/".$siteskin."/sitemap.htm";
  2. if (file_exists($file)==false){
  3. WriteErrMsg($file.'模板文件不存在');
  4. exit;
  5. }
  6. 。。。。。
  7. echo  $strout;
复制代码

第十五处:
/pp/index.php
  1. $fp="../template/".$siteskin."/pp_index.htm";
  2. if (file_exists($fp)==false){
  3. WriteErrMsg($fp.'模板文件不存在');
  4. exit;
  5. }
  6. $f = fopen($fp,'r');
  7. $strout = fread($f,filesize($fp));
  8. fclose($f);
  9. $strout=str_replace("{#siteskin}",$siteskin,$strout) ;
  10. $strout=str_replace("{#sitename}",sitename,$strout) ;
  11. $strout=str_replace("{#pagetitle}",pplisttitle,$strout);
  12. $strout=str_replace("{#pagekeywords}",pplistkeyword,$strout);
  13. $strout=str_replace("{#pagedescription}",pplistdescription,$strout);
  14. $strout=str_replace("{#sitebottom}",sitebottom(),$strout);
  15. $strout=str_replace("{#sitetop}",sitetop(),$strout);
  16.  
  17. $strout=str_replace("{#ppclass}",bigclass(2),$strout);
  18.  
  19. $strout=showlabel($strout);
  20. echo  $strout;
复制代码

第十六处:
/pp/pp.php
  1. $fp="../template/".$siteskin."/pp.htm";
  2. $f = fopen($fp,'r');
  3. $strout = fread($f,filesize($fp));
  4. fclose($f);
  5. 。。。。。。
  6. echo  $strout;
复制代码

第十七处:
/pp/search.php
  1. $fp="../template/".$siteskin."/pp_search.htm";
  2. $f = fopen($fp,'r');
  3. $strout = fread($f,filesize($fp));
  4. fclose($f);
  5. 。。。。。
  6. echo  $strout;
复制代码

第十八处:
/pp/show.php
  1. $fp="../template/".$siteskin."/ppshow.htm";
  2. $f = fopen($fp,'r');
  3. $strout = fread($f,filesize($fp));
  4. fclose($f);
  5. 。。。。。。
  6. echo  $strout;
复制代码



0x04  挖掘任意文件读取漏洞的技巧、
一:注意观察网站的URL,如果读取一个文件的时候文件后缀为.com/1.php?lujing=/test/test.php
        你可以关注一下这儿,有些网站(主要是针对系统)并不会在URL里显示给你看,这时候你需要抓包,从数据包里修改路径,达到任意文件读取。

本文来自: 蜗蜗侠's Blog-关注网络安全 http://blog.icxun.cn/Web/230.html

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
网友点评
暂时未开启评论功能~