zoukankan      html  css  js  c++  java
  • 文件上传思路

    upload-labs分类

    image-20201005212658046

    如何判断上传漏洞类型:

    image-20201005213135171

    结合Upload_Attack_Framework来完成对上传漏洞的总结

    客户端

    js检查及绕过

    这类检测通常在上传页面里含有专门检测文件上传的 javascript 代码 最常见的就是检测扩展名是否合法

    绕过方法:

    1. 禁用相关检测js
    2. 绕过后使用burp进行截断修改后提交

    服务端

    检查后缀

    黑名单

    上传.htaccess绕过:

    当黑名单中不存在.htaccess的时候 可上传名为.htaccess的文件,内容如下:

    <FilesMatch "lktop">
    SetHandler application/x-httpd-php
    </FilesMatch>
    

    当apache在解析该目录下的php时,就会按照.htaccess中的要求去解析,只要匹配到了文件名里有lktop这个字符串,就会把该文件当成php文件解析

    还可写成

    <FilesMatch "lktop.lpp">
    SetHandler application/x-httpd-php
    </FilesMatch>
    
    上传特殊可解析后缀

    在apache的httpd.conf配置中,存在

    AddType application/x-httpd-php .php .php3 .phtml
    

    可将 php3 phtml后缀解析为php进行执行

    后缀大小写绕过

    在黑名单处理前并未对后缀进行大小写转换,故采用混合大小写即可。(phP,pHp,pHP,Php.......)

    空格绕过

    在黑名单处理前并未对文件名进行去空处理,在后缀尾部加空格即可。

    点绕过

    在黑名单处理前并未对文件名进行去”.”处理,用windows特性,会自动去掉后缀名中最后的”.”,可在后缀名中加”.”绕过。

    ::$DATA绕过

    在黑名单处理前并未对文件名进行去”::$DATA”处理,php在window的时候如果文件名+"::$DATA"会把::$DATA之后的数据当成文件流处理,不会检测后缀名.且保持"::$DATA"之前的文件名

    双写绕过

    由于保存的文件名是使用的处理过的文件名,故可以双写尾部。(如 点+空格+点)

    当对黑名单中的后缀名进行替换为空处理时,同样使用双写进行处理。(如 pphphp)

    白名单

    MIME类型绕过:

    截包修改Content-type类型为image/gif image/jpeg image/png

    %00截断

    只存在于php5.3.4以下

    在url中%00表示ascll码中的0 ,而ascii中0作为特殊字符保留,表示字符串结束,所以当url中出现%00时就会认为读取已结束。

    GET可以把url自动转码,但当save_path在post包里时,POST方式不会自动将%00编码为空字符。

    所以需要在burp中选中%00右击->url->urldecode go即可。

    检查内容

    图片马生成:

    copy normal.jpg /b + shell.php /a webshell.jpg

    或用二进制打开在尾部添加木马

    如遇到二次渲染可以分析不变的位置,并把木马插入相应的位置,详细分析参考:https://xz.aliyun.com/t/2657

    检测逻辑

    文件上传后会一步步检查文件,检查大小,检查是否存在,然后对文件重新命名,可以使用burp不断发送上传数据包,由于条件竞争,程序会出现来不及rename的问题,从而上传成功。

    参考

  • 相关阅读:
    triplet loss 在深度学习中主要应用在什么地方?有什么明显的优势?
    一个评测指标就是MAP(Mean Average Precision)平均精度均值。
    机器学习术语中英对照表
    logistic softmax
    mysql导出导入sql文件方法(linux)
    mysql分区表
    matplotlib安装错误依赖问题解决
    linux命令集合
    linux下安装或升级GCC4.8.2,以支持C++11标准[转]
    linux 如何显示一个文件的某几行(中间几行)
  • 原文地址:https://www.cnblogs.com/lktop/p/13754118.html
Copyright © 2011-2022 走看看