首页 网站建设案例 网站优化知识 营销型网站建设 大型门户网站建设 高端网站建设 WAP手机网站建设 办公OA系统 关于我们 联系我们
您当前的位置:中坚站首页 > SEO网站营销知识 > 网站建设知识 > 阅读文章

PHP中的目录遍历漏洞分析

目录遍历漏洞在国内外有许多不同的叫法,比如也可以叫做信息泄露漏洞,非授权文件包含漏洞.名称虽然多,可他们却有一个共同的成因,就是在程序中没有过滤用户输入的../和./之类的目录跳转符,导致恶意用户可以通过提交目录跳转来遍历服务器上的任意文件,其危害可想而知.这类漏洞大家比较熟悉的可能就是在一些邮件列表程序以及网络硬盘程序中,其实这类漏洞还广泛存在与一些国外的BLOG程序中,这类漏洞大概分两种下面就来通过实例来说明这类漏洞是如何产生以及该如何防范.

  首先,我们来看一个国外的BLOG,前几天从网上下了一个名为LoudBlog的BLOG程序,

  在它的index.php页面中看到如下代码:

  

  //build an include-path from the url-request

  else {

  $loadme = "inc/backend_" . $_GET['page'] . ".php";

  }

  //yee-hah! finally we do show real content on our page!

  include ($loadme);

  ?>

  这段程序很简单却包含了一个可怕的漏洞,变量$page是我们GET上去的,如果没有设置page参数,程序就自动包含inc/backend_postings.php这个文件,如果有page参数就把$page的值放到inc目录下以backend_前缀开头的文件形成一个新的文件.这里并没有对$page的值做任何的过滤,导致我们可以遍历所有文件了.

  这里要注意的是,我们提交的$page的值会自动的加上php后缀,所以我们阅读php文件是不会有效果的.当然我们可以读一些配置文件也是很有用的.下面就来测试一下,我们在inc目录外建立一个 TXT文件,内容为Wh0 !s H4K_BaN?我们提交如下URL看看结果:

  http://localhost/loudblog/loudblog/loudblog/index.php?page=/../../hello.txt%00这里要说的是由于变量会加上php后缀,所以我们要用%00来截断后缀这样才能正常显示文件内容,结果如图1

  测试成功说明漏洞存在了,那我们接着读一些敏感文件吧,提交如下URL:

  http://localhost/loudblog/loudblog/loudblog/index.php?page=/../../../../../../conf/httpd.conf%00结果如图2

  APACHE的配置文件也顺利读出来了,接下来就来看另外一种情况.

  这类漏洞主要是存在与基于PHP+TXT结构的程序中,漏洞代码也是来自于一个国外的BLOG,代码如下:

  

  $act = $_GET['act'];

  if ($act == '')

  {

  include("blog.txt");

  }

  else

  {

  include("act/$act.txt");

  }

  ?>

  

  $blog_id = $_GET['blogid'];

  if ($blog_id == '')

  {

  include("blog.txt");

  }

  else

  {

  include("./blog_entries/$blog_id.txt");

  }

  ?>

  从上面的代码可以清晰的看出问题所在,第一段程序获得$_GET[]提交的数据并赋值给$act,这里没有对act做任何的过滤,而在后面判断如果变量为空就把blog.txt包含进来,如果不为空就包含act目录下的$act.txt文件,不过只能读以.txt结尾的文件,读别的文件加上 txt后缀后会提示找不到文件,可以配合某些上传漏洞把文件包含进去,比如提交如下URL:

  index.php?act=blog&blogid=../../filename这样带到程序里就成了include("./filename.txt");包含近来的文件只要里面含有PHP代码就算后缀是TXT文件也会被执行,原理给上面的一样,我就不截图了.

  上面分别介绍了现在最主要的两种目录遍历漏洞,从表面上看基于TXT的PHP程序如果有这类漏洞似乎利用更方便一些,其实两者的危害性都是等价的.其实避免这类漏洞也是很简单的事情,象$blog-id这类数字形的参数只需用intval()函数强制整形化就可以了,对于字符形的参数我们可以自己写一个过滤函数把危险字符过滤掉,类似代码如下:

  function fuckchar($var){

  $var = str_replace("..","",$var);

  $var = str_replace(".","",$var);

  $var = str_replace("/","",$var);

  $var = str_replace("\","",$var);

  $var = str_replace(" ","",$var);

  }

  大家可以自己测试一下这类漏洞,不管什么语言过滤的思路都是一样的,用GOOGLE搜索: powered by Loudblog可以找到一些这类程序,不过官方现在已经推出新版本了,更多的漏洞等待大家自己去发掘吧.

  当PHP配置文件中的allow_url_open打开的话,我们可以在自己的WEB服务器上建立一个同名文件里面包含shell命令,然后提交我们自己建立的shell文件让被攻击的服务器远程包含,可以以WEB权限执行命令,这样就是所谓的远程执行命令漏洞了。

浏览相关更多资讯·PS常见问题及解答·PS混合模式·PS制作动画效果·制作羽毛·PS中通道的使用方法

SEO网站营销知识分类

热点SEO网站优化知识

1.网络营销与SEO的区别在哪里 很多人在SEO与网络营销认识上存在着一些误区!很多朋友都以为SEO是网络营销的全部,以为SEO就是SEM。其实网络营销是非常全面的,不仅仅是在网站建设开始策划...

2.网站建设页面结构对搜索引擎 中坚站指出页面结构是一个很重要的SEO问题。它不仅只是关系到搜索引擎优化同时也与网站的用户体验有关。所以,如何能够提升这些页面的质量,从而带动整体的长尾关...

3.网站优化原因是什么 目的是让人快速地明白你的网站在说什么,第二个目的是让搜索引擎明白你的网站在说什么网站优化的目的就是为了让网站同搜索引擎和人更好地“沟通”。站点结构优化 合...

4.腾讯与360大战中总结出的网络营销知识 在腾讯360大战中,360在如此短的时间内,获得了如此高的公众关注度,吸引了无数民众的眼球,本身在知名度提升这方面就获得了巨大成功。   按理说360的实力和...

5.再谈网站建设的目的企业网站所面对的不再是“被动”的读者,而是有目地的“主动”客户。买主以及潜在的客户将透过INTERNET主动的找到企业网站,要求他们所需要的服务。一个设计得当的...

6.业内人士总结的网络营销必备要素 由于网络营销是一种最近才兴起新型的营销手段,在实际操作的过程中,企业由于把握不够准确难免出现诸多误区,结果搞成事与愿违的局面,让一些满怀希望的企业受到打击,甚...

网站建设案例|SEO优化知识| SEO营销网站建设| 办公OA系统| 高端个性网站建设| 大型门户网站建设| WAP网站建设| 关于中坚站| 联系方式 | Top

喜讯:凡签约金额在 6800¥ 以上(含6800¥)的新老客户,自2011年1月1日起,可申请网站终身免费升级服务,详情致电VIP客户专线:13714595270 谷生
全国服务热线:400-0755-009 电话/传真:0755-28129782 邮箱:seo@ilikeseo.cn 地址:深圳市龙华镇宝华路173号潮回楼510#  粤ICP备:11001356 号
本站关键词:网站SEO网站优化营销型网站建设门户型网站建设开发办公OA系统WAP手机网站建设高端个性网站建设。建营销型网站,就找中坚站,5年营销型网站建设经验,值得信赖!