• 文件上传漏洞小总结


    欢迎查看upload-labs writeuphttps://www.cnblogs.com/Qi-Lin/p/11296761.html

    前端绕过

    绕过js,通过bp中的proxy中的option中的选项移除掉javascript脚本,或者通过直接在浏览器中删除掉js

    绕过mime-type

    mime是多用途互联网邮件扩展类型,用于设定某扩展名文件的打开方式,如.png在数据包的中的content-type为image/png,所以可以通过bp截断绕过

    绕过黑名单

    黑名单没有白名单安全,可能有遗漏

    • php可以改为php3,php4,php5,phtml上传
    • .htaccess绕过,.htaccess是apache服务器中的一个配置文件,可以实现301重定向,自定义404错误页面,改变文件扩展名,阻止或允许用户访问特定目录或文件等。可以将.htaccess的内容写入sethandler application/x-httpd-php,这可以设置当前目录所有文件都用php解析。不过对应http.conf中allowoverride 应设置为all
    • 大小写绕过,只适用于windows,windows大小写不敏感
    • 空格绕过,windows中文件扩展名后的空格会做空处理
    • 点号绕过,windows下最后一个.会被自动剔除
    • 特殊符号绕过,windows下,如果上传的文件名后缀为php::$DATA会在服务器生成后缀为Php的文件,内容和上传内容相同,并被解析
    • 组合绕过,如1.php空格.
    • 如果上传大小有限制可以先上传小文件,然后利用小文件上传大文件
    • 如果代码是对黑名单进行空替换,可以利用双写绕过

    绕过白名单

    在系统对文件名读取时,如果遇到0x00会认为读取结束,如:1.php0x00.jpg在上传时认为是jpg,但在新建该文件文件时保存为1.php
    但在php5.3之后的版本已经修复,并且受gpc,addslashes函数影响

    • get型截断

    • post截断

    图片webshell

    当服务端是对会对上传文件的内容进行检测时,可以利用图片进行上传

    利用图片的webshell需要利用文件包含漏洞,这是因为在php中使用include,include_once,require,require_once函数包含的文件无论文件名称是什么都会被当做php代码执行

    • 可以上传图片,利用bp截断后,在图片内容后附上一句话木马等

    • 可以在代码中加入相关字符,如简单的为:

    GIF98A
    <?php
    phpinfo()
    ?>
    
    • 也可以利用隐写将木马追加到图片结束符后

    利用竞争条件上传

    • 文件上传后是先保存为一个临时文件,然后再重命名保存文件,如果网站允许上传任意文件,可能检查上传文件是否包含webshell,如果包含就删除,使用unlink删除文件。也可能发现不是指定类型,就使用unlink删除。所以,如果在删除之前访问上传的文件,就会执行文件中的代码
    • 例如:在文件中写入如下代码 ,此文件在执行时,新建一个shell.php的文件包含木马
    <?php
    fputs(fopen('shell.php',w),'<?php @eval($_post["pass"]) ?>');
    ?>
    
    • 在上传时不断发送http请求,请求该文件,可以利用一个python脚本如:
    import requests
    while true:
        requests.get("路径")
    

    解析漏洞相关

    iis6.0解析漏洞

    • 当建立*.asa, *.asp命名的文件夹时,目录下的所有文件都被当做asp文件解析
    • .asp;.jpg .php;.jpg等命名的文件时,被当做asp,php等文件解析
      如下利用bp截断后修改上传保存的目录,上传成功后,会在该目录uploadimg下生成1.php;文件夹,并在uploadimg文件夹下保存上传的文件,可能如1.php;1.jpg

    apache解析漏洞

    • 一些原理文章文章1文章2
    • 解析文件时,对于每种后缀采用对应的解析,如果没有,则采用前一个,比如对于文件1.php.jpg,如果不能解析.jpg则会采用.php对文件进行解析
      所以可以采用这种特性绕过限制
    • .htaccess绕过,.htaccess是apache服务器中的一个配置文件,可以实现301重定向,自定义404错误页面,改变文件扩展名,阻止或允许用户访问特定目录或文件等。可以将.htaccess的内容写入sethandler application/x-httpd-php,这可以设置当前目录所有文件都用php解析。
      所以可以先上传一个.htacess文件,文件内容为sethandler application/x-httpd-php,之后上传允许上传的格式的木马即可

    iis put上传漏洞

    iis有一个模块webdav。webdav是基于http1.1协议的通信协议,使得http支持put move copy delete方法。当服务器开启webdav,并有写入权限时,可能存在该漏洞。
    探测
    1、通过更改bp的数据包探测是否存在iis put漏洞,更改发送的数据包头options/http1.1 如果返回200说明存在
    2、也可以通过kali中的nikto探测,nikto -h ip
    利用方法
    1、构造数据包,上传txt文本文件
    put /a.txt http1.1
    content-length:30
    <%eval request()%>
    2、构造数据包通过move或copy重命名文件为可执行文件
    如copy /a.txt http1.1
    host:
    dstination:http://.../*.asp

    fck编辑器

    看到的一篇很好的相关总结
    查看版本
    editor/dialog/fck_about.html
    /_samples/default.html
    /_whatsnew.html
    根据版本查找上传点(其实编辑器本身也有上传点)
    如v2.6.6为
    /editor/filemanager/connectors/test.html
    /editor/filemanager/connectors/uploadtest.html
    采用绕过办法时
    如希望新建一个1.asp的文件夹,它会把点转换为下划线,所以可以在上传的时候,指定一个这样的新的文件夹,只会进行一级检测

  • 相关阅读:
    java throws处理
    java 对象的向下转型
    模仿百度三维地图的js数据
    MyEclipse:Address already in use
    Javascript 的addEventListener()及attachEvent()区别分析
    Javascript获得URL参数
    filter : progid:DXImageTransform.Microsoft.AlphaImageLoader
    TortoiseSVN使用简介(来自网络)
    javascript控制鼠标中键滑动
    跨浏览器实现自定义事件处理
  • 原文地址:https://www.cnblogs.com/Qi-Lin/p/11297452.html
Copyright © 2020-2023  润新知