Nacos 历史漏洞复现
背景Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
Nacos是阿里巴巴于2018年开源的项目,目前在Github中已获得 39.9k Star,由此可见其的使用广泛程度。
CVE-2021-29441(未授权访问)漏洞简介该漏洞发生在 nacos在进行认证授权操作时,会判断请求的 user-agent是否为 Nacos-Server,如果是的话则不进行任何认证。
漏洞报送原 ISSUE:https://github.com/alibaba/nacos/issues/4593
影响版本
nacos版本号 <= 2.0.0-ALPHA.1
nacos版本号 < 1.4.1
环境搭建使用 docker 基于 vulhub 项目的 nacos 部分进行搭建。
1docker-compose up -d
漏 ...
Tomcat 历史漏洞复现
Tomcat 是一个开源的、轻量级的 Web 应用服务器和 Servlet 容器。它由 Apache 软件基金会下的 Jakarta 项目开发,是目前最流行的 Java Web 服务器之一。
CVE-2025-24813(反序列化代码执行)漏洞描述Apache Tomcat 在处理 HTTP PUT 请求时,存在一个不安全文件上传漏洞(CVE-2025-24813),攻击者可利用该漏洞在服务器上写入恶意文件,并在特定条件下触发反序列化攻击,最终导致远程代码执行(RCE)。
利用条件
应用程序启用了 DefaultServlet 写入功能,该功能默认关闭。
应用支持了 partial PUT 请求,能够将恶意的序列化数据写入到会话文件中,该功能默认开启。
应用使用了 Tomcat 的文件会话持久化并且使用了默认的会话存储位置,需要额外配置。
应用中包含一个存在反序列化漏洞的库,比如存在于类路径下的 commons-collections,此条件取决于业务实现是否依赖存在反序列化利用链的库。
影响版本
Apache Tomcat 11.0.0-M1 to 11.0.2
Apache To ...
Shiro 历史漏洞复现
前言Apache Shiro是一款开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro 框架直观、易用,同时也能提供健壮的安全性。
环境搭建采用 vulhub 项目的 Shiro 系列:https://github.com/vulhub/vulhub
指纹信息登录返回的响应包中 set-Cookie 包含 rememberME=deleteMe 字段可判断该网站使用 Apache Shiro 框架。
当然该值只是默认值,研发是可以修改的。
CVE-2020-1957(认证绕过)漏洞描述在 Apache Shiro 1.5.2 以前的版本中,在使用 Spring 动态控制器时,攻击者通过构造..;这样的跳转,可以绕过 Shiro 中对目录的权限限制。利用 Shiro 和 Spring 对 URL 的处理的差异化,越权并成功访问。
漏洞原理
客户端请求URL: /xxxx/..;/admin/
Shrio 内部处理得到校验URL为 /xxxx/.. 校验通过
Springboot 处理 /xxxx/..;/admin/index , 最终请求 /admin/index ...
一文搞懂前端加密和js逆向
学习的必要性在如今科技飞速发展的时代,传统的明文传输已经慢慢退出历史的舞台。更多的是对用户传入的参数进行加密。
甚至有些时候,对用户的响应内容也是加密的。
那么,当我们测试越权、弱口令和 sql 注入的时候,就必须要对传入的参数进行加密。否则大多时都是无功而返。同时针对于前端加密还有一个天然的优势。由于内容都是经过加密的。 自然不会被 WAF 所拦截。
常见的 JS 加密在线解密工具:https://www.ssleye.com/ssltool/
对称加密比如 AES、DES 使用的加密和解密的密钥都是同一个。所以叫做对称加密。
非对称加密比如 RSA 和 ECBSA 使用非对称加密,也就是说,加密和解密使用的是两个密钥,公钥一般在前端,私钥放在后端用于解密。
JS 逆向快速定位到加密处代码示例靶场地址:https://github.com/outlaws-bai/GalaxyDemo
通过字段关键字虽然这里传入的值是经过加密处理的,但是它的 key 是明文的。
因此我们可以直接进行搜索 data:或 data=以及 data =。进行定位。
当然这里我更推荐在 netw ...
Thymeleaf SSTI 模版注入
前言Thymeleaf 是一个服务器端 Java 模板引擎,能够处理 HTML、XML、CSS、JAVASCRIPT 等模板文件。Thymeleaf 模板可以直接当作静态原型来使用,它主要目标是为开发者的开发工作流程带来优雅的自然模板,也是 Java 服务器端 HTML5 开发的理想选择。在 Thymeleaf 3.0.0 - 3.0.11 之间的特定场景下存在模版注入3.0.12 版本也存在 bypass 执行命令的方法。
SpringBoot 引入 Thymeleaf导入依赖1234<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>
配置在 /src/main/resources/目录下创建 templates目录用于存放模版文件,接着在 application.properties文件中添加或修改如下 ...
SpringBoot 框架学习记录
SpringBoot 介绍
Spring Boot是由Pivotal团队提供的基于Spring的全新框架,旨在简化Spring应用的初始搭建和开发过程。
Spring Boot是所有基于Spring开发项目的起点。
Spring Boot就是尽可能地简化应用开发的门槛,让应用开发、测试、部署变得更加简单。
SpringBoot 特点
遵循“约定优于配置”的原则,只需要很少的配置或使用默认的配置。
能够使用内嵌的Tomcat、Jetty服务器,不需要部署war文件。
提供定制化的启动器Starters,简化Maven配置,开箱即用。
纯Java配置,没有代码生成,也不需要XML配置。
提供了生产级的服务监控方案,如安全监控、应用监控、健康检测等。
Spring Boot 与 SSM
SSM是由三个独立的框架组合而成的,分别是Spring、Spring MVC和MyBatis的缩写。这三个框架经常结合使用,构建Java Web应用程序:
Spring:用于依赖注入和事务管理。
Spring MVC:用于Web层,处理HTTP请求。
MyBatis:是一个持久层框架,用于与数据库交 ...
Flask 的模版注入漏洞
前言前期学习主要以 Python 的 Flask 框架使用的 Jinja2 模版为主,同时 x1ong 也借此机会学习一下 Python 的 Flask 模块。
Flask 基础模块的安装安装方法比较简单,直接使用 pip 安装即可:
1pip3 install flask
最小的应用12345678from flask import Flaskapp = Flask(__name__)@app.route('/')def hello(): return "Hello Flask!"app.run()
以上代码解释如下:
首先我们导入了 Flask 类。该类的实例将会成为我们的 WSGI 应用。
接着我们创建一个该类的实例。第一个参数是应用模块或者包的名称。 __name__ 是一个适用于大多数情况的快捷方式。有了这个参数, Flask 才能知道在哪里可以找到模板和静态文件等东西。
然后我们使用 route() 装饰器来告诉 Flask 触发函数的 PATH 。
函数返回需要在用户浏览器中显示的信息。默认的内容类型是 HTML ,因此 ...
CTF 中的 XXE 那些事儿
XML 基础什么是 XML
XML 指可扩展标记语言(Extensible Markup Language)
XML 是一种标记语言,很类似 HTML
XML 的设计宗旨是传输数据,而非显示数据
XML 标签没有被预定义。您需要自行定义标签。
XML 被设计为具有自我描述性。
XML 是 W3C 的推荐标准
特点:
仅仅是纯文本,他不会做任何事情,XML可以自己发明标签(允许定义自己的标签和文档结构),他常被用于数据的传输格式。
XML文件格式如下:
XML 构成
DTDDTD(文档类型定义)的作用是定义 XML 文档的合法构建模块。
DTD 可以在 XML 文档内声明,也可以外部引用。
内部声明:
外部声明:
实体根据类型划分,实体一般分为 一般实体 和 参数实体
一般实体一般实体(通用实体)的声明语法: <!ENTITY 实体名 "实体内容">
引用实体的方式: &实体名;
在 DTD 中定义实体,在 XML 文档中引用:
参数实体参数实体只能在 DTD 中使用,参数实体的声明格式: <!ENTITY % 实体名 &q ...
CTF 中的反序列化考点总结
PHP 类和对象基础基础概念类是对一个类别的抽象概念,而具体的则是对象,比如汽车就是一个类
而对象则是我的宝马,而不是宝马,宝马也是一个类,对象是一个具体到每个事物
PHP官方解释: 类是对象的抽象,对象是类的具像(具体对象)
如何创建一个类:
使用class关键字进行创建,Class ClassName{}
12345<?php class Car { // 这里是类的内容}>
类名的命名规范: 类名通常使用大驼峰命名法。例如: persontest 的大驼峰命名法就是PersonTest 小驼峰命名法就是personTest。
类中的成员
成员属性 (在类中定义的变量称之为属性)
方法 (在类中定义的函数称之为方法)
成员常量
创建一个类12345678910111213<?php class Demo { public $username = 'x1ong'; public $password = "admin@123"; public func ...
CTF中的命令执行总结
前言最近在复习总结关于CTFWEB 方向的考点,因为之前虽然学过,但是一直并没有成体系的笔记或者文章发布。于是最近趁着在系统的学习 CTFWEB 方向的考点。对 CTF 中的命令执行做一次总结。
PHP中的命令执行函数systemsystem — 执行外部程序,并且显示输出
参数
说明
command
要执行的命令
返回值: 成功则返回命令输出的最后一行,失败则返回 false。
passthrupassthru — 执行外部程序并且显示原始输出
参数
说明
command
要执行的命令
返回值: 成功时返回 null, 或者在失败时返回 false。
execexec — 执行一个外部程序,并返回执行结果的最后一行内容。
参数
说明
command
要执行的命令
output
如果设置该参数则使用命令执行的结果填充该数组。
返回值: 命令执行结果的最后一行内容,失败时返回 false。
shell_execshell_exec — 通过 shell 执行命令并将完整的输出以字符串的方式返回。
参数
说明
comm ...