文件上传检测的基本思路

1: 前台脚本检测扩展名—绕过

原理

当用户在客户端选择文件点击上传的时候,客户端还没有向服务器发送任何消息,就对本地文件进行检测来判断是否是可以上传的类型,这种方式称为前台脚本检测扩展名。
  • 1

绕过方法

绕过前台脚本检测扩展名,就是将所要上传文件的扩展名更改为符合脚本检测规则的扩展名,通过BurpSuite工具,截取数据包,并将数据包中文件扩展名更改回原来的,达到绕过的目的。
例如:文件名本来为【evil.jpg】,上传时,用BurpSuite截包后,将数据包中的名字改为【evil.php】(或其它脚本类型)即可。
  • 1
  • 2

2: Content-Type检测文件类型—绕过

原理

当浏览器在上传文件到服务器的时候,服务器对说上传文件的Content-Type类型进行检测,如果是白名单允许的,则可以正常上传,否则上传失败。
  • 1

绕过方法

绕过Content--Type文件类型检测,就是用BurpSuite截取并修改数据包中文件的Content-Type类型(如改为:image/gif),使其符合白名单的规则,达到上传的目的。
  • 1

3: 文件系统00截断—绕过

原理

在上传的时候,当文件系统读到【0x00】时,会认为文件已经结束。利用00截断就是利用程序员在写程序时对文件的上传路径过滤不严格,产生0x00上传截断漏洞。
  • 1

绕过方法

通过抓包截断将【evil.php.jpg】后面的一个【.】换成【0x00】。在上传的时候,当文件系统读到【0x00】时,会认为文件已经结束,从而将【evil.php.jpg】的内容写入到【evil.php】中,从而达到攻击的目的。
  • 1

4: 服务器端扩展名检测黑名单—绕过

原理

当浏览器将文件提交到服务器端的时候,服务器端会根据设定的黑白名单对浏览器提交上来的文件扩展名进行检测,如果上传的文件扩展名不符合黑白名单的限制,则不予上传,否则上传成功。
  • 1

绕过方法

将一句话木马的文件名【evil.php】,改成【evil.php.abc】(奇怪的不被解析的后缀名都行)。首先,服务器验证文件扩展名的时候,验证的是【.abc】,只要该扩展名符合服务器端黑白名单规则,即可上传。另外,当在浏览器端访问该文件时,Apache如果解析不了【.abc】扩展名,会向前寻找可解析的扩展名,即【.php
  • 1

5: JS检测上传文件—绕过

原理

上传文件时,对方使用JavaScript语句语法检测上传文件的合法性问题。
  • 1

绕过方法

在本地浏览器客户端禁用JS即可。可使用火狐浏览器的NoScript插件、IE中禁用掉JS等方式实现。
  • 1

6: 重写解析规则—绕过

原理

上传覆盖.htaccess文件,重写解析规则,将上传的带有脚本马的图片以脚本方式解析。
  • 1

绕过方法

在可以上传.htaccess文件时,先上传.htaccess文件,覆盖掉原先的.htaccess文件;再上传【evil.gif】文件。使用如下的.htaccess语句,即可将【evil.gif】文件以php脚本方式解析。
<FilesMatch "evil.gif">

SetHandler application/x-httpd-php
</FilesMatch>
  • 1
  • 2
  • 3
  • 4
  • 5

7: 其它方式—绕过

原理

部分程序员的思维不严谨,并使用逻辑不完善的上传文件合法性检测手段,导致可以找到方式绕过其检测方式。
  • 1

绕过方法

1. 后缀名大小写绕过
用于只将小写的脚本后缀名(如php)过滤掉的场合;
例如:将Burpsuite截获的数据包中的文件名【evil.php】改为【evil.Php】

2. 双写后缀名绕过
用于只将文件后缀名,例如"php"字符串过滤的场合;
例如:上传时将Burpsuite截获的数据包中文件名【evil.php】改为【evil.pphphp】,那么过滤了第一个"php"字符串"后,开头的'p'和结尾的'hp'就组合又形成了【php】。

3. 特殊后缀名绕过
用于检测文件合法性的脚本有问题的场合;
例如:将Burpsuite截获的数据包中【evil.php】名字改为【evil.php6】,或加个空格改为【evil.php 】等。

 

在进行文件上传入侵排查时,以下是一些常见的思路和步骤: 1. 审查上传功能:审查网站或应用程序中的文件上传功能,确保其具有必要的安全控制,如文件类型检查、大小限制、白名单/黑名单过滤等。检查是否存在配置错误或漏洞,可能导致不受限制的文件上传。 2. 分析上传的文件:对上传的文件进行详细分析,包括检查文件类型、文件结构、元数据等。使用防病毒软件对上传的文件进行扫描,以发现潜在的恶意文件。 3. 文件验证和过滤:实施严格的文件验证和过滤机制,包括验证文件的合法性、过滤可执行文件、脚本文件、潜在的恶意文件类型等。使用白名单和黑名单机制来限制允许上传的文件类型和大小。 4. 审查日志:仔细审查应用程序或服务器的日志记录,特别关注与文件上传相关的日志条目。检查是否存在异常的上传活动,如大量的上传尝试、异常的文件名、访问频率等。 5. 安全扫描:进行安全扫描和漏洞评估,以检测潜在的文件上传漏洞和安全弱点。使用专业的漏洞扫描工具,如网站漏洞扫描器,来发现可能的漏洞。 6. 异常行为检测:监控服务器和应用程序的行为,检测异常的上传行为。这可以包括检测大型文件上传、非正常的上传频率、未经授权的文件上传等。 7. 更新和补丁:确保应用程序、服务器和相关组件的软件和补丁是最新的,以纠正已知的漏洞并提供更好的安全性。 8. 清理和恢复:如果发现恶意文件或入侵行为,立即采取措施清理受影响的系统,并还原到安全的状态。同时,对受影响的账户和用户进行必要的密码重置和安全措施。 以上是一些常见的文件上传入侵排查思路,但具体的步骤和方法可能因情况而异。建议在进行排查时,参考相关安全实践,并根据具体环境和需求来制定合适的入侵排查策略。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值