一键采集上传常见的细节问题(Web应用中文件上传漏洞的常见利用方式介绍-乐题库)
优采云 发布时间: 2021-09-27 21:11一键采集上传常见的细节问题(Web应用中文件上传漏洞的常见利用方式介绍-乐题库)
原则
文件上传是Web应用程序中经常出现的一项功能,它允许用户将文件上传到服务器并保存到特定位置。这是一个非常敏感的安全问题。一旦恶意程序上传到服务器并获得执行权限,后果将不堪设想。因此,大多数 Web 应用程序对文件上传功能有很多限制。
文件上传漏洞是指攻击者利用程序缺陷绕过系统的文件验证和处理策略,将恶意程序上传到服务器,获得执行服务器端命令的能力。这种攻击方式直接有效,在处理一些易受攻击的系统时甚至没有门槛。
利用文件上传漏洞的常见方法有:
上传网页脚本程序,网页容器解析并执行上传的恶意脚本。
上传Flash跨域策略文件crossdomain.xml,修改访问权限(其他策略文件使用类似)。
上传病毒和木马文件以欺骗用户和管理员下载和执行它们。
上传收录脚本的图片,一些低级版本的浏览器会执行该脚本进行钓鱼和欺诈。
通常,所使用的上传文件要么具有可执行功能(恶意程序),要么具有影响服务器行为的能力(配置文件)。为了实现攻击利用,必须满足以下条件:
文件可以通过前后端的过滤和文件处理。
文件内容不会改变,可以正确存储
存储位置在web容器的控制之下
攻击者有权访问存储目录
我们通过实验来演示第一种使用方法,包括以下材料:
注册表文件夹(易受攻击的 eb 应用程序)
hacker.php(要上传的恶意脚本)
hacked.html(新主页将替换为黑页)
使用以下命令将实验资料下载到虚拟机任意目录并解压。
wget-xzf 东西.tar.gzcd 东西
1.部署网络应用
将regist文件夹复制到/var/www/html/目录下
须藤 cp -R 注册 /var/www/html/
regist文件夹的目录结构如下
index.html(前端注册页面)
regist.php(后台注册处理程序)
upload/(文件上传目录)
css/(样式文件目录)
fonts/(字体文件目录)
js/(脚本文件目录)
修改目录权限:
须藤 chmod 777 /var/www/html/regist -R
启动Apache2服务
须藤服务 apache2 启动
2.上传恶意脚本程序
这是一个常见的新用户注册页面。我们随意填写注册信息。我们注意到,这个页面虽然对用户输入的文字信息进行了比较仔细的验证,但并没有严格检查上传头像的类型。这是一种非常危险的行为。在上传头像处选择事先准备好的恶意PHP程序hacker.php。确认无误后点击注册。(用同样的方法上传hacked.html)
3.访问脚本程序
目录结构知道上传的文件存放在upload/目录下。在浏览器地址栏输入可以访问上传的PHP文件
hacker.php 源码如下:
指令:
结果:
事实上,你可以在脚本文件中编写任何你喜欢的代码,只要结构合理并且能够顺利执行即可。
核心代码系统($_GET['cmd']); 调用php系统函数system执行linux系统命令,命令从GET请求中的cmd参数中获取。这意味着我们可以在当前用户权限下执行任何linux命令,就像操作本地计算机一样。首先测试恶意程序是否可以正常运行:
它运行成功,这也意味着负责上传功能的后端程序模块没有对上传的文件进行有效的过滤和处理。接下来我们用上传的hacker.html页面替换网站首页:
hacked.html ../index.html
再次访问web应用localhost/regist,刷新页面,发现替换成功,页面显示“You Are Hacked”。
注意这里需要把hacked.html上传到/upload目录
思考和扩展
1.类型检查
实验步骤的网站前端部分没有有效过滤和处理文件上传。著名的同类漏洞包括 FCKEditor 文件上传漏洞。FCKEditor 是一个非常流行的富文本编辑器。发布了某个 PHP 版本。出现文件上传类型检查漏洞后,相关代码如下:
$Config['AllowdExtensions']['File'] = array();//允许的上传类型 $Config['DenedExtensions']['File'] = array('php','php3','php5', ' phtml','asp','aspx','ascx','jsp','cfm','cfc','pl','pl','bat','exe','dll','reg' ,'cgi' );//禁止上传类型
可以看到,代码检查了文件类型,但是使用了黑名单的方式,所以如果我们使用php2、inc这样的类型名,就可以通过类型检查。另外,对于前端的验证,通常情况下可以通过修改或伪造POST包来绕过。
2.权限要求
为了达到攻击的效果,实验步骤简化了一些复杂的细节。一些关键步骤涉及操作权限。步骤所需的权限如下:
步骤或操作权限要求
脚本存储 Web 容器对上传目录具有写入权限
脚本执行用户组对存储目录具有访问权限和执行权限
将首页用户组替换为regist应用目录的写权限
作为普通用户,他们通常只有读取和执行权限,无法成功替换。他们必须通过利用其他漏洞获得更高的权限。因此,在实验步骤1中有一个修改权限的步骤。 另外,在一般的web应用程序中,文件的上传存储目录是未知的,但也可以通过采集服务器端信息和错误页面来确定。一般的框架和应用都有默认的上传存储目录,初级开发者会直接使用这些目录,方便攻击者确定访问URL,造成安全隐患。
3.安全
有很多方法可以利用文件上传漏洞,但很容易阻止它。开采的条件通常很苛刻。只要把关键点堵住,问题就迎刃而解。防止文件上传漏洞可以防止非法文件上传。, 防止非法文件在两个地方被执行。
加工方法
防止非法文件上传1.扩展名白名单,2.文件头判断
防止非法文件执行1.存储目录与web应用分离,2.存储目录没有执行权限,3.文件重命名,4.图片压缩