文件上传漏洞
原理
文件上传漏洞较好理解,简单来说就是渗透者往目标主机植入了一个后门程序,使得渗透者随时可以通过这个后门程序来访问到主机的系统,从而获取不法信息,通常也叫 Web Shell 攻击。
关于文件上传漏洞的教程,这里强烈推荐看看b站的视频:https://www.bilibili.com/video/BV1qQ4y1d7Ux/?spm_id_from=333.1007.top_right_bar_window_custom_collection.content.click&vd_source=3aadd380e5aa54a3ea92dc7db907b9db
一般情况下后门程序主要是一句话木马,语言多数是 php
,应该也有java把,但是我没见过,要是有知情的朋友也可以私信我和我说说,主要以一句话木马为主,以php语言为例, 一句话木马的案例如下所示:
<?php @eval($_POST['key']);?>
这段代码的作用是接受通过 HTTP POST 请求传递的名为 'key' 的参数里面的内容,并将其作为 PHP 代码执行。关于 eval, $_POST,可以参见如下链接:
eval 是一个非常危险的函数,不到万不得已千万不要随便使用,在植入了这个后门程序后,攻击者只需要在url 中访问对应的漏洞文件,并在发送的 POST 请求中设置 'key' 的内容为一个PHP 的恶意代码,例如在POST请求中设置参数:key=system(ipconfig)
,就可以获取到目标主机的IP 地址和相关的网段信息。
中间层漏洞
通常,网站的开发者是肯定不会允许用户随意上传任意类型的文件,通常在文件上传的接口处,通常会对开发者的套件做类型检查,如果绕过这个检查?将我们的后门上传上去就是文件上传漏洞的核心突破点。这里大家可以自己配置一个文件上传的漏洞靶场,github 的网址:https://github.com/c0ny1/upload-labs/releases
因我来看,除了开发者自己的校验检查外,在文件上传时最适合利用的就是中间件的漏洞也称解析漏洞,这是网站开发者们自己难以预防的套路,因此在上传时,率先查询他所使用的网站中间件是非常有必要的,以下介绍两个中间件漏洞。
IIS 6.0 :当建立 *.asa, *.asp 格式的文件夹时,其目录下的任意文件都将被 IIS 当作 asa 文件来解析; 当文件为 *.asp;1.jpg 时,IIS 6.0 同样会以 ASP 脚本来执行。
Apache : 在 Apache 1.x 和 Apache 2.x 中存在解析漏洞,实际上是基于其文件的解析原则:当碰到不认识的扩展名时,将会从后向前解析,直到碰到认识的扩展名为止。在 ./conf/minme.types 可以查看详细的认识的扩展名列表。
实际上中间层的漏洞有很多,甚至不止上述提到的两个中间件,具体,大家可以在 CVE 数据库: https://cve.mitre.org/ 中自己收集相关信息,亦或者,访问以下博客可以对各个套件的中间件做大概的了解:https://www.cnblogs.com/bonelee/p/14727268.html。
绕过上传漏洞
在给定的 github 链接中主要就是在练习这件事,绕过上传漏洞首先要先明白,开发者设置对上传文件进行校验的方式有两种,一种是客户端验证,一种是服务端验证。
-
客户端验证,通常是基于 JavaScript 进行验证,这是一种可以说完全没有什么用的验证方式,因为这段代码是基于攻击者的电脑去执行 JavaScript 中的校验函数,事实上我们直接删掉就好了。
-
服务器端的验证,方式有很多种,具体博主还是推荐大家自行在靶场练习,本篇文章仅作为一个基础的入门笔记,以介绍和知识梳理为主,只介绍一些较为简单的方法。
常见的服务器手段有白名单和黑名单验证,先说黑名单验证,就是服务器端在代码中设置几个不被允许上传的文件类型,如何直接设置 php 文件被禁止上传,但是通常黑名单可能会存在遗漏,例如上传的文件变成php3
在服务器只禁止 php 文件时就能绕过这个上传限制。白名单验证相较于黑名单验证安全性则就更高,即除了服务器名单内的文件,其余文件均被禁止上传。使用这种方式进行校验时,通常我们可以结合中间层漏洞,例如上传1.asp.jpg
文件,如果中间层套件是IIS 6.0
则就会把.jpg
文件作为 asp 文件处理; 还有一种方式,例如服务器的MIME
验证,这种验证方式我们可以使用中间层代理工具,如Burp Suit 作为中间代理进行拦截修改,作为骗过服务器的手段。
总之,绕过文件上传的方式有多种,作为黑客或者是渗透方也需要不断尝试,不断试错,最终才能达成目的。除此之外,持之以恒的练习和挑战自己也是必不可少的一环。作为开发人员,也需要在了解这些漏洞后不断完善自己的开发代码,才能尽可能避免自己的网站遭受攻击的命运。
标签:文件,验证,漏洞,https,php,上传 From: https://www.cnblogs.com/tjdtec/p/18140319