php伪协议漏洞_第三十三课 文件包含漏洞基础以及利用伪协议进行攻击

分类

LFI(Local File Inclusion)

本地文件包含漏洞,顾名思义,指的是能打开并包含本地文件的漏洞。大部分情况下遇到的文件包含漏洞都是LFI。简单的测试用例如前所示。

RFI(Remote File Inclusion)

远程文件包含漏洞。是指能够包含远程服务器上的文件并执行。由于远程服务器的文件是我们可控的,因此漏洞一旦存在危害性会很大。但RFI的利用条件较为苛刻,需要php.ini中进行配置

两个配置选项均需要为On,才能远程包含文件成功。

4944839a2b6265a4f4c69d07ca9c1434.png

在php.ini中,allow_url_fopen默认一直是On,而allow_url_include从php5.2之后就默认为Off。

相关函数

php中引发文件包含漏洞的通常是以下四个函数:

1. include()
2. include_once()
3. require()
4. require_once()

reuqire() 如果在包含的过程中有错,比如文件不存在等,则会直接退出,不执行后续语句。

76a2f1bb819a8a8ff480fecead056040.png

include() 如果出错的话,只会提出警告,会继续执行后续语句。

efaa9c9929e0537b6f0032d0679c8be5.png

require_once() 和 include_once() 功能与require() 和 include() 类似。但如果一个文件已经被包含过了,则 require_once() 和 include_once() 则不会再包含它,以避免函数重定义或变量重赋值等问题。

php伪协议

php://input

利用条件:

  1. allow_url_include = On。
  2. 对allow_url_fopen不做要求。

姿势:

index.php?file=php://input

POST:
 phpinfo();?>

c3fbf1dd28b38fa19f478c18778d86bb.png

php://filter

利用条件:无甚

姿势:

index.php?file=php://filter/read=convert.base64-encode/resource=index.php

通过指定末尾的文件,可以读取经base64加密后的文件源码,之后再base64解码一下就行。虽然不能直接获取到shell等,但能读取敏感文件危害也是挺大的。

65132bdbb2d877a045a91a9ac0cc7290.png

>>> import base64
>>> base64.b64decode("PD9waHAgDQoJJGZpbGUgPSAkX0dFVFsnZmlsZSddOw0KCWluY2x1ZGUgJGZpbGU7DQo/Pg==")
b"<?php  \r\n\t$file = $_GET['file'];\r\n\tinclude $file;\r\n?>"

其他姿势:

index.php?file=php://filter/convert.base64-encode/resource=index.php

效果跟前面一样,少了read等关键字。在绕过一些waf时也许有用。

参考文章:https://chybeta.github.io/2017/10/08/php%E6%96%87%E4%BB%B6%E5%8C%85%E5%90%AB%E6%BC%8F%E6%B4%9E/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值