仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1400|回复: 19
打印 上一主题 下一主题

[学习教程] PHP网页编程之浅析PHP法式中的目次遍历破绽

[复制链接]
飘飘悠悠 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:39:36 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
HTML中的任何元素都要亲自实践,只有明白了什么元素会起到什么效果之后,你才会记忆深刻,而一味的啃书,绝对是不行的,我想大部分新手之所以觉得概念难学,大部分是一个字“懒”,懒是阻止进步的最大敌人,所以克服掉懒的习惯,才能更快的学好一样东西。     目次遍历破绽在国际外有很多分歧的叫法,好比也能够叫做信息泄漏破绽,非受权文件包括破绽.称号固然多,可他们却有一个配合的成因,就是在法式中没有过滤用户输出的../和./之类的目次跳转符,招致歹意用户可以经由过程提交目次跳转来遍历办事器上的恣意文件,其伤害可想而知.这类破绽人人对照熟习的能够就是在一些邮件列表法式和收集硬盘法式中,其实这类破绽还普遍存在与一些国外的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权限履行号令,如许就是所谓的近程履行号令破绽了。
<P style="TEXT-INDENT: 2em">
PHP原始为Personal Home Page的缩写,已经正式更名为 "PHP: Hypertext Preprocessor"。注意不是“Hypertext Preprocessor”的缩写,这种将名称放到定义中的写法被称作递归缩写。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-17 23:38

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表