文件上传漏洞

对文件上传路径变量过滤不严,并且对用户上传的文件后缀以及文件类型限制不严,攻击者可通过 Web 访问的目录上传任意文件,包括网站后门文件(webshell),进而远程控制网站服务器。

文件上传(验证/绕过)措施

前端-js类绕过

  1. 页面直接修改js上传文件方法(添加类型等);
  2. 抓包改包,将上传的文件后缀进行修改;(例如:a.jsp.jpg ------抓包修改为------a.jsp)
  3. 复制页面,重新构建新页面,获取方法,并修改;

后端

黑名单绕过

特殊后缀

.htaccess解析

web站点架构为:php+apache , 保证文件上传到本地 , apache开启对.htaccess支持;黑名单没有过滤.htaccess;

编辑.htaccess文件,写入

复制代码
//1.这将把目录下的shell.jpg的文件当做可执行的php脚本进行解析并执行。[优先]
<FilesMatch "shell.jpg">
  SetHandler application/x-httpd-php
</FilesMatch>
 
//2.上传后缀为.aaa的文件,让其做为php类型文件进行解析
AddType application/x-httpd-php .aaa

上传一句话木马并以.jpg结尾,蚁剑连接

大小写绕过

php-Php ,pHP pHp。。。。

点绕过

Windows 系统下,文件后缀名最后一个点会被自动去除,Linux不会

bp抓包加点demo.php.

空格绕过

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

复制代码
a.php[空格](点)[空格]
a.php . 
a.php(点)[空格](点)
::$DATA绕过

window系统下,如果上传的文件名为a.php::$DATA,它会在服务器上生成一个a.php的文件,其中内容和所上传内容相同,并被解析。

双后缀名绕过

a.php-a.pphphp

白名单绕过

MIME绕过

bp抓包修改Content-Type类型,将类型指定为:image/*

%00截断

当一个字符串中存在空字符的时候,在被解析的时候会导致空字符后面的字符被丢弃。

00截断的原理:在后缀中插入一个空字符(不是空格),会导致之后的部分被丢弃,而导致绕过的发生。

如:在文件1.php.jpg中插入空字符变成:1.php.0x00.jpg中,解析后就会只剩下1.php,而空字符怎么插入的呢?

通常我们会用Burp抓包后,在文件名插入一个空格,然后再HEX中找到空格对应的16进制编码"20",把它改成00(即16进制ASCII码00,对应十进制的0),就可以插入空字符了

1.php%00.txt---1.php

前端:%00 截断在 GET 中被 url 解码之后是空字符。但是在 POST 中 %00 不会被 url 解码,所以只能通过 bp修改 hex 值为 00 (URL decode)进行截断。(在BurpSuite内选中%00右键convent selection---URL---URL-decode)

后端:%00截断文件路径,文件路径是上传路径和文件名拼接的,eg:filePath:/api/upload/file/a.php%00;fileName: a.jpg

0x0a截断

换行符/n

内容及其他绕过

文件头检测

常见文件头:

JPEG (jpg),文件头:FFD8FF

PNG (png),文件头:89504E47

GIF (gif),文件头:47494638

XML (xml),文件头:3C3F786D6C

ZIP Archive (zip),文件头:504B0304

先将一句话木马写入txt文件,改文件后缀为png格式;用winhex打开,找到你所改成图片的文件头,只要将其放在文件头部(也就是放在一句话的前面),保存即可。上传,用bp抓包,然后修改文件后缀为.php格式,放包,用蚁剑连接即可

还可以用下面方法,看的别的大佬的,还没试过

复制代码
## CSDN.png 为要上传的图片【必须加/b】;
## 1.php 为一句话木马【必须加/a】;
## phpinfo 为重新定义的文件名;
copy 1.png/b+1.php/a phpinfo.png

也可以直接bp在文件流的最前方,添加文件头

二次渲染

对图片文件流,只保留可以生成图片的最基本部分,其他地方舍弃

gif绕过

将包含恶意代码的图片phpinfo.gif,上传到服务器----> 服务器上传图片功能代码,对图片进行过滤,只保存最基本的部分,并返回到前端页面展示---->下载上传后的图片,并用winhex.exe打开,发现图片末尾处的一句话木马消失---->010对比,找到原图片与上传后图片的相同之处,并在该位置插入恶意代码,再次上传绕过

条件竞争

先将文件上传到服务器中,再判断文件后缀是否在白名单里面。如果在则重命名,否则删除。

操作用bp参考https://www.freebuf.com/articles/web/275557.html

相关推荐
rocksun14 分钟前
需要尽早知道的容器安全知识
安全·容器·kubernetes
中新赛克19 分钟前
解读《网络安全法》最新修订,把握网络安全新趋势
安全·web安全
恰薯条的屑海鸥39 分钟前
SQL注入篇-sqlmap的配置和使用
数据库·sql·安全·web安全·渗透测试·网络安全学习
网硕互联的小客服44 分钟前
如何排查 Docker 容器资源占用过高的问题?
运维·服务器·网络·安全·docker·容器
CYRUS_STUDIO3 小时前
一文搞懂 SO 脱壳全流程:识别加壳、Frida Dump、原理深入解析
android·安全·逆向
Bruce_Liuxiaowei3 小时前
深度剖析OpenSSL心脏滴血漏洞与Struts2远程命令执行漏洞
struts·安全·web安全
科技小E6 小时前
打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用
人工智能·安全·智能手机
行云流水剑8 小时前
【学习记录】使用 Kali Linux 与 Hashcat 进行 WiFi 安全分析:合法的安全测试指南
linux·学习·安全
KKKlucifer8 小时前
加密通信 + 行为分析:运营商行业安全防御体系重构
网络·安全·重构
炎码工坊9 小时前
微服务通信安全实战:JWT在分布式架构中的应用与最佳实践
安全·网络安全·云原生·系统安全·安全架构