文件上传漏洞

文件上传漏洞介绍

web应用从程序没有对用户上传的文件进行安全判断或者判断条件不够严谨,导致攻击者将恶意代码文件植入到服务器中从而去执行解析恶意代码。

产生漏洞的主要原因

文件上传限制被绕过

开源编辑器的上传漏洞

文件上传漏洞危害

  • 执行任意代码:攻击者可以上传包含恶意代码的文件,从而在受影响的服务器上执行任意命令
  • 横向移动:通过上传恶意文件,攻击者可以在服务器上建立后门,从而在网络内部进行横向移动,攻击其他系统
  • 恶意文件传播:攻击者可以上传恶意文件,然后将下载链接传播给其他用户,使得这些用户受到攻击
  • 破坏文件完整性:攻击者可以上传恶意文件,修改、删除或篡改服务器上的文件,破坏文件的完整性

常见的风险点

个人信息

商品评价

身份认证 

后台管理

漏洞利用方式

小马:对应网站开发语言编写的动态脚本 体积小 功能少

大马:对应网站开发语言编写的动态脚本 体积大 功能多

一句话木马:代码短只有一行 隐蔽性强

网站控制工具介绍

文件上传漏洞-绕过方式

1.绕过JS验证

绕过思路:禁用或删除js文件

2.MIME校验

绕过思路:抓包修改content-type

MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式

MIME用法
客户端使用:1、GET请求不需要这个字段。2、POST请求头,放在Content Type字段用来指定上传的文件类型,方便服务器解析。放在Accept,告诉服务端允许接收的响应类型。比如只能接收ison或者其他:
服务端使用:1、放在响应头里面,Content Type告诉客户端响应的数据类型,方便客户端解析。

服务端验证(后端) Pass-02 文件类型校验(MIME校验) 漏洞描述:只检测content-type字段导致的漏洞。(后端利用PHP的全局数组 $_FILES()获取上传文件信息) 利用方法:修改content-type字段的值为图片格式。 常用content-type字段: image/jpeg :jpg 图片格式 image/png :png图片格式 image/gif :gif 图片格式 text/plain :纯文本格式 text/xml : XML格式 text/html : HTML格式

3.等价扩展名(黑名单)

语言等价扩展名 asp asa,cer,cdx

aspx ashx,asmx,ascx

php php2、php3、php4、php5、phps、phtml

jsp jspx,jspf

FUZZ字典:https://github.com/evi1hack/Fuzz_dic/tree/master

4.htaccess文件绕过(pass-04)
htaccess文件是Apache服务器中的一个配置文件作用范围:.htaccess的用途范围主要针对当前目录。优先级:较高 可覆盖Apache的主要配置文件(httpd-conf)生效方式:修改后立刻生效
httpd-conf服务器的全局行为和默认设置作用范围:整个服务器优先级:较低生效方式:重启服务器后生效

5..user.ini绕过(pass-05)  php版本大于5.2
.user.ini(用户自定义配置文件)
特定于用户或特定目录的配置文件,通常位于Web应用程序的根目录下,它用于覆盖或追加全局配置文件(如php.ini)中的·PHP.配置选项
php.ini存储了对整个PHP环境生效的配置选项。它通常位于PHP安装目录中

6.绕过黑名单验证(大小写验证-pass06)
Windows系统下,对于文件名中的大小写不敏感。例如:test.php和TeSt.PHP是一样的

7.绕过黑名单验证(空格验证-pass-07)
Windows系统下,对于文件名中空格会被作为空处理,程序中的检测代码却不能自动删除空格。从而绕过黑名单。

8.绕过黑名单验证(.号绕过-pass-08)Windows系统下,文件后缀名最后一个点会被自动去除。

9.漏洞绕过方式
绕过黑名单验证(特殊符号绕过-pass-09)
在Windows操作系统中,当你看到文件名后跟着"::$DATA"时,它表示文件的一个附加数据流(Alternate DataStream,ADS)。数据流是一种用于在文件内部存储额外数据的机制
在普通情况下,我们使用的文件只有一个默认的数据流,可以通过文件名访问。但是Windows NT文件系统(NTFS)支持在文件内部创建额外的数据流,以存储其他信息。这些额外的数据流可以通过在文件名后面添加":$DATA"来访问
原理:Windows系统下,如果上传的文件名中test.php::$DATA会在服务器上生成个test.php的文件,其中内容和所上传文件内容相同,并被解析。

10.绕过黑名单验证(路径拼接绕过-pass-10)
在没有对上传的文件进行重命名的情况下,用户可以自定义文件名并在服务器中上传新建,就会造成对应的绕过黑名单。
11.绕过黑名单验证(双写绕过-pass-11)
代码编写过程中,只对黑名单中的内容进行空替换,因为只替换一次所以造成双写绕过

12.漏洞绕过方式绕过黑名单验证(空字符-pass-12)
php环境00截断的条件:

1.php版本小于5.3.29
2.magic quotes gpc= Off# 这个在php.ini中
13.

14.文件头-字节标识(pass-14)
常见的文件格式头JPEG/JFIF(常见的照片格式):头两个字节为·0xFF 0xD8PNG(无损压缩格式):头两个字节为·0x89 0x50GIF(支持动画的图像格式):头两个字节为·0x47 0x49BMP(Windows 位图格式):头两个字节为·0x42 0x4D

15.图片马绕过(pass-15)
getimagesize函数索引0:图像的宽度
索引1:图像的高度
索引2:图像的常量值
索引3:包含图像属性的字符串
图像的常量值:IMAGETYPE GIF、IMAGETYPE JPEG,IMAGETYPE PNG、IMAGETYPE PSD、IMAGETYPE BMP

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值