nginx 上传文件漏洞_文件上传漏洞绕过

文件上传漏洞是用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。这种攻击方式是最为直接和有效的,“文件上传”本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。

绕过方法:

绕过服务端检测:

服务端的代码常检测request包中的三个点:MIME类型、文件后缀、文件内容。

绕过MIME类型检测

原理:检测图片类型文件上传过程中http包的Content-type字段的值,来判断上传文件是否合法。

绕过方法:用burpsuite截取并修改数据包中文件的content-type类型,或者用大小写进行绕过;

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

text/plain(纯文本)

text/html(HTML文档)

text/javascript(js代码)

application/xhtml+xml(XHTML文档)

image/gif(GIF图像)

image/jpeg(JPEG图像)

image/png(PNG图像)

video/mpeg(MPEG动画)

application/octet-stream(二进制数据)

application/pdf(PDF文档)

application/(编程语言) 该种语言的代码

application/msword(Microsoft Word文件)

message/rfc822(RFC 822形式)

multipart/alternative(HTML邮件的HTML形式和纯文本形式,相同内容使用不同形式表示)

application/x-www-form-urlencoded(POST方法提交的表单)

multipart/form-data(POST提交时伴随文件上传的表单)

不完善的黑名单扩展名:

文件扩展名在黑名单中为不合法,一般有个专门的blacklist文件,里面会包含常见的危险脚本文件。

绕过方法:

后缀大小写绕过:在对后缀的判断中,如果只是对字符串进行单独的比较来判断是不是限制文件,可以采用后缀名大小写绕过形式。

空格绕过:如果黑名单没有对后缀名进行去空处理,可以通过在后缀名后加空格进行绕过。

双写绕过:如果黑名单是将问题后缀名替换为空,可以利用双写绕过。

php2, php3, php4, php5, phps, pht, phtm, phtml

绕过中间件检测:

iis解析漏洞

1 目录解析

以*.asp命名的文件夹里的文件都将会被当成ASP文件执行。

2 文件解析

*.asp;.jpg 像这种畸形文件名在“;”后面的直接被忽略,也就是说当成 *.asp文件执行。

IIS6.0 默认的可执行文件除了asp还包含这三种 *.asa *.cer *.cdx

3 默认解析

.asp .aspx .ashx .asa .cer这是系统默默认的后缀名

Apache解析漏洞

漏洞原理:Apache 解析文件的规则是从右到左开始判断解析,如果后缀名为不可识别文件解析,就再往左判断。比如 test.php.owf.rar “.owf”和”.rar” 这两种后缀是apache不可识别解析,apache就会把wooyun.php.owf.rar解析成php。

nginx解析漏洞

开启cgi:SCRIPT_NAME FASTCGI:

www.xx.com/a.jpg/.php(任何不存在文件)-----可以解析为.php文件

a.jpg:<?php phpinfo();?>

a.php%00.jpg----解析为a.php

配置问题导致漏洞:

1.如果在 Apache 的 conf 里有这样一行配置 AddHandler php5-script .php 这时只要文件名里包含.php 即使文件名是 test2.php.jpg 也会以 php 来执行。

2.如果在 Apache 的 conf 里有这样一行配置 AddType application/x-httpd-php .jpg 即使扩展名是 jpg,一样能以 php 方式执行。

3.修复漏洞方法

1.apache配置文件,禁止.php.这样的文件执行,配置文件里面加入

1

2

3

4

Order Allow,Deny

Deny from all

Nginx本身并不直接提供文件上传功能,它主要是用于作为Web服务器来处理和转发HTTP请求。但是,如果你在Nginx中配置了反向代理或者FastCGI等方式来处理上传请求,存在一些常见的安全风险。 其中一个常见的风险是路径遍历攻击,也称为目录穿越攻击。攻击者可能通过修改上传文件的文件名或者构造特定的请求来绕过服务器端的文件路径限制,使其能够上传到非预期的目录,甚至是系统关键目录,从而导致代码执行、文件覆盖或者敏感文件暴露等安全问题。 为了防止这种漏洞的发生,你可以采取以下几个安全措施: 1. 验证文件类型和后缀名:限制上传文件的类型和后缀名,只允许上传特定的文件类型,并且确保文件类型和后缀名的验证是在服务端进行的。不要依赖客户端的验证,因为客户端验证可以被绕过。 2. 限制上传文件大小:限制上传文件的大小,防止上传过大的文件导致服务器资源耗尽。可以通过Nginx配置或后端应用程序来实现。 3. 随机化上传文件保存路径:为每个上传的文件生成一个随机的保存路径,避免使用原始文件名或者可预测的路径,从而增加攻击者猜测路径的难度。 4. 设置适当的文件权限:确保上传的文件保存路径具有适当的文件权限,限制其他用户对上传的文件的访问权限。 5. 对上传文件进行病毒扫描:可以将上传的文件进行病毒扫描,确保上传的文件不包含恶意代码。 请注意,以上只是一些基本的防护措施,具体的安全措施需要根据实际情况和应用程序的需求来进行细化和定制。同时,及时更新Nginx版本和相关组件也是保持服务器安全性的重要措施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值