• 文件上传高级利用


    重绘图

    正常图片上传后会重新渲染,会抹去代码加入部分。具体绕过方法可以参考大佬upload-labs总结

    使用工具绕过。

    项目地址

    https://github.com/RickGray/Bypass-PHP-GD-Process-To-RCE

    用法

    php codeinj.php demo.gif "<?php phpinfo();?>"

    结合phpinfo与本地文件包含利用

    参考上一篇博客

    目录穿越

    <Directory "D:/www/ichunqiu/upload">
    <FilesMatch ".(?i:php|php3|php4)$"
    Order Allow.Deny
    Deny from all
    </FilesMatch>
    </Directory>

    以上代码为在upload下无权限访问php,php3,php4等文件

    首先判断目录是否为权限限制

    访问如下url显示Forbidden

    上传图片正常访问如下

    访问不存在的图片显示Not Found

    以上访问过程可判断次目录无法访问php文件

    继续向上级目录访问

    以上图片判断upload目录也没有php访问权限

    直道测试到ichunqiu目录有访问权限

    上传图片bp抓包,file处修改为file/../../进行目录穿越上传成功

    如果碰到waf情况拦截../可以使用.././../进行绕过./代表当前目录

    在线解压缩

    Webshll打包到压缩包中

    1.模板上传处常用压缩包上传后进行自动解压

    1.1.部分此类有监测压缩包中的内容的,可尝试建立目录进行压缩

    2.使用目录穿越../的方法向上一级目录进行上传

    将php文件直接压缩为zip,然后用notepad++打开压缩文件如下

    将phpinfo改为../info,如下图

    文件上传

    成功上传并穿越目录

    将文件软链接打包到压缩包

    文件软链接到/etc/passwd等文件,达到任意文件读取

    ln -s /etc/passwd ./a   #文件/etc/pawwsd软链接到a
    zip --symlinks -r 1.zip ./a  #将a文件压缩为1.zip

    上传成功

    点击a查看到/etc/passwd文件

    文件软链接到/文件

    ln -s / b    #/软链接到b
    zip --symlinks 2.zip b  #将b压缩为2.zip

    上传2.zip,上传成功

    点击b显示目录

    其他技巧

    图片文件头十六进制匹配

    一般检查文件头内容是加入gif89a即可,但部分后台有可能需要强制匹配文件头的16进制数据

    如需要匹配下图中的xffxd8xff

    中bp抓包,文件中加入已url编码的%ff%d8%ff

    上传过程

    %ff%d8%ff进行urldecode

    可成功上传

    双写filename

    部分waf会监测第一个filename中的内容,而忽略第二个filename内容

    psfilename="oh-info.png";之后加一个空格再跟上第二个filename

    参考:https://choge.top/2020/02/29/%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0%E9%AB%98%E7%BA%A7%E5%88%A9%E7%94%A8/

  • 相关阅读:
    java.lang.NoClassDefFoundError的原因及解决
    关于安卓应用(APK文件)的二次打包
    Android应用Icon大小在不同分辨率下定义
    Android常见错误
    RelativeLayout相对布局 安卓布局技巧
    onTextChanged参数解释及实现EditText字数监听
    Django 基础
    Django 入门
    paramiko模块实现堡垒机
    Python操作MySQL
  • 原文地址:https://www.cnblogs.com/zzjdbk/p/14320733.html
Copyright © 2020-2023  润新知