php文件上传代码网络攻击者上传漏洞与的关系文件上传的一种方式介绍php上传图片代码
2022-05-01
一、文件上传漏洞及关系
文件上传漏洞是指网络攻击者将可执行文件上传到服务器并执行。这里上传的文件可能是木马、病毒、恶意脚本等。这种攻击方式是最直接有效的。部分文件上传漏洞利用的技术门槛很低,很容易被攻击者实施。
文件上传漏洞本身就是一个危害很大的漏洞,利用这个漏洞被无限扩大。大多数上传漏洞被利用后,攻击者会留下来方便后续访问系统。一旦放置或插入受影响的系统,攻击者就可以通过这种更简单、更隐蔽的方式在服务中为所欲为。
这里需要注意的是,上传漏洞的利用经常被使用,植入的远不止文件上传。
1 简介
是asp、php、jsp或cgi等网页文件形式的命令执行环境,也可以称为网页后门。攻击者入侵网站后,通常会将这些asp或php后门文件与网站服务器的web目录下的正常网页文件混合在一起,然后使用浏览器访问这些后门,得到一个命令执行环境来控制网站服务器的用途(可以上传、下载或修改文件,操作数据库,执行任意命令等)。
后门高度隐蔽,可以轻松通过防火墙。访问时不留下系统日志seo优化,网站的web日志中只留下部分数据提交记录。没有经验的管理员很难找到入侵的痕迹。攻击者可以隐藏在普通文件中,修改文件时间来增强隐蔽性,也可以使用一些函数对进行编码或拼接来躲避检测。除此之外,通过单句木马的小马提交更强大的马,可以更轻松地通过应用本身的检测。它是最常见和最原始的小马之一,在此基础上出现了许多变种,例如等等。
2 文件上传漏洞原理
大部分网站和应用系统都有上传功能,如用户头像上传、图片上传、文档上传等。部分文件上传功能实现代码没有严格限制用户上传的文件后缀和文件类型,使得攻击者可以将任意 PHP 文件上传到可通过 Web 访问的目录,并可以将这些文件传递给 PHP 解释器。在远程服务器上执行任意 PHP 脚本。
当系统存在文件上传漏洞时,攻击者可以将病毒、木马、其他恶意脚本或包含脚本的图片上传到服务器,这些文件将为攻击者后续的攻击提供便利。根据具体漏洞,这里上传的脚本可以是普通后缀的PHP、ASP、JSP脚本,也可以是被篡改后缀的这类脚本。
m 当上传的文件是病毒或木马时,主要用于诱骗用户或管理员下载并执行或自动运行;
文件上传后,攻击者可以通过这些网页的后门执行命令并控制服务器;
m 当上传的文件是另一个恶意脚本时,攻击者可以直接执行该脚本进行攻击;
m 当上传的文件为恶意图片时,该图片可能包含脚本,当这些图片被加载或点击时,该脚本会静默执行;
m 当上传的文件是伪装成普通后缀的恶意脚本时,攻击者可以借助本地文件包含漏洞( File )执行该文件。比如将bad.php文件重命名为bad.doc并上传到服务器,然后通过PHP的 , , , 等函数执行。
此处恶意文件上传主要有以下三个原因:
m 文件上传没有仔细检查。一些应用在上传文件时根本不进行文件格式检查,使得攻击者可以直接上传恶意文件。有些应用只在客户端检查php文件上传代码,在专业攻击者眼里,几乎所有客户端检查都等于没有检查。攻击者可以通过上传 NC 和断点等工具轻松绕过客户端检查。虽然有些应用会在服务器端进行黑名单检查,但这种情况可能会被忽略。比如把.php改成.php就可以绕过检查;一些应用程序在服务器端执行白名单检查,但忽略截断字符。 ,如果应用原本只允许上传jpg图片,文件名可以构造为xxx.php.jpg,即16进制0x00字符,.jpg欺骗应用的上传文件类型检测,但是对于服务器来说,因为字符截断,最后上传的文件变成xxx.php。
m 文件上传后文件名修改处理不当。有些应用在服务器端进行了完整的黑名单和白名单过滤,但是在修改上传文件的文件名时,是稀疏的,允许用户修改文件后缀。例如,如果应用程序只能上传.doc文件,攻击者可以先将.php文件的后缀改为.doc,上传成功后修改文件名时再将后缀改为.php。
m 在使用第三方插件时引入。很多应用都引用了具有文件上传功能的第三方插件。这些插件在实现文件上传功能时可能存在漏洞,攻击者可以利用这些漏洞进行文件上传攻击。例如,知名博客平台插件丰富,每年都会在这些插件中发现大量文件上传漏洞。
3 文件上传攻击示例
如上所述,文件上传漏洞的原因有很多。下面以第二个为例,选择文件上传漏洞(-db编号为)详细讲解利用漏洞的全过程。
是一个使用PHP语言和语言开发的内容管理系统。 2.2.版本2允许未经认证的用户上传文件,并且可以修改上传文件的后缀。虽然系统限制用户上传doc和pdf格式的文件,但是在修改文件名时出现错误,让用户可以修改文件后缀。攻击者可以将恶意文件的后缀改为doc或pdf,上传成功后将后缀改为php执行。
l 上传文档后缀
访问系统的文件管理页面///.php,上传一个正常的doc文件,发现可以上传成功。用PHP语言编写后门,也可以从网上下载一个已有的,将文件后缀改为doc。在这里,把.php后门改成.doc。
准备好后,访问 .php 文件管理页面,将 .doc 上传到服务器。如图1所示,doc后缀已经上传成功。此时通过浏览器访问doc格式无法正常执行。
图1.doc上传成功
l 把后缀改成php
在文件管理页面右击.doc,选择进入修改文件名页面,将.doc改为.php,点击Ok按钮提交修改结果(如图2)。此时文件的后缀已经被php修改成功php文件上传代码,由于应用程序编码的执行网站开发,文件管理页面已经无法读取.php文件,但是我们可以在文件上传中看到修改后的文件系统服务器目录(如图3所示)。显示)。
图2 将.doc修改为.php
图3 服务端的后缀改为php
我执行
此时php后缀已经在服务器的上传目录中,可以正常解析服务器环境。直接通过浏览器访问文件:输入我们设置的密码登录这个页面(如图4)。从图中我们可以看出,只有通过这个文件,攻击者才能在服务器上进行文件管理、数据库管理、执行系统命令、执行任意PHP代码。这样,攻击者可以将额外的文件放置到更深的目录中,或者将PHP后门代码直接添加到系统中已经很少使用的php文件中,以防止被系统管理员检测到。
图4 成功进入后门