2013-3-23

[b]1.Linux 权限[/b]
今天下午在ubuntu下安装eclipse-jee-juno和tomcat7,发现tomcat用tar解压后都是root权限,直接start 会报catalina.out: Permission denied。chmod也无济于事,只能用sudo才行,然后当eclipse add new server时总是不能load刚下载的tomcat7,(僵持了好几小时),用chown user tomcat -R 改成当前用户 (可能还有更好方法),居然立即能load,看来linux的用户组群真的很强大。
不知道别的开发者在linux下作业时是否直接chown到当前用户。
Linux下环境变量设置 在
[quote]~/.bashrc
export JAVA_HOME=/jvm/java/jdk1.7.0_17
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
export TOMCAT_HOME=/usr/local/bin/apache-tomcat-7.0.37[/quote]
### CVE-2013-4547 漏洞详情 CVE-2013-4547 是 Apache Struts 2 中的一个远程代码执行漏洞。此漏洞源于 Struts 2 的 `Action` 类中的方法调用功能未正确处理用户输入的数据,从而允许攻击者通过构造特定的 HTTP 请求来触发 OGNL 表达式的解析并最终实现任意代码执行[^3]。 #### 影响范围 受影响的主要版本包括但不限于: - Apache Struts 2.0.x 至 2.3.15 版本。 这些版本中存在缺陷的核心组件是 `struts2-core.jar` 文件内的某些类及其方法调用逻辑。 --- ### 攻击原理 当应用程序使用了基于动态方法调用的功能(Dynamic Method Invocation,DMI),并且启用了参数拦截器时,如果用户的输入数据被错误地解释为 OGNL 表达式,则可能导致恶意代码被执行。具体来说,攻击者可以通过发送如下形式的 URL 参数: ```plaintext http://example.com/app?method:%23memberAccess%3d@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS,%23res%3d%40org.apache.struts2.ServletActionContext%40getResponse(),%23res.getWriter().println(%22HelloWorld%22),%23res.getWriter().flush(),%23res.getWriter().close() ``` 上述请求利用了 DMI 功能以及 OGNL 解析机制,在服务器端运行指定命令或脚本[^3]。 --- ### 修复方案 针对 CVE-2013-4547 的修复措施主要包括以下几个方面: #### 方法一:升级框架版本 最直接有效的解决办法是将 Apache Struts 升级到不受影响的安全版本。建议至少升级至 **Apache Struts 2.3.16 或更高版本**,因为官方已经在这些版本中修补了相关漏洞[^3]。 #### 方法二:禁用 Dynamic Method Invocation (DMI) 如果不打算立即升级整个应用环境,可以考虑关闭 DMI 功能作为临时缓解手段之一。修改配置文件 (`struts.xml`) 添加以下设置即可完成操作: ```xml <constant name="struts.enable.DynamicMethodInvocation" value="false"/> ``` 这样能够阻止潜在威胁来自滥用动态方法调用的行为发生。 #### 方法三:过滤特殊字符 另一种方式是在 Web 应用防火墙(WAF)或者自定义过滤器层面增加防护策略,比如检测并拒绝包含 `${}` 和 `%{}` 结构的内容提交给后端服务处理前先做预清洗工作[^2]。 以下是 Java Servlet Filter 示例代码片段用于演示如何实现简单的字符串替换过滤过程: ```java import javax.servlet.*; import java.io.IOException; public class SecurityFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException {} @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { String paramValue = request.getParameter("inputParam"); if(paramValue != null){ // Remove dangerous patterns such as ${ and %} paramValue = paramValue.replaceAll("\\$\\{|%", ""); ((HttpServletRequest)request).getSession().setAttribute("cleanedInput",paramValue); } chain.doFilter(request,response); } @Override public void destroy() {} } ``` 注意以上仅为简化版示例实际部署需综合考量业务需求与性能开销等因素后再决定采用何种技术路径最为合适。 --- ### 总结 综上所述,CVE-2013-4547 主要是因为 Struts2 对于用户可控数据缺乏足够的校验而导致严重的安全隐患问题;推荐优先选择官方发布的最新稳定补丁包来进行彻底根治;其次也可以结合其他辅助性的防御机制共同构建更加坚固的信息安全保障体系结构[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值