渗透第一次作业

一、 PHP伪协议

1.什么是PHP伪协议

PHP伪协议是PHP自己支持的一种协议与封装协议,简单来说就是PHP定义的一种特殊访问资源的方法。有些伪协议成功执行需要allow_url_fopen和allow_url_include的支持。

allow_url_fopen On/Off 允许或禁止打开URL文件

allow_url_include On/Off 允许或禁止引用URL文件

2.什么时候用PHP伪协议

文件包含的时候,可能遇到的文件包含函数:

1、include

2、require

3、include_once

4、require_once

5、highlight_file

6、show_source

7、flie

8、readfile

9、file_get_contents

10、file_put_contents

11、fopen (比较常见)

3.常见的PHP伪协议

1.file协议(默认文件协议)

作用:访问本地文件系统

2.php://协议

1).php://input(读取原始请求体)

php://input 是个可以访问请求的原始数据的只读流,获取POST请求数据的协议

当675enctype="multipart/form-data" 的时候 php://input 是无效的。

php://input 伪协议 成功执行前提php.ini 中的 allow_url_include设置为On

2).php://filter(编码解码文件)

php://filter可以获取指定文件源码。当它与包含函数结合时,php://filter流会被当作php文件执行。所以我们一般对其进行编码,让其不执行。从而导致任意文件读取。

php://filter在双off的情况下也可以正常使用;

allow_url_fopen :off/on

allow_url_include:off/o

3.zip://, bzip2://, zlib://协议

zip://, bzip2://, zlib://协议在双off的情况下也可以正常使用;

allow_url_fopen :off/on

allow_url_include:off/on

1)zip://

作用:访问 ZIP 压缩包内部的文件,而 无需手动解压。

基本语法:zip://压缩包路径#内部文件路径

  • zip://中只能传入绝对路径。

  • 要用#分隔压缩包和压缩包里的内容,并且#要用url编码%23(即下述POC中#要用%23替换)

  • 只需要是zip的压缩包即可,后缀名可以任意更改。

  • 相同的类型的还有zlib://和bzip2://

2)bzip://协议(单文件流)

作用:用于 读取 .bz2 压缩文件,读取时自动解压。

基本语法:bzip2://文件路径(没有 #,因为 bzip2 只压缩一个流,不支持目录结构)

3)zlib协议

作用:读取 gzip / deflate 压缩数据

基本语法:zlib://文件路径

二、文件包含漏洞

文件包含漏洞 是指:程序在包含文件时,文件路径可被用户控制,且未做严格校验, 导致攻击者可以包含任意文件。

include($_GET'file'); // 用户可控

常见包含函数

include 包含失败仅警告

require 包含失败致命错误

include_once 包含一次

require_once 只包含一次(致命)

文件包含漏洞与 PHP 伪协议关系

|--------------|-----------|-----------|
| 伪协议 | 在文件包含中的作用 | 利用目标 |
| file:// | 本地文件 | 信息泄露 |
| php://filter | 文件过滤 | 源码泄露 |
| php://input | 请求体 | 远程代码执行 |
| data:// | 内嵌数据 | 无文件 RCE |
| zip:// | 压缩文件 | LFI → RCE |
| phar:// | PHAR 归档 | 反序列化 |
| zlib:// | gzip 流 | 绕过执行限制 |

(1)php://filter

读取 PHP 源码,但不执行

php 复制代码
php://filter/read=convert.base64-encode/resource=index.php

执行流程:

  1. 打开 index.php

  2. 先 base64 编码

  3. include 得到的是"编码后的文本"

  4. PHP 无法解析 → 只输出

(2)php://input

让 include 执行 HTTP 请求体里的代码

(3)zip://

执行 ZIP 压缩包内的 PHP 文件

(4)phar://

触发 PHP 反序列化漏洞

(5)包含APACHE日志文件

WEB服务器一般会将用户的访问记录保存在访问日志中。那么我们可以根据日志记录的内容,精心构造请求,把PHP代码插入到日志文件中,通过文件包含漏洞来执行日志中的PHP代码。

(6)包含SESSION

session记录登录行为,以及账号信息

利用条件:

  • 找到Session内的可控变量

  • Session文件可读写,并且知道存储路径

session常见存储路径:

  • /var/lib/php/sess_PHPSESSID

  • /var/lib/php/sess_PHPSESSID

  • /tmp/sess_PHPSESSID

  • /tmp/sessions/sess_PHPSESSID

(7)包含/PROC/SELF/ENVIRON

proc/self/environ中会保存user-agent头,如果在user-agent中插入php代码,则php代码会被写入到environ中,之后再包含它,即可。

利用条件:

  • php以cgi方式运行,这样environ才会保持UA头。

  • environ文件存储位置已知,且environ文件可读。

(8)包含临时文件

php中上传文件,会创建临时文件。在linux下使用/tmp目录,而在windows下使用c:\winsdows\temp目录。在临时文件被删除之前,利用竞争即可包含该临时文件。

(9)包含上传文件

相关推荐
网络研究院14 天前
2026年网络安全
网络·安全·法律·法规·趋势·发展
酣大智14 天前
ARP代理--工作原理
运维·网络·arp·arp代理
treesforest14 天前
AI安全系统如何识别异常访问?IP风险识别正在成为关键能力
网络·人工智能·tcp/ip·安全·web安全
shushangyun_14 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
2601_9618451514 天前
粉笔行测题库|系统班|刷题
网络·百度·微信·微信公众平台·facebook·新浪微博
程序猿阿伟14 天前
《Chrome离线扩展安装的底层逻辑与场景落地指南》
服务器·网络·chrome
InHand云飞小白14 天前
无人值守站点网络困境?工业级路由器IR315破解连接难题
网络·物联网·4g·工业路由器·4g路由器·iiot·蜂窝路由器
森G14 天前
75、服务器源码解析---------云视频服务项目
linux·服务器·网络·c++·qt
江华森14 天前
TCP/IP 协议栈实战 — 7 个实验详解
网络·tcp/ip·智能路由器
酉鬼女又兒14 天前
零基础入门计算机网络运输层:端到端通信核心作用、端口号分类规则、复用分用工作机制及UDP与TCP协议全方位对比详解
网络·网络协议·tcp/ip·计算机网络·考研·udp·php