文件上传防御手段
文件扩展名校验
白名单机制:只允许特定扩展名的文件上传,如只允许上传图片和视频文件,严格过滤可执行文件。
大小写不敏感:确保校验过程对文件扩展名的大小写不敏感,防止通过大小写变化绕过校验。
文件内容校验
文件头检测:检查文件内容的开头部分,确保文件类型与扩展名一致。
内容扫描:对上传的文件进行病毒扫描和内容检查,确保不包含恶意代码或敏感数据。
文件大小限制
设置每个文件的最大大小限制,防止上传过大文件耗尽服务器资源。
上传频率限制
限制用户在给定时间内可以上传的文件数量,防止恶意用户或自动化脚本滥用上传功能。
文件重命名
对上传的文件进行重命名,使用随机或唯一的文件名,防止文件名冲突和恶意文件覆盖。
隐藏上传文件路径
不直接暴露上传文件的存储路径,增加攻击者访问文件的难度。
设置目录权限
对文件上传目录设置适当的权限,如只读、只写、不可执行等,防止上传的文件被执行。
使用HTTPS确保文件上传过程通过HTTPS进行,加密传输数据,防止中间人攻击。
文件上传绕过手段
前端绕过
删除或禁用前端校验:通过修改前端代码或禁用JavaScript来绕过前端校验。
修改数据包:使用Burp Suite等工具修改HTTP请求中的数据包,改变文件扩展名或内容。
黑名单绕过
等价扩展名绕过:使用与黑名单中扩展名等价但未被列入黑名单的扩展名。
特殊文件名绕过:利用系统特性,如Windows系统中的空格、点号、::$DATA等特殊字符绕过文件名限制。
.htaccess文件:上传.htaccess文件,通过配置将特定类型的文件当作可执行文件处理。
白名单绕过
MIME类型绕过:修改HTTP请求中的Content-Type字段,绕过对MIME类型的检测。
00截断绕过:在文件名中插入00字节,截断文件名,绕过对文件扩展名的检测。
解析漏洞绕过
中间件解析漏洞:利用Web服务器或中间件的解析漏洞,将非可执行文件当作可执行文件处理。
文件包含漏洞:通过文件包含漏洞,将任意类型的文件当作PHP等脚本文件执行。
条件竞争
利用文件上传过程中的时间差,在文件被重命名或删除之前访问该文件,执行其中的恶意代码。
常用一句话木马
php的一句话木马: <?php @eval($_POST['pass']);?>
asp的一句话是: <%eval request ("pass")%>
aspx的一句话是:<%@ Page Language="Jscript"%> <%eval(Request.Item["pass"],"unsafe");%>
.
文件上传无回显如何查找webshell地址的方法
1. 分析服务器端日志
Web服务器日志:检查Web服务器的访问日志和错误日志,看是否有关于文件上传操作的记录。这些日志可能包含文件上传时使用的URL路径或上传后的存储位置信息。
应用程序日志:如果应用程序有自定义的日志记录功能,尝试查看这些日志以获取上传文件的路径信息。
2. 使用安全扫描工具
Webshell检测工具:利用专业的Webshell检测工具(对网站进行扫描。这些工具能够识别出常见的Webshell特征,并报告可疑的文件路径。
文件扫描:在服务器上进行文件扫描,查找最近创建或修改的可疑文件。这些文件可能是通过文件上传功能上传的Webshell。
3. 源代码审计
查看文件上传处理代码:如果可能的话,获取并审计网站的后端源代码,特别是处理文件上传的代码部分。通过分析代码逻辑,可能可以找到文件上传后的存储路径。
蚁剑使用
在网上下载一句话木马放入记事本把后缀改为php并防入pikachu的www目录下
设置如下
在一句话木马中包含有链接密码
链接查看
bp抓包
冰蝎使用
打开Behinder.jar
选择要使用的模块,生成服务端。
将生成的文件上传至目标
右键新增shell,输入上传的url,选择刚才上传的脚本语言以及对应的传输协议,最后保存即可
链接成功
哥斯拉使用
哥斯拉需要使用自己生成的木马
选择文件生成路径并设置文件名
成功生成
upload-labs靶场通关
pass6
把.php 格式改为 .Php 上传上去之后,就会自动解析为.php,然后直接上传,蚁剑连接
pass7
尝试大小写绕过,.htaccess文件等均显示此文件禁止上传,查看源码
利用bp抓包
pass8
查看源码
bp抓包
pass9
上传PHP一句话文件,抓包改后缀zoe.php::$DATA,
使用蚁剑连接pass6的zoe.php
pass10
上传文件名为 .php. .
bp抓包