博客
关于我
php伪协议利用文件包含漏洞
阅读量:680 次
发布时间:2019-03-16

本文共 1661 字,大约阅读时间需要 5 分钟。

PHP是一种强大的编程语言,广泛应用于Web开发,尤其在处理文件包含漏洞时具有显著优势。以下将简要总结几种常见的PHP文件包含协议及其利用方法,帮助开发人员更好地理解并防范潜在的安全风险。

1. PHP文件包含的基本原理

PHP文件包含允许开发人员通过调用include()require()等函数,包含外部文件并执行其代码。这些函数接受文件路径作为参数,并根据文件扩展名称(如.php.txt等)来决定如何处理文件内容。

  • 如果文件包含有效的PHP语法(即以<?php开头并以?>结束),include()/require()会将其作为代码执行。
  • 如果文件不包含PHP语法,即使文件扩展名为.php,也会被视为文本文件直接输出内容。
  • 有些文件可能使用Base64编码或其他方式隐藏PHP标识符,需要采取特定方法来解密。

2. 常见的PHP访问协议

PHP支持多种内置协议,可用于访问不同类型的文件或数据源,以下是几种常用的协议及其应用方法:

a. php://输入流

  • php://filter:用于过滤和筛选文件内容。通过设置特定的过滤规则,可以限制访问特定文件类型。

    • 适用于需要从 zwarteink corpus 中提取文件的场景。
  • php://input:允许从HTTP请求的输入流中读取数据。它主要用于处理POST、GET请求中的数据。

    • 示例:可以直接从PHP代码中读取用户提交的数据,而无需通过正文或表单变量接收。
  • php://data:允许用户提供可以执行的PHP代码,直接在页面中执行。它类似于<?php echo,但比传统方法更灵活。

    • 优势:可以直接输出自定义的PHP代码,灵活性和便利性高。
    • 注意事项:没有验证或过滤机制,直接执行用户提交的代码带来安全风险。

b. 本地文件访问

  • file://:用于访问本地文件系统,必须提供绝对路径。

    • 示例:file:///path/to/myfile.txt,只能访问本地文件,而不能跨服务器访问。
  • phar://:用于访问压缩文件,语法与file://类似。

    • 传入绝对路径:phar://absolute/path/to/phashtool.xml
    • 传入相对路径:phar:///../phashtool.xml
  • zip://:类似于phar协议,用于访问 zip/7z archives。

    • 格式要求:zip:// username:password@server:port/path/to/zipfile#fileinsidezip
    • 注意:#用于分隔压缩包名和内部文件名,未必总需使用,具体取决于服务器配置。

3. 安全注意事项

  • 允许远程文件包含:检查服务器配置,是否启用allow_url_fopenallow_url_include。-,默认情况下,这两项设置为关闭状态,需谨慎开启以减少安全风险。

  • 文件包含的最佳实践

    • 确保使用nonce或验证 tokens 来验证提交文件的合法性。
    • 如能,限制文件包含功能仅在需要时开放。
    • 定期进行安全审计,确保已禁用不必要的功能。

4. 实际应用示例

假设某个应用场景需要读取本地文本文件或执行特定的PHP脚本,可以通过以下方式实现:

  • 使用php://filter读取并过滤文件内容。
  • 使用file:///直接访问.txt文件内容,如果文件夹权限允许。
  • 使用phar://zip://访问压缩文件中的文档、代码或配置信息。

5. 使用php://input实现自定义代码执行

通过修改phpinfo.php文件,将php://input直接链接到输入流,可以实现动态代码执行。例如:

自定义代码执行示例

通过这种方式,可以根据不同的用户输入生成不同的输出,灵活应对多种场景需求。

总结

PHP文件包含漏洞是网络安全中常见的攻击点之一,理解并掌握合理使用这些协议的技巧是提升Web应用安全性的关键。同时,建议开发人员严格控制文件包含功能的使用范围,并定期对服务器配置进行审核。

转载地址:http://rcrqz.baihongyu.com/

你可能感兴趣的文章
Nginx配置ssl实现https
查看>>
Nginx配置TCP代理指南
查看>>
Nginx配置——不记录指定文件类型日志
查看>>
nginx配置一、二级域名、多域名对应(api接口、前端网站、后台管理网站)
查看>>
Nginx配置代理解决本地html进行ajax请求接口跨域问题
查看>>
nginx配置全解
查看>>
Nginx配置参数中文说明
查看>>
nginx配置域名和ip同时访问、开放多端口
查看>>
Nginx配置好ssl,但$_SERVER[‘HTTPS‘]取不到值
查看>>
Nginx配置如何一键生成
查看>>
Nginx配置实例-负载均衡实例:平均访问多台服务器
查看>>
Nginx配置文件nginx.conf中文详解(总结)
查看>>
Nginx配置负载均衡到后台网关集群
查看>>
ngrok | 内网穿透,支持 HTTPS、国内访问、静态域名
查看>>
NHibernate学习[1]
查看>>
NHibernate异常:No persister for的解决办法
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
查看>>
NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现数据实时delete同步_实际操作04---大数据之Nifi工作笔记0043
查看>>