阿里云
服务器地域选择
发表主题 回复主题
  • 2154阅读
  • 1回复

[网络/安全]Struts2升级版本至2.5.10,高危漏洞又来了

级别: 论坛版主
发帖
3359
云币
8802

— 本帖被 不靠谱贝贝 设置为精华(2017-04-10) —
前情概要 pe>[Ts`2F  
n1)~/ >  
漏洞年年有,最近特别多。2017年3月6日,Apache Struts2被曝存在远程命令执行漏洞,漏洞编号:S2-045,CVE编号:CVE-2017-5638,官方评级为高危,该漏洞是由于在使用基于Jakarta插件的文件上传功能条件下,恶意用户可以通过修改HTTP请求头中的Content-Type值来触发该漏洞,进而执行任意系统命令,导致系统被黑客入侵。 !w{(}n2Wq  
漏洞分析请移步:https://yq.aliyun.com/articles/72008 pg/SYEvsV  
n7iIY4gZ  
建议 ]_mcJ/6:  
f!13Ob<8r  
如果这个版本在Struts2.3.5 到 Struts2.3.31 以及 Struts2.5 到 Struts2.5.10之间则存在漏洞,请升级到struts 2.3.32或2.5.10.1版本(毕了狗了,公司还在用struts2)。 r(p@{L185  
由于目前使用版本是struts2-core-2.3.28,于是赶紧升了下级别,略过2.3 直接升级到2.5版本。 2}kJN8\F  
de,4M s!%  
升级说明 =m/BH^|&W  
f_;6uCCO  
一、找不到类 x?n13C  
  1. java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
4&wwmAp^  
找不到那得多正常,查看了一下源码,2.5版本已变更了包路径。 xAu&O\V  
  1. <filter><filter-name>struts2</filter-name><filter-class>  org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class></filter>
/(?,S{]  
二、配置好了居然找不到Action >m4HCs>  
是不是有点怀疑人生了,赶紧去http://struts.apache.org/ struts2的官网扒拉扒拉。 #KwK``XC 4  
  1. 由于版本跨度大,2.5版本升级了很多特性,在Struts 2.5中,严格DMI被扩展,它被称为严格方法调用 又名SMI。你可以想象DMI是一个“边境警察”,SMI是一个“税务警察”,并注意内部。使用此版本,SMI默认情况下启用(strict-method-invocation属性默认设置为 true在 struts-default包中),您可以选择禁用它每个包 - 没有全局开关禁用整个应用程序的SMI。SMI的工作原理如下:<allowed-methods> / @AllowedMethods 被定义每个动作 - SMI工作,而不打开它,但只是那些动作(加上<global-allowed-methods/>)SMI已启用,但没有<allowed-methods> / @AllowedMethods 被定义 - SMI工作,但只有<global-allowed-methods/>SMI已禁用 - 允许调用任何与默认RegEx匹配的操作方法 - ([A-Za-z0-9_$]*)您可以使用常量重新定义默认RegEx,如下所示 <constant name="struts.strictMethodInvocation.methodRegex" value="([a-zA-Z]*)"/>在操作定义中使用通配符映射时,SMI有两种方式:SMI被禁用 - 任何通配符将被替换为默认的RegEx,即:<action name="Person*" method="perform*">将被翻译成allowedMethod = "regex:perform([A-Za-z0-9_$]*)".启用S​​MI - 不会发生通配符替换,必须严格定义通过注释或<allowed-method/>标记可以访问哪些方法。
57`9{.HB  
!"s~dL,7  
也就是说你必须加入这个配置才可以,最好全局设置: FSA"U9 w<  
  1. <global-allowed-methods>regex:.*</global-allowed-methods>
1MxO((k  
三、package中元素顺序的问题元素类型为 "package" 的内容必须匹配 "(result-types?,interceptors?,default-interceptor-ref?,default-action-ref? v|GDPq  
出现此报错,你就要注意了,一定要检查package中 global-allowed-methods 的位置,然后按照报错指定顺序放置配置。 G&dz<f  
k_](u91  
四、可能会出现的问题 qTrb)95  
如果你的项目中使用的是log4j而不是log4j2,那么问题就来了,你还需要加入log4j-api-2.7.jar 和log4j-core-2.7.jar,并且配置 log4j2.xml(暂且是个空的)。 n--w-1  
  1. <?xml version="1.0" encoding="UTF-8"?><configuration status="error"><appenders></appenders><loggers><root level="info"></root></loggers></configuration>
m 4V0e~]  
Usf7 AS=  
否则会一直报以下错误,至于为什么,还没深入了解。ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console. E2yL9]K2  
好了,如果启动没有其他问题,应该就可以访问到久违的Action了。 |>jlmaV  
+~!\;71:f  
云栖社区: https://yq.aliyun.com/articles/72018 97MbyEE8J  
xL} ~R7  
 d>}R3T  
IT0 [;eqR  
[ 此帖被小柒2012在2017-03-13 21:50重新编辑 ]
你只看到我的技术,却没看到我的通宵。 你有你的需求,我有我的选择。 你嘲笑我技术宅孤独一生,我可怜你只能呆呆站在墙里。 你可以轻视昼夜不分的Coding,但我会证明它至少可以买到xx票。 技术宅的路上少不了苦逼和孤独,又怎样,哪怕成不了大神,也要码的漂亮。我是IT男,我为自己代言!
级别: 新人
发帖
2
云币
4
只看该作者 沙发  发表于: 03-20
ReStruts2升级版本至2.5.10,高危漏洞又来了
Struts2 漏洞 何时是个头啊~~~
发表主题 回复主题
« 返回列表上一主题下一主题

限100 字节
如果您在写长篇帖子又不马上发表,建议存为草稿
 
验证问题: 阿里云官网域名是什么? 正确答案:www.aliyun.com
上一个 下一个