短视频,自媒体,为人们种草提供一站式服务
在对客户网站的日常渗透测试服务中,经常会遇到针对sine安全的客户网站,app具有文件上传功能。程序员在设计开发代码的过程中,会对上传的文件类型、格式、后缀进行安全验证和过滤判断。sine安全工程师在测试文件上传漏洞时,往往会发现服务器环境漏洞导致的网站漏洞,比如iis、apache、nginx环境,这些环境都存在可以导致任意上传文件的漏洞。
关于文件上传漏洞的生成和测试,我们来详细分析一下:
iis解析漏洞导致的任意文件上传
首先,构建客户网站使用的iis环境是很常见的,一般是iis php mysql数据库组合或者iis aspx sql2005数据库。iis有解析漏洞。当文件名创建为。php,这个目录下的所有文件或者代码都会在php脚本的许可下运行,比如某个客户网站。您可以将上传的目录更改为1.php,然后如果我们将jpg文件上传到这个目录,访问的网址是域名/1.php/1.jpg。如果您从浏览器访问这个地址,它将是php脚本运行的权限。上传网站木马webshell时,会直接获得网站的管理权限。带有iis解析漏洞的版本是5.0-6.0。
nginx解析漏洞导致的任意文件上传
nginx是静态访问,并发量大,可以承载多人访问。目前,许多网站都在使用服务器环境。简单来说就是http访问的代理,在很多网站运营商中比较流行。nginx最低版本存在解析漏洞,可能导致运行php脚本文件。造成该漏洞的原因是当用nginx解析php.ini配置文件时,默认后缀被认为是最重的文件名,可以修改。我们的sine安全在渗透测试中发现,客户的网站打开nginx和fast-cgi模式后,会很容易将网站木马上传到网站目录。我们把jpg图片文件插入一个木马代码,上传到网站图片目录。
我们访问这个图片的时候,直接在后面输入/1.php,会导致图片文件以php脚本权限运行。如下图所示:
apache解析漏洞导致的任意文件上传
apache也是目前应用比较广泛的服务器环境,尤其是php网站,因为它稳定、快速、易于php访问,可以把一些第三方开发语言编译到网站中。apache也有漏洞,尤其在apache 1.0-2.0版本中,这里没有详细指定后缀名称判断,导致绕过apache安全机制,上传恶意文件名。默认情况下,允许解析多个后缀名称。如果命名的后缀名称不能被apache识别用于解析,后缀名称将被向前搜索,直到后缀名称被apache识别。该文件上传漏洞的使用条件是需要开启模块模式,而不是不能上传该模式。我们的sine安全在客户网站进行渗透测试的时候,会先把后缀改成apache unapproved,然后post上传,直接运行php脚本。如下图所示:
一般来说,服务器环境中也存在任何文件上传漏洞,那么如何在渗透测试过程中修复漏洞呢?将iis版本升级到7.0或更高版本,将nginx版本升级到最新版本,包括apache版本升级到2.4或更高版本,在上传的功能代码中判断其文件格式,并限制目录的创建,可以防止上述问题的发生。