Web安全之文件上传漏洞

1 漏洞介绍

系统管理员都有过系统被上传后门、木马或者是网页被人篡改的经历,这类攻击大部分是通过文件上传来是实现的。文件上传漏洞是指网络攻击者上传了一个可执行文件到服务器并执行。这里上传的文件可以是木马、病毒、恶意脚本或者WebShell等。这种攻击方式是最为直接和有效的,部分文件上传漏洞的利用技术门槛非常的低,对于攻击者来说很容易实施。

WebShell就是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,作为网页后门,攻击者在入侵了一个网站后,通常会将这些asp或php后门文件与网站服务器web目录下正常的网页文件混在一起,然后使用浏览器来访问这些后门,获得命令执行环境,以达到控制网站服务器的目的(包括上传下载或者修改文件、操作数据库、执行任意命令等)。

文件上传漏洞原理:大部分的网站和应用系统都有上传功能,如用户头像上传、图片上传、文档上传等。一些文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,导致允许攻击者向某个可通过Web访问的目录上传任意PHP文件,并能够将这些文件传递给PHP解释器,就可以在远程服务器上执行任意PHP脚本。当系统存在文件上传漏洞时攻击者可以将病毒、木马、WebShell以及其他恶意脚本或者是包含了脚本的图片上传到服务器,这些文件将对攻击者后续攻击提供便利。根据具体漏洞的差异,此处上传的脚本可以是正常后缀的PHP、ASP以及JSP脚本,也可以是篡改后缀后的这几类脚本。

2 漏洞产生条件

1、首先当然是要能够成功上传木马文件
2、其次上传文件必须能够被执行
3、最后就是上传文件的路径必须可知

3 漏洞利用思路

1、对于没有对上传文件做过滤对,可以直接上传
2、如果利用Content-Type过滤了文件类型:
(1)上传PHP格式的一句话:FireFox,F12-->网络-->选中发送包-->Edit and Rsend-->修改Request Body中的Content-Type-->发送;
(2)上传PHP格式的一句话:用Burp Suit抓包修改Content-Type;
(3)上传图片格式的一句话:用BP抓包后,用%00截断,如eval.php%00a.png
(4)上传图片格式的一句话:利用文件包含漏洞,将图片强制作为php进行解释
3、如果利用后缀过滤了文件类型和文件头:
(1)直接上传图片之后利用文件包含漏洞,将图片强制作为php进行解释
(2)利用copy命令将PHP一句话和图片合并,上传图片格式的图片码,直接连接webshell

(注:PHP 5.2.x之后的版本不支持%00截断)

PS:
一句话的原理是利用POST控制变量来执行动作
中国菜刀连接失败可以用AntSword
Kali Linux的weevely可以用来生成webshell文件和连接webshell。

文章作者: Alston
文章链接: https://lizitong67.github.io/2020/02/21/Web%E5%AE%89%E5%85%A8%E4%B9%8B%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0%E6%BC%8F%E6%B4%9E/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Alston's blog