条件上传文件上传配合文件包含提高命中率

作者:神秘网友 发布时间:2021-11-25 14:06:43

条件上传文件上传配合文件包含提高命中率

本篇博客是看P神博客的学习笔记https://www.leavesongs.com/PENETRATION/docker-php-include-getshell.html

这里我主要使用了session.upload_progress与Session文件包含

通过session progress功能实现临时文件的写入。
这种利用呢需要几个条件

  • 目标环境开启了seesion.upload_progress.enable选项
  • 发送一个文件上传请求,其中包含一个文件表单和一个名字是PHP_SESSION_UPLOAD_PROGRESS的字段
  • 请求的Cookie中包含Session ID

这个方法的原理是,PHP在开启了session.upload_progress.enable后(在包括Docker的大部分环境下默认是开启的),将会把用户上传文件的信息保存在Session中,而PHP的Session默认是保存在文件里的。
所以当攻击者发送满足上述条件的数据包时,就等于能够控制Session文件内容。
我们可以尝试发送满足上述条件的数据包来测试一下,但会发现虽然我们可以让PHP开启Session,从而在/tmp目录下遗留下Session文件,但这个文件内容是空的。
原因是,PHP中还有另外一个配置项session.upload_progress.cleanup,默认开启。在这个选项开启时,PHP会在上传请求被读取完成后自动清理掉这个Session,如果我们尝试把这个选项关闭,就可以读取到Session文件的内容了
注意的是,如果我们只上传一个文件,这里也是不会遗留下Session文件的,所以表单里必须有两个以上的文件上传。
所以,默认情况下,我们需要在Session文件被清理前利用它,这也会用到条件竞争(Race Condition)。
因为这里的Session文件名是可控的所以就不用担心读文件名的问题

那么,如果关闭了session.upload_progress.enable,是否还有其他利用方法呢

我们的目的是在服务器上留下一个内容可控的文件,最简单的方法就是利用上传包的临时文件。但这个临时文件之所以不能直接利用,原因有两点:

  • 临时文件名是随机的
  • 临时文件在请求结束后会被删除
    如果说第一点我们可以通过爆破来解决,那么第二点是一定无法同时解决的——我们不可能在请求结束前爆破出临时文件名。
    经过上面的分析,我们很容易想到一种解决方案:如果我们可以让PHP进程在请求结束前出现异常退出执行,那么临时文件就可以免于被删除了。
    PHP底层是C语言开发的,不少内存错误都会导致进程异常退出,当然不论是Apache还是PHP-FPM都会存在master进程,在某一个子进程异常退出后会拉起新的进程来处理用户请求,不用担心搞挂服务器。
    include 'php://filter/string.strip_tags/resource=/etc/passwd';
php
file(urldecode('php://filter/convert.quoted-printable_encode/resource=data://,%bfAAAAAAAAFAAAAAAAAAAAAAA%ff%ff%ff%ff%ff%ff%ff%ffAAAAAAAAAAAAAAAAAAAAAAAA'));

这些文件包含的就会导致php程序内存出错从而使php挂掉线程重启从而我们上传上去的文件就不会被删掉了


本文章教程介绍完毕,更多请访问跳墙网其他文章教程!

条件上传文件上传配合文件包含提高命中率 相关文章

  1. 多条件分页,增加,修改,删除(包含文件上传,下载)(图书管理

    多条件分页,增加,修改,删除(包含文件上传,下载)(图书管理系统) 首先,我们看一下实现类中的 sql代码 package cn.happy.dao.impl;import java.sql.ResultSet;import java.util.ArrayList;import java.util.Date;import java.util.List;import org.juni

  2. 文件上传/文件包含

    文件上传/文件包含 文件上传 1、前端验证 如:检测 . 后的后缀名 绕过方式:burp进行抓包修改后缀 2、后端验证 (1)获取文件名,过滤php后缀 绕过方式1:.php4 .php5 .phtml php2, php3, php4, php5, phps, pht, phtm, phtml 绕过方式2:apache解析漏...

  3. PHP -- 文件包含、文件上传漏洞

    PHP -- 文件包含、文件上传漏洞 文件包含 文件引入漏洞,是由一个动态页面编译时引入另一个文件的操作。 文件引入本身是没有问题,它是用于统一页面风格,减少代码冗余的一种技术。但是在特定的场景下就会形成漏洞 jsp :...

  4. 通达OA 任意文件上传+文件包含导致RCE

    通达OA 任意文件上传+文件包含导致RCE ispirit/im/upload.php存在绕过登录(任意文件上传漏洞),结合gateway.php处存在的文件包含漏洞,最终导致getshell,或者直接利用日志文件写入shell,然后结合文件包含漏洞getshell 通达OA V11版 = 11.3 202...

  5. 学习PHP中使用Session配合Javascript实现文件上传进度条功能

    Web应用中常需要提供文件上传的功能。典型的场景包括用户头像上传、相册图片上传等。当需要上传的文件比较大的时候,提供一个显示上传进度的进度条就很有必要了。 在PHP 5.4以前,实现这样的进度条并不容易,主要有三种...

  6. 学习PHP中使用Session配合Javascript实现文件上传进度条功能

    Web应用中常需要提供文件上传的功能。典型的场景包括用户头像上传、相册图片上传等。当需要上传的文件比较大的时候,提供一个显示上传进度的进度条就很有必要了。 在PHP 5.4以前,实现这样的进度条并不容易,主要有三种...

  7. 高安全级别文件上传结合文件包含漏洞渗透web实验

    高安全级别文件上传结合文件包含漏洞渗透web实验 实验环境 kali owasp_broken_web_apps windows 10 实验工具 中国菜刀,burpsuit,图片木马插入工具,一句话木马 实验内容: 打开owasp_broken_web_apps的网址并将文件上传漏洞安全级别为高级即...

  8. 通达OA未授权任意文件上传及文件包含漏洞分析学习

    通达OA未授权任意文件上传及文件包含漏洞分析学习 今年3月份通达OA爆出了文件上传和文件包含漏洞,网络上很多复现和分析的博客,今天我也来试着分析分析,据360灵腾安全实验室判断该漏洞等级为高,利用难度低,威胁程度...

  9. 通达OA V11.3 代码审计 (文件上传、文件包含、任意用户登录漏洞

    通达OA V11.3 代码审计 (文件上传、文件包含、任意用户登录漏洞) 因为这段时间比较忙,抽出时间写博客很不容易,所以就简单的吧印象笔记里面的内容站上俩,没有写太多具体的分析过程,尽量都在截图中说明了 附件 通达OA...

  10. 综合案例--文件的上传案例,文件上传阻塞问题,文件上传优化(文

    综合案例--文件的上传案例,文件上传阻塞问题,文件上传优化(文件命名循环接收多线程提高效率) 黑马程序员 客户端 服务器 package FileUpload;import java.io.*;import java.net.Socket;public class TCPClient { public static void main(String[] args) t

  11. js显示上传图片的缩略图、验证上传文件的格式、验证上传文件大小

    js显示上传图片的缩略图、验证上传文件的格式、验证上传文件大

  12. 【STM32】使用SDIO进行SD卡读写,包含文件管理FatFs(终)-配合内存管理来遍历SD卡

    【STM32】使用SDIO进行SD卡读写,包含文件管理FatFs(一)-初步认识SD卡 【STM32】使用SDIO进行SD卡读写,包含文件管理FatFs(二)-了解SD总线,命令的相关介绍 【STM32】使用SDIO进行SD卡读写,包含文件管理FatFs(三)-SD卡的操作流程 ...

  13. .net core实现单文件上传、多文件上传、js提交实现文件上传、图

    1. 单文件上传 在Visual Studio 2019中新建一个MVC项目。 在HomeController中添加SingleFile方法 public IActionResult SingleFile(IFormFile file){ var dir = env.WebRootPath; using (var fileStream = new FileStream(Path.Combine(dir,file.png),FileMo

  14. csv文件上传+去除文件中重复值+上传后文件的下载

    csv文件上传+去除文件中重复值+上传后文件的下载 一: 首先上传文件 编写upload方法来上传 1.用IS_GET获取值 实例化上传类。 设置附件上传大

  15. FTP文件上传文件实现,定时扫描文件夹上传指定格式文件文件到服

    FTP文件上传文件实现,定时扫描文件夹上传指定格式文件文件到服务器,C语言实现FTP文件上传详解及代码案例实现 问题咨询及项目源码请加群,下载各类资源,学习各类技术,一起交流一起进步: QQ群: 名称:IT项目交流群 群...

  16. 传统文件上传与SpringMVC的文件上传

    传统文件上传与SpringMVC的文件上传 maven中导入jar包依赖 dependency groupIdcommons-fileupload/groupId artifactIdcommons-fileupload/artifactId version1.3.1/version /dependency dependency groupIdcommons-io/groupId artifactIdcommons-io/artifactI

  17. C语言预处理指令-宏定义、文件包含、条件编译

    C语言预处理指令-宏定义、文件包含、条件编译 [var1] 1.C语言在对源程序进行编译之前,会先对一些特殊的 预处理指令 作解释(比如之前使用的#include文件包含指令),产生一个新的源程序(这个过程称为 编译预处理 ),之后再进行通...

  18. JSP实现文件上传下载和删除(附:JS获取上传文件的文件名)

    JSP实现文件上传下载和删除(附:JS获取上传文件的文件名) 1.文件上传 [var1] [var1] [var1] form action= id=form enctype=multipart/form-data method=postdiv style=padding-left: 10%;margin-top: 50px;label文档分类:select name=documentTypeId id=docu

  19. Mac怎么上传和下载文件Mac上传和下载文件的方法

    我们在上网的时候,除了聊天、看电影等之外,上传和下载东西也是我们经常会用到的操作之一,那么,在MAC中我们怎么才能上传和下载文件呢?今天小编就教大家如何使用MAC上传和下载文件的方法。 具体的方法: 下载工具:i...

  20. ajaxFileUpload+struts2实现多文件上传(动态添加文件上传框)

    ajaxFileUpload+struts2实现多文件上传(动态添加文件上传框) 上篇文章http://blog.csdn.net/itmyhome1990/article/details/36396291介绍了ajaxfileupload实现多文件上传, 但只是固定的文件个数,如果需求不确定是多少文件 则我们就需要动态的添加文件...

每天更新java,php,javaScript,go,python,nodejs,vue,android,mysql等相关技术教程,教程由网友分享而来,欢迎大家分享IT技术教程到本站,帮助自己同时也帮助他人!

Copyright 2021, All Rights Reserved. Powered by 跳墙网(www.tqwba.com)|网站地图|关键词