浅谈文件解析及上传漏洞

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介:

1240

中国菜刀


    在web渗透中,我最期待两种漏洞,一种是任意命令执行漏洞,如struct2漏洞等;另一种是文件上传漏洞,因为这两种漏洞都是获取服务器权限最快最直接的方法。而对于任意命令执行漏洞,如果是通过内网映射出来的,那么可能还需要使用不同的手段进行木马文件上传,从而获取webshell,通过webshell进行端口转发或者权限提升。
    本文主要是介绍文件上传中的个人利用技巧经验汇总,讲解分为两部分:一部份是文件解析漏洞,另一部份是文件上传漏洞。

文件解析漏洞

    解析漏洞主要是一些特殊文件被iis、Apache、Nginx等服务在某种情况下解释成脚本文件格式并得以执行而产生的漏洞。

iis 5.x/6.0解析漏洞

    iis6.0解析漏洞主要有以下三种:
 1. 目录解析漏洞 /xx.asp/xx.jpg
    在网站下创建文件夹名字为.asp、.asa的文件夹,其目录内的任何扩展名的文件都被iis当做asp文件来解析并执行。因此只要攻击者可以通过该漏洞直接上传图片马,并且可以不需要改后缀名!
2. 文件解析 xx.asp;.jpg
    在iis6.0下,分号后面的不被解析,所以xx.asp;.jpg被解析为asp脚本得以执行。
3. 文件类型解析 asa/cer/cdx
    iis6.0 默认的可执行文件除了asp还包含这三种asa、cer、cdx。

Apache解析漏洞

    Apache对文件的解析主要是从右到左开始判断并进行解析,如果判断为不能解析的类型,则继续向左进行解析,如xx.php.wer.xxxxx将被解析为PHP类型。

IIS 7.0/ Nginx <8.03畸形解析漏洞

    在默认Fast-CGI开启状况下上传名字为xx.jpg,内容为:
<?PHP fputs(fopen('shell.php','w'),'<?php eval($_POST[cmd])?>');?>
    然后访问xx.jpg/.php,在这个目录下就会生成一句话木马shell.php。

Nginx<8.03空字节代码执行漏洞

    nginx如下版本:0.5., 0.6., 0.7 <= 0.7.65, 0.8 <= 0.8.37在使用PHP-FastCGI执行php的时候,URL里面在遇到%00空字节时与FastCGI处理不一致,导致可以在图片中嵌入PHP代码然后通过访问xxx.jpg%00.php来执行其中的代码。
    另一种Nginx文件漏洞是从左到右进行解析,既可绕过对后缀名的限制,又可上传木马文件,因此可以上传XXX.jpg.php(可能是运气,也可能是代码本身问题,但在其他都不能成功的条件下可以试试)。如下:
Content-Disposition: form-data; name="userfiles"; filename="XXX.jpg.php"

htaccess文件解析

    如果Apache中.htaccess可被执行并可被上传,那么可以尝试在.htaccess中写入:
<FilesMatch "shell.jpg"> SetHandler application/x-httpd-php </FilesMatch>
    然后再上传shell.jpg的木马,这样shell.jpg就可被解析为PHP文件了。

操作系统特性解析

    由于windows会将文件的后缀中的空格以及点进行过滤,如果遇到是黑名单校验的,如限制不允许上传PHP文件,而系统又是windows系统,那么我们可以上传xx.php ,或者xx.php.,通过这种方式就可以绕过黑名单检验的文件上传!

文件上传漏洞

前端上传限制

   有的网站由于对文件上传的地方只做前端的一个校验,导致可轻易绕过,因为前端的一切限制都是不安全的!

   如下是一个只对前端进行校验的一个上传测试点:

wKioL1mX0EWgfzAEAACfMTzbCoY510.jpg-wh_50

  在这里我是开启了burp抓包的,但是我一点击上传就提示无法上传,而burp未抓到任何数据库,这说明这是一个前端校验的一个上传,在这里我们通过禁用js来直接上传php的webshell,我们也可以先将我们的php的webshell进行后缀名更改,如更改为jpg,然后上传,通过burp抓包,然后发往repeater中进行测试,如图:

wKiom1mX0PeCFvxdAAJ0K-6bgD0281.jpg-wh_50

  此时我们在将我们上传的文件更改为我们的原本后缀名php,即可成功上传!

wKioL1mX0SXRVeOpAAI3DRfocYI594.jpg-wh_50

文件头欺骗漏洞

    在一句话木马前面加入GIF89a,然后将木马保存为图片格式,可以欺骗简单的waf。

从左到右解析

    我们在上传文件的时候,还有遇到服务器是从左到右进行解析的漏洞,也就是说服务器只检查文件名的第一个后缀,如果满足验证要求即可成功上传,但是我们都知道,只有最后一层的后缀才是有效的,如1.jpg.php,那么真正的后缀应该是PHP文件,根据这个我们可绕过相关验证进行上传。

  我们上传通过burp抓包并在repeater中进行尝试上传:

wKiom1mX06myD9PmAAJJKs46idY716.jpg-wh_50

   此时我们将后缀改为php试试:

wKioL1mX08GgNf_eAAIrBb1htaA419.jpg-wh_50

   发现上传失败,这是我们可以试试上传一个.jpg.php的PHP文件:

wKiom1mX0_igzx--AAIzvqnDoUY603.jpg-wh_50

   我们可以发现,文件成功上传!

filepath漏洞

    filepath漏洞主要用来突破服务器自动命名规则,主要有以下两种利用方式:
    1、改变文件上传后路径(filepath),可以结合目录解析漏洞,路径/x.asp/
    2、直接改变文件名称(都是在filepath下进行修改),路径/x.asp;.

  对于第一种我们使用较多,如下是一个上传测试页面:

wKiom1mXyVKAki2CAAAwhgHmrAI095.jpg-wh_50

   我们使用burp进行抓包并且发往repeater里面,如图:

wKioL1mXyX2T4VZrAAN-k1tHWco846.jpg-wh_50

   此时我们上传是不成功的,而请求的头里面显示了上传后的目录,此时我们在此目录下新增一个eth10.php的目录,然后将filename改为图片格式,如jpg,但是如果直接这样的话还是上传不成功,于是我们可以结合00截断来进行上传,在新建的目录后面使用00截断,如图上传成功:

wKiom1mXylPRhjMJAAEW-LQljM8547.png-wh_50

    另外有一种情况我们我们在原目录下新建一个eth10.php的文件,然后直接使用00截断,这样我们依旧可以上传php文件,因为上传是使用filepath以及filename来控制的,filename白名单,那么我们就可以从filepath入手!利用手法和上面一样,唯一的区别是在00截断前不加最后一个斜杠(/),

00截断

    00截断的两种利用方式:
    1、更改filename,xx.php .jpg,在burpsuit中将空格对应的hex 20改为00
    2、更改filename,xx.php%00.jpg,在burpsuit中将%00进行右键转换-url-urldecoder

filetype漏洞

    filetype漏洞主要是针对content-type字段,主要有两种利用方式:
    1、先上传一个图片,然后将content-type:image/jpeg改为content-type:text/asp,然后对filename进行00截断,将图片内容替换为一句话木马。
    2、直接使用burp抓包,得到post上传数据后,将Content-Type: text/plain改成 Content-Type: image/gif

    我们经常使用的一般是第二种,主要是将conten-type改为服务器accept的类型。如下图是一个简单的上传测试页面:

wKiom1mXwZvyJGAhAABuY-yxI4g855.jpg-wh_50

    我们直接上传一个PHP的文件,使用burp进行抓包,然后发往repeater里,如图:

wKioL1mXweCg1GJiAAItoxcQ8rg969.jpg-wh_50

    此时显示的是非图片文件,此时我们将conten-type改为服务器accept的图片类型,即可成功上传php文件,图中显示的flag你可以当成是实战中生成成功后的路径,从而getshell,如图:

wKioL1mXwiaQxlBCAAJ2e9u4ojU652.jpg-wh_50

iconv函数限制上传

    如果某天你上传文件发现,不管你上传什么文件,上传后的文件都会自动添加一个.jpg的后缀,那么我们可以怀疑是否是使用iconv这个函数进行了上传的限制,此时我们可以使用类似00截断的方法,但是这里不是00截断,二是80-EF截断,也就是说我们可以修改HEX为80到EF中的某一个来进行截断,如果真是使用这个函数的话,那么恭喜你上传任意文件成功!如上传一个xx.php ,然后截断抓包将后面的空格对应的十六进制改为80到EF中的任意一个!

双文件上传

    再一个文件上传的地方,右键审查元素,首先修改action为完整路径,然后复制粘贴上传浏览文件(<input ......),这样就会出现两个上传框,第一个上传正常文件,第二个选择一句话木马,然后提交。!参考链接

表单提交按钮

    我们有时扫描发现上传路径,可是只有一个浏览文件,却没有提交按钮,此时我们就需要写入提交按钮。
    写入表单:
    F12审查元素,在选择文件表单下面添加提交按钮代码。
<input type="submit" value="提交" name="xx"> 本文转自 eth10 51CTO博客,原文链接:http://blog.51cto.com/eth10/1956032

相关文章
|
4天前
|
JavaScript API
深入探索fs.WriteStream:Node.js文件写入流的全面解析
深入探索fs.WriteStream:Node.js文件写入流的全面解析
|
3天前
|
XML 存储 网络安全
ROS入门(二):launch文件解析
该文章是关于ROS入门的第二篇教程,详细解析了ROS中的launch文件,包括其运行方式、XML格式规范、标签使用、参数替代、条件属性以及通过简单和复杂案例来演示launch文件的使用,最后介绍了如何在参数服务器上设置参数。
ROS入门(二):launch文件解析
|
4天前
|
存储 安全 网络安全
网络安全与信息安全:从漏洞到防范的全方位解析
【8月更文挑战第27天】在数字化时代,网络安全和信息安全的重要性日益凸显。本文将深入探讨网络安全漏洞、加密技术以及安全意识等方面的内容。我们将通过实例分析,揭示网络攻击者如何利用安全漏洞进行入侵,并介绍常见的加密技术及其应用。此外,我们还将强调提升个人和企业的安全意识对于防范网络攻击的重要性。无论你是IT专业人士还是普通用户,这篇文章都将为你提供宝贵的知识和技能,帮助你更好地保护自己的数字生活。
|
16天前
|
存储 数据采集 数据可视化
深入解析GPS接收机的位置数据文件:项目实战从数据解析到可视化
全球定位系统(GPS)是现代技术的支柱之一,广泛应用于交通导航、科学研究、智能设备等领域。GPS接收机通过接收来自卫星的信号,确定设备的地理位置,并将这些位置信息记录在数据文件中。 这些数据文件通常包含大量的信息,如时间、位置、海拔高度、卫星状态等。本篇文章将通过解析这些数据文件,展示如何利用Python和Folium库实现数据的读取、处理和可视化,帮助读者深入理解GPS数据的处理过程。
|
17天前
|
SQL 安全 算法
网络安全与信息安全:漏洞、加密技术与安全意识的深度解析
【8月更文挑战第14天】在数字化时代,网络安全和信息安全的重要性日益凸显。本文将深入探讨网络安全漏洞、加密技术以及提升个人和企业的安全意识等方面的内容。我们将通过具体案例,分析网络攻击的手段和后果,揭示加密技术的原理和应用,同时强调提升安全意识的必要性。文章旨在为读者提供全面的网络安全知识,帮助他们更好地保护自己的信息资产。
30 1
|
19天前
|
存储 安全 物联网
网络安全的盾牌与剑:漏洞防御与加密技术解析
在数字世界的海洋中,网络安全是航船上不可或缺的指南针。本文将深入探讨网络漏洞的识别与防范,同时揭示加密技术如何在保护信息安全中扮演关键角色。通过分析安全意识的重要性和提升策略,我们旨在为读者提供一套实用的网络安全知识框架,确保个人和企业能在信息战中站稳脚跟。
|
25天前
|
监控 数据挖掘 Python
python3解析wav文件获取dtmf值
【8月更文挑战第5天】这段Python代码示例展示了如何解析WAV文件并检测其中的双音多频(DTMF)信号。它首先打开并读取WAV文件的内容,接着利用`numpy`和`scipy`库计算频谱图。通过定义标准的DTMF频率对,并在频谱中寻找这些特定的频率组合,从而识别出DTMF值。此代码可用于电话系统监控或音频数据分析项目中,以自动化检测和处理DTMF信号。
|
21天前
|
SQL 安全 网络安全
数字堡垒的裂缝与钥匙:网络安全漏洞与加密技术解析
在数字化时代的浪潮中,网络安全成为了保护信息资产的坚固城墙。然而,网络攻击者不断寻找着城墙的裂缝——安全漏洞,企图突破防线窃取或破坏数据。本文将揭示这些裂缝的本质,探讨如何通过加密技术加固防御,并强调提升个人与企业的安全意识在维护网络安全中的重要性。从基础概念到实际操作,我们将一同走进网络安全的世界,理解它、强化它,最终守护我们共同的数字家园。
25 3
|
2天前
|
机器学习/深度学习 计算机视觉 Python
深度学习项目中在yaml文件中定义配置,以及使用的python的PyYAML库包读取解析yaml配置文件
深度学习项目中在yaml文件中定义配置,以及使用的python的PyYAML库包读取解析yaml配置文件
12 0
|
7天前
|
SQL 安全 网络安全
网络安全与信息安全:从漏洞到加密技术,再到安全意识的全方位解析
【8月更文挑战第24天】在数字化时代,网络安全与信息安全的重要性不言而喻。本文将从网络安全漏洞、加密技术和安全意识三个方面进行深入探讨。我们将通过实例分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调提高个人和组织的安全意识的重要性。希望读者能够从中获得有价值的信息,并应用到实际生活中,共同构建一个更加安全的网络环境。

热门文章

最新文章

推荐镜像

更多
下一篇
云函数