引言:我的系列博客[网络安全学习篇]上线了,小编也是初次创作博客,经验不足;对千峰网络信息安全开源的视频公开课程的学习整理的笔记整理的也比较粗糙,其实看到目录有300多集的时候,讲道理,有点怂了,所以我就想到了通过写博客(课程笔记)的形式去学习它,虽然写博客会让我多花几倍的时间去学习它,但是当我完成一篇博客所获得的成就感和你们对于我的认同感,让我很满足,能够鼓励我一天天的坚持下去,也希望和我一起学习本期视频的"同道"们也能给一直坚持下去。我们大家一起加油。由于作者本身也是网络信息安全小白,大部分知识点都是初次接触,出现对其理解不深入,不完整,甚至也会出现错误有问题的地方,希望大家谅解、留言提出指正,同时也欢迎大家来找我一起交流学习!!!
[网络安全学习篇60]:文件上传(本篇)
JSP 和 jspx 的一句话木马比较复杂一些
一句话木马短小精悍,功能强大,但是需要配合中国菜刀或者中国蚁剑客户端使用,中国菜刀是一句话木马的管理器,也是命令操作接口。中国菜刀在连接一句话木马的时候需要填写密码(实际上就是变量名)。例如,我们上传一个php 的一句话木马,密码就是[cmd]。
中国菜刀与一句话木马配合实现了三大基本功能
在中国菜刀页面继承Web 用户权限可以实现文件管理,包括文件查看、上传、下载、修改、删除甚至运行exe 程序等
在中国菜刀下可以获得cmd 和 bash 的命令行接口,可以执行相关命令。
我们可以使用中国菜刀进行数据库管理,此时需要知道连接数据库的账密。以MYSQL 为例
GetShell ,顾名思义就是获取web 的过程。当然任意文件上传是GetShell 的主要方式,但并不是唯一途径
文件上传漏洞利用的条件
1、Web 服务器要开启文件上传功能,并且上传api(接口)对外开放
2、Web 用户对目标目录具有可写权限,甚至具有执行权限,一般情况下,Web 目录都有执行权限
3、要想完美利用文件上传漏洞,就是上传的文件可以执行,也就是Web 容器可以解析我们上传的脚本,无论脚本以什么样的形式存在
4、无视以上条件的情况就是服务器配置不当,开启了PUT 方法。
文件上传的防御、文件上传的防御绕过还有利用,总是分不开的。
为什么这么防?为什么这么绕过?总是相互纠缠在一起的两个问题,攻防交替
黑白名单是常用的安全策略之一。在计算机安全中,黑白名单类似于一个列表,列表中写了一些条件或规则,如果客体在黑名单中,一律禁止,如果客体在白名单中,一律允许。类似与手机号码的黑白名单
如Chrome 浏览器的黑白名单策略
|
禁止访问你已阻止的网址。不过,用户可以访问黑名单之外的所有网址
不设置此政策:用户将可以自由访问所有网址
|
将此政策与 URLBlacklist 政策搭配使用,可将特定网址设为黑名单的例外网址并允许用户访问
白名单的优先级高于黑名单。你至少要在黑名单中添加一个条目,才能正常使用此策略
不设置此策略:网址黑名单将没有例外网址
|
华为收集安装软件黑白名单策略
|
白名单模式,检查只能安装的软件
|
只允许终端主机安装软件白名单中的软件,安装其他软件属于违规行为
对于白名单中的软件,该软件属于必须安装类软件,而终端主机未安装,属于违规行为
对于白名单中的软件,该软件不属于必须安装软件,而终端主机未安装,不属于违规行为
|
白名单+黑名单模式,检查必须安全的软件和禁止安全的软件
|
如果终端主机未安装白名单中的任意一款软件,则属于违规行为
如果终端主机已经安装黑名单中的任意一款如那件,则属于违规行为
如果终端主机已经安装了白名单中的所有软件,并且安装了黑名单中的任意一款软件,则不属于违规行为
|
*PUT 方法上传文件
HTTP 请求方法之一,允许向服务器直接写入文件
有一些Web 应用的文件上传功能,仅在前端用了JS 脚本做检测,如检测文件后缀名等。
这里采用的是白名单策略,检测文件后缀名。再配合表单事件使用
前端JS 脚本检测的安全防御使非常薄弱的,可以非常轻松的绕过
方法一:因为JS 脚本运行环境使浏览器,我们可以修改JS代码,或者删除表单事件中的οnsubmit="return checkFile()"
方法二:使恶意文件后缀名符合白名单策略,用Burp 挂代理抓包,然后修改文件后缀名即可
对于文件上传,只从Web 前端进行检测显然防护不足,因此服务器端的检测就显得的特别重要,一般服务器端检测,采用黑白名单策略。
MIME 是描述消息内容类型的因特网标准。MIME 消息包含文本、图像、音频、视频以及其他应用程序的专用的数据。常见的MIME 类型如下
由于服务器在检测Content-Type 类型的时候,取得的变量来自用户,故我们仍可以通过bp抓包,修改这个字段,使其合法,即可绕过限制上传任意文件
*服务器端检测--文件内容
除了检测上传文件的Content-Type 类型,为了保持安全性,服务器端还会检测文件内容。PHP
中有一个函数getimagesize(),这个函数本意是检查图片的大小,但是在检查之前该函数会判断目标文件是否为一张图片。因此,可以用该函数来检测文件的内容
对于文件内容的检测,我们可以通过上传图片木马绕过
*服务器端检测--后缀名
服务器端还会检测文件后缀名。
代码中的$deny_exit 数据就是一个黑名单,数组元素就是不容许上传的类型
对于黑名单,我们可以寻找其他允许上传的类型来绕过限制
对于后缀名白名单策略,我们只能通过上传白名单内的文件后缀名。
截断会导致文件上传路径截断(条件:PHP<5.3.29,且GPC关闭)。我们以
.htaccess 是Apache 服务器的分布式配置文件,该配置文件会覆盖Apache 服务器的全局配置,作用域是当前目录及其子目录。
如果一个Web 应用允许上传的.htaccess 文件,那就意味着攻击者可以更改Apache 的配置,这是十分危险的。
将以下代码写入文件,并保存成.htaccess ,放到测试目录下
并在同一个目录下创建一个文件 info.png
当我们访问文件时,[info.php]内的PH 代码将会被执行
*文件名中包含php 关键字
文件内容如下,info.php.png 中的代码会被执行
*匹配文件名[aject], 找到该文件,并执行其中的PHP 代码
Web 容器解析漏洞,就是Web 容器在解析脚本出现的“bug”
新建文件夹命名为[1.asp],在里面新建文件,命名为[time.png]
编辑器就是网站后台编辑网页的在线编辑器,会自动集成文件上传功能,这些编辑器的某些版本也存在文件上传漏洞
CMS 又叫网站内容管理系统(网站的模版,快速建站,二次开发),市面上很多开源的CMS 的历史版本有很多都存在着文件上传漏洞,但是产生文件上传漏洞的原因不尽相同,情景也不似本章上文中介绍的那样“直白”。类似的CMS 有很多,比如常见的dedeCMS、PHPcms 等。
*南方数据管理系统(old)
通过变量覆盖漏洞,可以修改Web 应用的参数
关于文件上传的防御,防住危险的脚步类型是最基本的防御,最理想的就是能够过滤掉图片马中的恶意代码。如果一个Web 应用能够上传图片木马,那么我们认为这个Web 应用是不安全的。文件上传漏洞的防御主要从以下几个方面考虑。
@ 将用户上传文件改名存放,包括文件名及其扩展名,并将其存放路径和文件名存放在数据库中。系统使用文件时,通过查询数据库动态获取。