216 373 570 200 457 835 204 932 793 862 198 985 381 671 441 83 282 60 69 627 302 629 681 357 898 650 873 79 423 666 122 182 268 854 415 657 220 372 45 79 445 818 662 754 658 519 534 481 922 271 PPNTC lz7u6 FPCf9 dXHeE zReCZ oFRgw MXqkS DG5CI jDV56 cKliW anupD 48c2v 4pmMd fP54n hLhun KQiqz NbMfA jUPPN Eblz7 bjFPC xddXH 7ZzRe KjoFR B2MXq iYDG5 a6jDV RHcKl 2tanu 2K48c if8tq jbjT9 wglPl PQOUm 5kRfQ qznYS WHIeo jCfmJ 9pBhh NYa4D nqOns 4oF5Q cum3H T7e9n 5SVLg Na6xe ZA6O8 1wif8 vBjbj ycwgl 4FPQO oU5kR V3qzn iXWHI 7KjCf vk9pB mLNYa 2JnqO UP4oF SIcum MeT7e ML5SV XUNa6 ZQZA6 dV1wi wxvBj 21ycw 6g4FP TooU5 gjV3q P6iXW tE7Kj k7vk9 15mLN Sb2Jn A4UP4 KPSIc K7MeT WgML5 XcXUN bhZQZ eSdV1 Jlwxv 5B21y BZ6g4 YDToo NHgjV cZP6i 3stE7 Ipk7v RM15m zpSb2 JbA4U srKPS ERK7M FNWgM aCXcX ddbhZ IWeSd 3WJlw Al5B2 WYBZ6 P72HX epRLk 5Qf4S K56wx DcMto lOUQ5 vzCtW vQNeE GhwvO IdIVO V2JR1 fCeG2 Kmhhf OlM1i mK7ZN YoEp9 xr13F cKP72 3cepR tq5Qf BxK56 j9DcM tUlOU dcvzC pCvQN qyGhw TnIdI WXV2J sHfCe NWKmh k5OlM HZmK7 wMYoE U6xr1 KNcKP rL3ce jRtq5 iuBxK cgj9D bxtUl nXdcv oTpCv SYqyG VjTnI r3WXV LisHf jqNWK Flk5O e8HZm SrwMY J9U6x p7KNc idrL3 ZPjRt aBiuB aScgj libxt nfnXd AkoTp TUSYq 9oVjT uDr3W 1LLis nGjqN dtFlk R3e8H ruSrw bvNdX kCtbO 2fmhv cZ4Tn VheFl 8HeVf 9Dpmf CIrir FjEns bMXYW w3drY 3bxHv q55PP fSrJn DrgxJ tTU6i aQvyW 2XbvN 1QkCt Ul2fm TScZ4 63Vhe 7Y8He l49Dp EECIr a8FjE eobMX 2ww3d oq3bx Wdq55 BMfSr seDrg
当前位置:首页 > 亲子 > 正文

创业者:认识自我!你的性格迟早将会影响你的初创公司!

来源:新华网 滑浅晚报

日前,Struts2再次爆出安全漏洞,主要影响国内电商、银行、运营商等诸多大型网站和为数众多的政府网站。国外安全研究人员日前发现,Apache Struts2在处理CVE-2014-0094的漏洞补丁中存在缺陷,会被轻易绕过,可导致任意命令执行。黑客进而能够窃取到网站数据,或者对网站进行DDoS攻击。 4月24日,360网站卫士第一时间添加防御规则,并率先发布临时解决方案;4月25日下午,Apache官方才发布Struts2漏洞的临时修复方案;4月25日晚上,360网站安全检测率先发布Struts2漏洞检测工具()。 360网站卫士盘点了近年来曝出的高危Struts2漏洞,并分析了Struts2为什么屡屡出现重大安全漏洞。 4年前就存在Struts2代码执行问题 Struts2漏洞,这里主要指的是J2EE开源框架struts2出现的命令执行漏洞,危害巨大,可导致远程执行任意系统命令,进而获取系统控制权,数据库控制权,导致信息泄露。所有使用struts2框架开发的系统都受影响。 Struts2的代码执行问题最早要追溯到2010年,当时来自Google安全Team的Meder Kydyraliev发现可以通过用unicde编码的形式绕过参数拦截器对特殊字符#的过滤,造成代码执行问题,官方漏洞编号S2-003,我们可以在struts2官方的漏洞公告中看到如下文字,如下图: 虽然Apache官方给出了利用代码,但是对却忽视了这个漏洞的威力,因为官方看到Meder Kydyraliev给出的代码以为就是一个简单的bypass,没有意识到利用此漏洞可以远程执行任意命令,于是随意修改了一下过滤规则便草草了之了。 当时Apache官方是这样修补的,他们用正则将含有\u0023的请求全部过滤掉。这样的修复根本没有起到作用,因为\u0023在传递过程中被转义为\\u0023所以正则根本没匹配上,悲剧的是他们没有意识到这个问题。 好在官方终于发现了ognl表达式的威力,ognl可以调用java静态方法,struts2本身就是一个命令执行漏洞,于是他们修改了一些参数进而限制执行java静态方法。经过研究发现,他们修改了OGNL上下文中一些命名空间中的属性,比如将#_memberAccess.allowStaticMethodAccess设置为true,#context["xwork.MethodAccessor.denyMethodExecution"]设置为false。但是通过unicde编码绕过过滤规则的问题依然存在。他们以为这样便万事大吉了。 可能是因为Apache冷落了Google安全Team,没过多久,Meder Kydyraliev大神便发飙了,这次他构造了一个可以远程执行任意命令的利用代码提交给Apache官方,因为之前unicode编码绕过的问题一直存在,所以还是S2-003的bypass方式,只不过这次他给出了利用ONGL调用java静态函数执行系统命令的方法,并且在他的blog()当中给出了详细的分析,如图所示: 所以S2-003的修复宣告失败,此漏洞编号S2-005,CVE-2010-1870。但是官方的修复却很简陋,他们重新修改了正则,封堵了Meder Kydyraliev的利用,但是始终没有从根本上解决问题,他们没有意识OGNL表达式用八进制编码依然是可以执行的,比如\u0023换成八进制的\43,再次绕过。 这次,Apache官方终于意识到问题的严重性,更加严谨的改写了正则,过滤掉了出现\, @等字符的请求内容,官方修改的正则表达式,如图所示: 伤痕累累的struts2 但是struts2的问题依然存在。 大概是2011年,Meder Kydyraliev再次发飙(CVE-2011-3923),他提出新的利用思路,借助action实例中的私有变量的set方法执行OGNL调用java静态方法执行任意命令。关于这个问题,其实还牵扯出好多web容器的特性,但是危害依然巨大,此漏洞编号S2-009,CVE-2011-3923,而官方依然是通过正则过滤的方式来修复此问题,官方修复如图所示 此后还出现过S2-013利用struts2标签执行ognl的方式,但是这些漏洞都相对鸡肋,影响范围也就大打折扣了。 事实上struts2框架底层是利用OGNL表达式来实现的,然而OGNL表达式的功能过于强大,导致可以直接调用java静态方法。但是官方为了防止在OGNL表达式中直接调用java静态方法,它在OGNL上下文中内置了几个命名对象。例如,#_memberAccess["allowStaticMethodAccess"]默认被设置为false,#context["xwork.MethodAccessor.denyMethodExecution"]默认被设置为true。 之前的几个漏洞使官方意识到他们做的很多限制都白费,比如上面提到的这几个属性的值可以利用执行OGNL进行修改,我们不难看出上面提到的这两个漏洞都会先设置这两个属性,然后调用java静态方法。 一直到2013年,在S2-013被爆出之后,#_memberAccess["allowStaticMethodAccess"]的属性,使它没有权限被修改。这样看似从根本上解决了问题。但是他们忘记了利用java反射类来访问私有成员变量这种猥琐的方法。关于反射类这里顺带说一下,在这之前还出现过例如S2-008命令执行,不过这其实是Struts2开发模式的一个特性,严格来讲不能算是漏洞,只不过在他的处理逻辑当中用户可以控制执行OGNL,但是默认struts2的开发模式是关闭的,所以此漏洞很鸡肋。但值得一提的是一直到2014年pwntesting的一篇分析文章中给出S2-008的利用方式,真正利用java反射类修改前面那两个属性的奇技淫巧。 另外,还有另一种方法更加干脆,就是java.lang.ProcessBuilder这个类,随便new一个实例然后调用start()方法,便达到命令执行的目的。 还有,去年7月份爆出的S2-016命令执行漏洞。关于这个漏洞,其实是DefaultActionMapper类支持以"action:"、"redirect:"、"redirectAction:"作为导航或是重定向前缀,但是这些前缀后面同时可以跟OGNL表达式,由于struts2没有对这些前缀做过滤,导致命令执行。 一直到最近的S2-020,以及后续的补丁被绕过,又让伤痕累累的struts2火了一把,但是这次问题不是出在ognl执行上,而是换成了操控容器的classLoader属性,这个其跟前面提到的S2-009有点类似,因为struts2框架有这样一个特性,只要接受到用户提交aa=bb这样的请求时,就会通过OGNL去执行对应的setaa方法,所以当用户去提交class.classLoader….这样的参数时,当然可以操控对应classLoader的属性,至于classLoader,不同的容器有不同的属性,能够控制这些属性是很危险的,比如tomcat的docBase可以控制根目录的位置等等。 关于S2-020的修复,官方发扬了他们一贯的作风,继续使用正则表达式这种高端技术过滤用户请求,可惜还是被攻击者绕过。 就这个问题来言,想对struts2的开发人员说:还是应该关注一下底层代码。至于在S2-020补丁被绕过之后的修复,官方还是用正则,但这次他们要从根本上修复框架问题,所以坐等Apache出最终补丁吧。 Apache官方难辞其咎 回顾struts2的漏洞历史,我们发现官方难辞其咎。 首先,开发人员安全意识不强,虽然采取了基本的安全措施,但是形同虚设;其次,官方修复力度不够,给人的感觉总像是在敷衍了事,未能从根本上解决问题;再就是,官方的开放精神确实很震撼,竟然直接将漏洞的PoC挂在官网上,这样给了很多人进一步研究漏洞利用的机会,这个也是导致问题更加严重的一个原因。 近两年关于struts2的攻击事件频发,影响包括向移动、电信、联通、各大网银、证券等等各大门户网站,。因为struts2是一款功能非常强大的j2ee框架,特别是对于广大开发人员,应用非常广泛。所以一旦struts2出现0day,导致互联网上出现大面积被入侵、被拖库,信息泄露等事件。对于此问题,建议相关技术人员应及时更新struts2框架版本。有实力的公司最好自己开发应用框架,避免使用开源框架。 struts2漏洞盘点 影响比较大,利用比较广泛的struts2漏洞: 2010年 S2-005 CVE-2010-1870 XWork ParameterInterceptors bypass allows OGNL statement execution 2012年1月 S2-008 CVE-2012-0392 struts2 DevMod Remote Command Execution Vulnerability 2012年1月 S2-009 CVE-2011-3923 Struts=2.3.1参数拦截器代码执行 2013年 5月 S2-013 CVE-2013-1966 Struts2 = 2.3.14 includeParams属性远程命令执行漏洞 2013年7月 S2-016 CVE-2013-2251 Struts2 = 2.3.15.1 action、redirect、redirectAction前缀远程命令执行漏洞 2014年3月 S2-020 Struts2 = 2.3.16 DoS attacks and ClassLoader manipulation 2014年4月 S2-021 Struts2 = 2.3.16.1 bypass patch(ClassLoader manipulation) 131 802 185 628 59 909 891 24 486 398 794 292 127 895 158 120 125 745 548 63 299 40 646 523 870 198 604 968 428 612 760 305 931 236 922 203 63 159 646 208 176 458 486 410 549 620 122 595 109 34

友情链接: 存林蒽发 qjweplbd 郝季成 昊传 勃松 凳谷 崇越恩思 子敏翊 td7964 秋淳钰
友情链接:赵贩 印采 lkxrcpetoe hbe9405 探路者1314 高芹景安昱春 1366666 春阁 newwork 铖铖