任务
1.文件上传防御手段及绕过手段总结
2.文件上传常用一句话木马
3.课中所讲的三种webshell管理工具的使用方法(演示使用该工具连接webshell及抓取流量包进行分析特征)
4.文件上传无回显如何查找webshell地址
5.upload-labs靶场通关第6-第10关
一、文件上传防御手段及绕过手段总结
1)文件上传防御手段
-
文件类型检查:
- 扩展名检查:限制上传文件的扩展名,如仅允许.jpg、.png等常见图片格式。
- MIME类型检查:检查文件的MIME类型,确保其与扩展名一致。
- 文件签名验证:检查文件的头部信息,确保文件的真实类型与声称的一致。
-
文件大小限制:设置合理的文件大小上限,防止大文件上传导致的服务器资源耗尽。
-
病毒扫描:使用反病毒软件扫描上传的文件,防止上传带有恶意代码的文件。
-
文件名处理:
- 规范化文件名:对上传的文件名进行规范化处理,去除非法字符或特殊字符。
- 重命名文件:上传后自动更改文件名为随机字符串,防止利用文件名中的漏洞。
-
文件存储安全:
- 将上传的文件存储在网站根目录之外,避免通过分配的路径URL执行该文件。
- 确保上传的文件没有执行权限,避免被直接执行的风险。
-
服务器端校验:在服务器端进行严格的校验,确保上传文件符合预期的格式和安全标准。客户端校验仅作为用户体验的补充,不应作为安全的主要手段。
-
日志记录:记录文件上传的详细日志,以便在发生安全事件时进行审计和追踪。
2)文件上传绕过手段
- 文件类型绕过:
- 修改文件的扩展名或MIME类型,使其伪装成允许的文件类型。
- 使用特殊技术(如双写扩展名、添加空格等)绕过文件类型校验。
- 文件大小绕过:
- 上传一个较小的文件,然后在服务器上进行文件合并或解压缩等操作,绕过文件大小限制。
- 目录遍历绕过:
- 利用目录遍历漏洞,通过修改文件路径中的特殊字符或使用相对路径,将文件上传到系统的其他目录中。
- 文件包含漏洞:
- 某些系统在处理上传文件时,可能存在文件包含漏洞,攻击者可以通过上传一个包含恶意代码的文件来执行任意代码。
- 绕过安全设置:
- 利用系统或应用程序的安全配置不当,如未启用HTTPS、未设置强密码策略等,绕过安全限制。
- 利用WebShell:
- 即使文件上传后被设置为不可执行,攻击者也可能尝试通过其他方式(如通过WebShell)利用系统漏洞执行文件。
二、文件上传常用一句话木马
webshell
Webshell是一种黑客用于非法控制网站服务器的恶意脚本,它以ASP、PHP、JSP或者CGI等网页文件形式存在,也可以被称作为网页后门。Webshell通过持久化远程访问、权限提升和隐蔽性极强的特性,使黑客能够执行系统命令、窃取数据等。
一句话木马
一句话木马是一种短小精悍但功能强大的恶意代码,通常只有一行或几行代码,能够在目标服务器上执行任意命令。这种木马因其隐蔽性好、易于传播和利用的特点,在黑客攻击中非常常见。
常见一句话木马
php: <?php @eval($_POST['pass']);?>、<?php system($_GET['cmd']);?>
asp: <%eval request ("pass")%>
aspx: <%@ Page Language="Jscript"%><%eval(Request.Item["pass"],"unsafe");%>
Godzilla(哥斯拉)
1.下载Godzilla:
访问Godzilla的GitHub发布页面(下载链接),点击页面右侧的“releases”进入版本下载页面。
下载适合你操作系统的jar包版本。
2.准备Java环境:
确保你的系统已安装Java环境(JDK 1.8或更高版本推荐)。
3.启动Godzilla:
在终端或命令行中,使用java -jar godzilla.jar命令启动Godzilla(假设godzilla.jar是你下载的jar包文件名)。
三、文件上传无回显如何查找webshell地址
1. 使用目录扫描工具
- 工具选择:可以利用如DirBuster、Gobuster等目录扫描工具来扫描服务器上的目录和文件。这些工具可以自动化地遍历服务器的URL空间,尝试找到隐藏的文件和目录。
- 操作步骤:设置扫描的目标URL和可能的文件扩展名(如.php、.jsp等),然后启动扫描。扫描完成后,分析扫描结果,查找可能的webshell文件。
2. 源代码审计
- 方法描述:如果有可能获取到网站的源代码,那么通过源代码审计来查找webshell文件是一种直接且有效的方法。
- 操作步骤:审查与文件上传相关的代码,特别是文件处理和存储逻辑。检查是否存在潜在的漏洞,如未经验证的文件重命名、不安全的文件存储位置等。
3. 异常检测
- 方法描述:webshell在运行时可能会抛出错误或异常,通过监控网站的服务器错误页面或日志,可以寻找这些异常报告。
- 操作步骤:查看服务器日志,特别是错误日志,寻找与文件上传或执行相关的异常信息。同时,可以配置网站以显示详细的错误信息,以便更容易地发现潜在问题。
4. 文件名检测
- 方法描述:如果webshell使用了特定的命名规则(如包含特定字符组合的文件名),可以在服务器目录下搜索这些文件。
- 操作步骤:使用文件搜索工具(如find、grep等)在服务器目录下搜索具有特定命名规则的文件。
5. 网络扫描
- 方法描述:利用安全审计工具在网络流量中查找未授权访问或命令执行的行为,这些行为可能与webshell的存在有关。
- 操作步骤:配置网络扫描工具(如Nmap、Wireshark等)来监控和分析网络流量。注意查找任何异常的数据包或连接,特别是那些指向未知或未授权端口的连接。
6. 黑盒测试
- 方法描述:尝试向服务器发送各种文件上传请求,观察服务器的响应。通过修改请求参数(如文件名、MIME类型等),看是否能触发服务器的异常响应,从而暴露webshell的位置。
- 操作步骤:使用工具(如Burp Suite)来修改和发送文件上传请求。观察服务器的响应,特别是那些包含错误信息的响应。
7. 权限验证
- 方法描述:分析文件上传功能的权限设置,看是否存在权限不足但仍能访问敏感目录的情况。这些敏感目录可能包含webshell文件。
- 操作步骤:审查与文件上传相关的权限设置,确保它们符合安全最佳实践。同时,尝试以不同权限级别的用户身份访问网站,观察是否能访问到不应该被访问的目录或文件。
四、upload-labs靶场
Upload-labs靶场第六关
- 本关禁止上传.htaccess .user.ini
- 没有禁止phP 、Php 所以将文件名字大小写就绕过了限制
3.完成关卡
Upload-labs靶场第七关
- 阅读代码发现 缺少了首尾去除空格的代码过滤
- 利用PHP 和 Windows环境的叠加特性 windows系统自动删除文件名后缀的空格 绕过黑名单
3.使用bp抓包,对php后缀加上空格
4.完成关卡
Upload-labs靶场第八关
- 阅读代码发现缺少了deldot函数
- 那么就和第七关同理 获取的最终文件后缀为“.” 不在黑名单里面
3.利用Windows系统保存文件的特性 会删除文件后缀名的xxx.php. 最后上传的文件还是xxx.php
4.抓包完成后对后缀进行修改,最后完成关卡
Upload-labs靶场第九关
- 这一关黑名单,没有对::$DATA 进 行 处 理 使用::$DATA 进行处理,可以使用::$DATA绕过黑名单
2.php在window的时候如果文件名+"::$DATA"会把::$DATA之后的数据当成文件流处理,不会检测后缀名,且保持"::$DATA"之前的文件名
3.完成抓包后,进行修改,并完成关卡
Upload-labs靶场第十关
- 尝试 Apache的未知后缀名解析漏洞 和 4.php:.jpg 即第四关的思路
2.代码运行最后得到的后缀为"." 不在黑名单中 然而又用原来的10.php. .来保存文件 由于windows在文件命名中会自动删除.和空格 所以最终得到的是10.php 因此绕过了黑名单限制
3.完成抓包后,对后缀进行修改,最后完成关卡