🏆 作者简介,愚公搬代码 🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,51CTO博客专家等。 🏆《近期荣誉》:2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主等。
🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
🏆🎉欢迎 👍点赞✍评论⭐收藏
文件上传漏洞是指网站对于用户上传文件的验证过程不严格,导致攻击者可以上传恶意文件到服务器上执行任意代码或者获取敏感信息的安全漏洞。
文件上传漏洞可能会导致以下安全问题:
安全问题 | 说明 |
---|---|
| 上传的可执行文件中包含恶意代码,攻击者可以通过执行该代码来实现攻击目的。 |
| 上传的文件与原始文件同名,攻击者将文件上传到服务器,覆盖原始文件的内容,导致文件被篡改或删除。 |
| 攻击者上传恶意文件,并通过服务器的文件包含功能来执行该文件,导致服务器被攻击或敏感信息泄露。 |
| 上传的恶意文件通过服务器的文件解析功能被执行,攻击者利用此功能实现攻击目的。 |
防范文件上传漏洞的方法包括:
安全措施 | 说明 |
---|---|
| 对用户上传的文件进行验证,限制只允许上传指定的文件类型和大小范围,避免上传恶意文件。 |
| 通过检测上传文件的内容,包括文件头和文件内容,判断是否是合法和安全的文件,防止上传恶意文件。 |
| 将上传文件保存到指定的目录,并使用随机生成的文件名,避免攻击者通过猜测路径和文件名来进行攻击和获取敏感信息。 |
| 对上传文件进行访问控制,只允许授权的用户或管理员进行访问,避免非授权用户获取上传文件的访问权限。 |
| 对服务器端的文件解析和包含功能进行安全配置,禁用或限制相关功能,减少攻击者通过上传漏洞进行的攻击和文件执行的风险。 |
网站的文件上传功能原本是用户需求的一部分,用于上传头像、文档、视频或照片等内容。然而,服务器在对这些上传文件进行处理和解释时可能存在安全隐患。举例来说,如果黑客上传了一个恶意的Web脚本,一旦服务器解析执行,黑客将直接获得服务器的命令执行权限。因此,文件上传漏洞指的是用户将可执行的脚本文件上传到网站服务器,并通过URL访问以执行其中的恶意代码,从而获得执行服务器端命令的能力。目前,网络上存在大量的木马脚本,使得攻击者利用上传漏洞的门槛非常低,攻击者只需几个简单步骤即可获得执行服务器命令的权限,甚至无需了解漏洞的原理。利用该漏洞会导致以下常见安全问题:
(1)上传的文件由Web脚本语言编写,服务器的Web容器解析并执行用户上传的脚本,从而导致恶意代码被执行。
(2)上传的文件可能是病毒、木马文件,黑客通过诱骗用户或管理员来下载并执行它们。
(3)上传的文件可能是钓鱼图片,或者包含其他脚本的图片,在某些浏览器版本中被当作脚本执行,用于钓鱼和欺诈。
此外,还存在一些不常见的利用方法,比如将上传文件作为入口来溢出服务器的后台处理程序,或者上传一个包含PHP脚本的合法文本文件,并利用“本地文件包含漏洞(Local File Inclusion)”来执行该脚本等。
本实验以临时搭建的一个电影网站为例,该电影网站的前台用户可以浏览在线电影,后台管理界面可对在线浏览的电影进行维护。因此,该网站的后台管理界面一定具备文件上传功能。攻击者首先要找到网站后台的登录界面,寻找网站后台登录界面的方法可以通过上篇文章
啊D注入工具
能自动扫描网页是否包含 SOL 注入漏洞,检测网站的安全性的工具“啊D注入工具”。该工具功能强大,可实现 SQL 注入点检测、管理入口检测、目录查看、注册表读取等多种功能,并且操作简单,使用者无须太多的学习就可以熟练操作。该工具功能支持对网站进行扫描,若对整个网站扫描,输入网址即可;支持浏览网页,如果遇到网页中存在可以注入的链接将提示;也可检测已知的可注入的链接,例如,已知本示例网站“动作片”这一页面含有注入漏洞,通过对该页面进行检测,可检测出该网站数据库中所有的表段。
因为部署网站已经下架了下面用截图说明
如果继续检测,可对所列表段中任意表中的字段进行检测。如图所示
对 password 表段进行检测后,可査看表中 pwd、name、id3个字段,再单击“检测内容”按钮,便可看到 admin 账户密码的 MD5 值。
这样便可以尝试破解密码,如果密码复杂度较高,MD5值破解有困难的话可以利用注入漏洞中常见的注入语法(UPDATE)进行管理员密码替换。这样就可以得到管理员用户名和密码。
接下来就是利用工具进行管理入口检测,看能否找到后台进行登录,尝试右击打开检测出来的可用链接和目录位置,发现第一个链接就是管理后台的入口地址
使用获得的管理员账号和密码登录管理后台后,进入“添加电影”页面进行木马文件上传操作
如果网站对这里的上传操作没有做限制,用户便可以上传任何类型的文件攻击者便可利用这个功能向服务器上传恶意木马文件。这种攻击方式是最为直接和有效的,所以,有些网站会做上传文件的“白名单”限制,即只允许特定后缀的文件上传。所以,攻击者用脚本语言编写的木马文件如果后缀名是 asp、p等,这样在上传时,就会被拦截,无法上传成功。但是,这里的白名单限制逻辑要经过周密的测试,一旦疏忽,就可能被绕过。例如,本示例网站虽然做了白名单限制,但是对于后缀名的取得和判断存在逻辑上的缺陷,导致文件上传漏洞仍然存在。
攻击者对木马扩展名进行改造,在文件名的后缀名“.asp”前面增加“.jpg”,经过改造后的文件名称为“海洋木马.jpg.asp”,然后再次上传,发现能够上传成功。由此可以推断,此白名单限制中没有考虑文件名中有多个“.”的情况,导致没有取得正确的后缀名,白名单限制失效,木马文件上传成功,并得到上传后的木马地址
相信大家都听说过木马的危害,都知道攻击者可以利用木马来操控受害者的计算机。但是具体是如何操纵的呢?这要从木马的特征说起。木马与计算机网络中常常要用到的远程控制软件有些相似,但由于远程控制软件是“善意”的控制,因此通常不具有隐蔽性木马则完全相反,木马要达到的是“偷窃”性的远程控制,所以,它要隐藏自己,防止被用户和防病毒软件发现,争取长期地驻扎在被害者的计算机中持续行窃。木马通常有两个可执行程序:一个是客户端,即由攻击者掌握的“控制端”;另一个是“服务端”,即被控制端。植入受害者计算机的部分就是“服务端”,而攻击者正是利用“控制端”进入运行了“服务端”的计算机。木马有很多种类型,其功能也五花八门,本节不做过多介绍。但是简单、直白地说,木马就是一个浏览器模式的 Web 应用程序,只不过这个应用程序未经用户允许就偷偷地部署到了用户的计算机中,而且部署者通常将这个 Web应用程序设定成自己的专属木马。将上传后的木马地址复制到浏览器地址栏,可,然后输入攻击者预设的密码后,单击“芝麻开门,偶是老马”按钮,即可连接后台木马。
通过以上文件上传漏洞的原理及利用过程演示,可以总结文件上传漏洞的应急处置措施如下。
(1)从客户端进行预防或漏洞修复。客户端对上传文件的格式进行判断限制上传格式的类型,防止直接上传木马。
(2)从客户端限制上传文件类型当然重要,但是客户端往往存在着各种被攻击者破坏的可能性。所以,服务器怎么处理,解释文件很关键,如果服务器在处理文件时,能够进行严格的检查就会避免这个问题。所以,从服务器端一定要进行预防或漏洞修复。具体的做法是在服务器端对上传的附件 MIME 信息加以验证,判断上传内容的真正格式,防止上传木马程序对扩展名进行了修改或者客户端 Jscript 脚本校验程序被禁用而无法识别木马文件。
(3)一个通用的防范文件上传漏洞的办法。众所周知,ASP木马主要是通过 FileSystemObject、WScript.Shell 和 Shell.Application 3 种组件来运行的,因此只要在服务器上修改注册表,将这3种组件改名,即可禁止木马运行,从而预防文件上传漏洞的攻击了。这一招能防范所有类型的文件上传漏洞,因为即使黑客将木马成功上传到服务器中,但是由于组件已经被改名,木马程序也无法正常运行了。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。