在struts2和webwork中,曾出现了远程代码执行漏洞,但是后来因为补丁会导致部分应用出现BUG,所以官方又给出了2次补丁。这次的修补,重新开启一个小小的功能,也同时开启了一个必杀dos炸弹。这个炸弹需要结合java浮点漏洞使用。

该漏洞会覆盖所有最新版本的struts2:
  Struts 2.2.3 (GA)
  Struts 2.0.14 (GA)
  只有打了“java浮点漏洞官方补丁”,才能逃过一劫。

这是作者对该漏洞的一篇分析文:http://www.inbreak.net/archives/212,《Java浮点值拒绝服务漏洞危害分析》,后文会用到。

Struts2为了修补漏洞,首先推出了补丁:集装箱运费

  private String acceptedParamNames = "[a-zA-Z0-9\\.\\]\\[_'\\s]+";

  只允许“字母、数字、.、[、]、_、’、空格”出现在参数名称中,然而这个限制,
  也同时直接禁止了(引自
http://www.sunxin.org/forum/thread/19682.html):

这导致开发人员本身定义的数据类型Set,本来可以提交

Persons(1).name=空虚浪子心

赋值的,打了这个补丁后,这种用法直接被拦截了。所以struts2官方也意识到这个这个补丁过于严格,导致正常业务不能通行,必须要把圆括号放开,同时圆括号也不会重现漏洞,所以再次补丁:
  http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java?r1=956389&r2=956397&diff_format=h


  private String acceptedParamNames = "[a-zA-Z0-9\\.\\]\\[\\(\\)_'\\s]+";

最新版本的struts2也是这样的代码。从作者的调查上看,大多数开发都不会直接使用官方补丁,特别是有经验的开发,他们只会过滤掉补丁中的“exp特征码”(官方补丁误杀太多),允许小括号的出现。那么不管怎样,现在允许小括号了。

看过我分析struts2远程代码执行文章的同学们(http://www.inbreak.net/archives/167),都知道这个漏洞和ognl的关系,本文不再叙述,只是引用一篇OGNL官方文给大家看:

http://www.opensymphony.com/ognl/html/LanguageGuide/constructors.html

OGNL的LanguageGuide中,写明自己是允许“new Object”的,而OGNL的代码,实际意义上,是先编译,后执行。就是说,我们提交了一个ognl语句后,引擎会负责转换为java代码,之后编译、执行。注意,前文提到了“编译”这个词。

那么再次引用上一篇文章的话:

  这段代码会在编译时挂掉:
  double d = 2.2250738585072012e-308;
  这段代码会在运行时挂掉:
  double d = Double.parseDouble(“2.2250738585072012e-308″);

那时的作者,其实也发现了编译的漏洞,只是不愿意发出来,所以使用了“而编译中挂掉,几乎不可能存在,很难有正常的业务需要用户提交代码,让服务器编译执行。”这样的话来误导大家。具体原因大家懂得。

提醒过大家,会有更加直接的利用发出来的。上次讲过,只要action的方法中,存在DOUBLE类型的属性,就可以直接攻击,利用的是“运行时挂掉”原理。

在ognl语句中,执行“new Double(2.2250738585072012e-308)”,就会直接在编译中挂掉,现在struts2允许用户提交用于编译的代码,又允许了小括号,就可以直接提交:


  http://www.inbreak.net/app/secTest.action?new java.lang.Double(2.2250738585072012e-308)

经过测试,可以直接CPU跑满了。请注意实际上这里的”new java.lang.double”根本没有真的“new”,而是挂在了编译的时候。

刚发邮件,就被KJ牛鄙视了:“里面有短横线”,会被struts2补丁过滤掉。还好,作者复习了一遍“科学计数法”,绕过了struts2的补丁执行,才没有丢人:


  http://www.inbreak.net/app/secTest.action?(new java.lang.Double(0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022250738585072012))

这段东西,也可以直接在eclipse中跑,请测试时,提前打开“任务管理器”,你会用到的。

对这种数字转换形式,不懂的自己百度一下“0.xxxE-xx”的含义,学习一下“科学计数法”。最终没有“短横线”了,同时也把测试环境跑挂。

如果看了上一篇分析文,你没有老老实实的打官方补丁,而是采用了“by pass exp特征码”的方法,过滤了字符串中的“2.2250738”,那么看了这串数字,相信你会比作者更激动的。

转载于:https://www.cnblogs.com/ctou45/archive/2011/06/29/2093375.html

Struts 2.2.3 DOS漏洞相关推荐

  1. PHP远程DoS漏洞深入分析及防护方案

    5月14日,国内爆出php远程DoS漏洞,官方编号69364.利用该漏洞构造poc发起链接,很容易导致目标主机cpu的占用率100%,涉及PHP多个版本.绿盟科技威胁响应中心随即启动应急机制, 应急响 ...

  2. php速度慢不怕cpu漏洞,PHP曝远程DOS漏洞可致CPU持续占满,请注意升级_护卫神

    PHP是一个开放的平台,集成了广大PHP爱好者的智慧精华,为社会产生了极大的效益,使用十分广泛. 但是PHP曝出的漏洞也不小,前不久一次hash漏洞导致PHP服务器CPU占满,最近一次的远程DOS漏洞 ...

  3. location 定位软件fake_CVE-2020-23938:安博士杀毒软件TfFRegNt.SYS驱动 DOS漏洞分析

    作者: 维阵漏洞研究员 -- lawhack 摘要 : 漏洞类型:内核内存越界读漏洞危害:BSOD 漏洞成因: 未能对传入的参数进行有效验证,对读取内存的边界值控制不严格,导致超过了原有内存的2字节进 ...

  4. 思科修复NSA报告的Nexus 交换机DoS漏洞及其它

     聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 本周,思科宣布修复位于 FXOS 和 NX-OS 网络操作系统中的四个漏洞,其中一个拒绝服务漏洞由NSA报告. 最严重漏洞 在这四个漏洞中,最严 ...

  5. linux内核系列远程拒绝服务漏洞,预警 | Linux 爆“SACK Panic”远程DoS漏洞,大量主机受影响...

    近日,腾讯云安全中心监测到Linux 内核被曝存在TCP "SACK Panic" 远程拒绝服务漏洞(漏洞编号:CVE-2019-11477,CVE-2019-11478,CVE- ...

  6. 最新Linux内核本地DoS漏洞CVE-2017-8064 4.10.12之前版本均受影响 还有一个CVE-2017-7979...

    今天SecurityFocus刚刚更新的消息,Linux内核本地拒绝服务漏洞CVE-2017-8064,Linux kernel 4.10.12之前版本全部受影响.攻击者利用该漏洞可以实施本地拒绝服务 ...

  7. 思科企业路由器受高危DoS漏洞影响

     聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 本周,思科发布补丁,修复了位于ASR 9000.ASR 9902和ASR 9903系列企业路由器的 IOS XR软件中的高危DoS漏洞 (CVE ...

  8. linux struts2漏洞,重大漏洞预警:Struts 2 远程代码执行漏洞(s2-045\s2-046) (含PoC)

    背景介绍 近日,安全研究人员发现著名J2EE框架--Struts2存在远程代码执行的漏洞,Struts2官方已经确认该漏洞(S2-045,S2-046),并定级为高危漏洞. Struts2 的使用范围 ...

  9. BIND DNS 软件修复高危 DoS 漏洞

     聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 上周,ISC 修复影响其 BIND DNS 软件的一个高危拒绝服务漏洞 (CVE-2021-25218),并给出缓解措施. 影响版本 该漏洞影响 ...

  10. linux 浏览器崩溃,Firefox DoS漏洞导致浏览器崩溃 影响到Windows操作系统

    一位安全研究人员在Mac,Linux和Windows上发现了一个影响Firefox的错误,该错误可能会导致浏览器崩溃,在某些情况下会导致底层操作系统崩溃. 该专家在网站上发布了PoC代码,以便在Mac ...

最新文章

  1. WCF NetTcpBinding Transport安全模式(6) ClientCredentialType证书验证模式---- PeerTrust验证模式...
  2. Adobe Reader阅读器打开时显示上次看到的页面
  3. js动态改变下拉菜单内容示例 .
  4. sql,插入最大值加1
  5. 聊聊asp.net中Web Api的使用
  6. 10分钟做一个新闻问答web站点[iVX低代码实战]
  7. 当你「ping 一下」的时候,你知道它背后的逻辑吗
  8. mysql数据库简单语句
  9. “火星人”马斯克推论:世界或是被编码而成,上帝可能是个程序员!
  10. AT2164 AGC006C Rabbit Exercise
  11. android 版本选择,谷歌服务框架版本如何选择 我该下载哪个版本解析
  12. js 只准输入数字_javascript 限制只允许输入数字的几种方法
  13. C++中struct的用法
  14. 31.4k,这是我见过最强横的后台管理系统 !!
  15. 001-REST-简介
  16. SX1278性能评估
  17. python 绘制箱型图
  18. 《多一点爱心》 --《年轻的潮》 汪国真
  19. 硅谷码农35岁危机:Java之父也找不到工作
  20. 深圳seo优化分析:如何一个月把几十个关键词做到百度首页

热门文章

  1. Jquery操作select选项集合,判断集合中是否存在option
  2. iOS7以上: 实现如“日历”的 NavigationBar
  3. 转帖:算法好学吗?——《大话数据结构》读者书评
  4. 【笔记】ubuntu 16.04 centos 7如何配置sudo权限
  5. android nsd和udp广播,android - 调用resolveService时,NSD在DiscoveryListener回调中缺少NSDManager - 堆栈内存溢出...
  6. 【代码优化】返回0长度数组或者集合
  7. python 多线程伪_Python每日3题什么是死锁?
  8. html代码表白_七夕表白代码,樱花特效+爱心特效+花瓣+评论留言功能等
  9. mysql 2182_MySql常用命令总结
  10. Introduction to Computer Networking学习笔记(二十五):NATs