入侵检测PHP程序中的目录遍历漏洞.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
目录遍历漏洞在国内外有许多不同的叫法,比如也可以叫做信息泄露漏洞,非授权文件包含漏洞.名称虽然多,可他们却有一个共同的成因,就是在程序中没有过滤用户输入的../和./之类的目录跳转符,导致恶意用户可以通过提交目录跳转来遍历服务器上的任意文件,其危害可想而知.这类漏洞大家比较熟悉的可能就是在一些邮件列表程序以及网络硬盘程序中,其实这类漏洞还广泛存在与一些国外的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=blogblogid=../../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

文档评论(0)

yan666888 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档