J2EE WEBWORK FRAMEWORK安全隐患

原创 2007年10月11日 21:21:00

TEAM : I.S.T.O
AUTHOR : KJ021320
转载需注明作者,未经作者同意,不得用于任何形式的商业活动

WebWork是由OpenSymphony组织开发的,致力于组件化和代码重用的拉出式MVC模式J2EE Web框架。
框架本身就是抽象空实现的!一般很少会给程序带来0day漏洞,但是因为WebWork的设计方式 潜伏着一定的安全隐患.开发者一点要注意
下面我们来分析他的设计,以及流程逻辑...
首先 xwork.xml是它的一个核心配置文件 里面记载着 存储表单数据的javabean,处理业务逻辑的action,流程跳转的到jsp视图处理
OK 以下有一个配置
<action name="HackerTest" class="cn.isto.HackerTest">
 <result name="success">HackerReturn.jsp</result>
</action>

而一般 提交一个请求的时候 容器就会把请求交给 前端控制的Servlet来进行分发
com.opensymphony.webwork.dispatcher.ServletDispatcher
一般是配置这个默认的Servlet
当我们提交请求
http://127.0.0.1/WebWorkHacker/HackerTest.action
前端控制器就会把我们的URL分解出 /HackerTest.action 然后去 对应的 <action> 那里查找
发现这个请求 需要交给 cn.isto.HackerTest 这个类来处理!
而 WebWork内部是采用了反射机制 创建 cn.isto.HackerTest 这个类的对象!然后调用其
public String execute() 这个签名的方法来处理流程操作! 当然
cn.isto.HackerTest 最简单的需要实现 com.opensymphony.xwork.Action 或者 继承com.opensymphony.xwork.ActionSupport
一切很正常运行得很正常!
但是~WebWork提供了另外一个种形式来访问处理业务的Action
就是 Name!Method.action (在这里 方便了自己 也方便了别人)
而官方文档则说明
需要在xwork.xml 里面配置
<action name="HackerTest2" class="cn.isto.HackerTest" method="inputMethod">
 <result name="input">ch3sampleMethod.jsp</result>
</action>
这样 当你的请求
http://127.0.0.1/WebWorkHacker/HackerTest2!inputMethod.action的时候
就会查找name="HackerTest2"对应的类cn.isto.HackerTest,创建这个类的对象!然后调用其inputMethod方法
该方法需要是一个 public String 空参数签名
也就是说
public String inputMethod(){...}
以下是我们具体的类代码

public class HackerTest extends ActionSupport {
 public String execute(){
  exec="your run execute method/n";
  return SUCCESS;
 }
 public String inputMethod(){
  System.out.println("kj021320");
  return INPUT;
 }
 public void testWebWork(){
  System.out.println("void hack attack...");
 }
 public Object ooo(){
  System.out.println("Object hack attack..");
  return new Object();
 }
 public void prvtestWebWork(String str){
  System.out.println("str arg hack attack..");
 }
 public String getExec(){
  return exec;
 }
}

而经过一段测试的时候发现!问题出来了!我们根本不需要在xwork.xml中加入配置信息
我们直接在URL 里面请求
http://127.0.0.1/WebWorkHacker/HackerTest!方法名字.action
这样就可以随意调用类中只要是public 空参数的方法,
当返回值是void的时候不显示任何信息,其方法已经被执行了
而非String类型的话则会报告异常!其方法也被执行了!主要是返回给调用者的时候需要把
类型转换为字符串,所以会有异常!

换一个用PHP的说明方式吧!

<?
$fun=$_GET['method'];
if(isset($fun)){
 $fun();
}
?>

当我们提交 http://127.0.0.1/kj021320.php?method=phpinfo 这样就会出现问题了

一般在黑盒测试上面利用价值有限!但在代码审核,白盒测试上面就应该好好留意这个问题了!
特别是一些网上提供的WEB程序 采用了WEBWORK的话

全文完

 

SharePoint Framework开发基础教程

SharePoint Framework是微软推出的针对SharePoint的前端开发框架,本课程将详细讲解使用SharePoint Framework (SPFx) 来开发客户端webpart,页面扩展,字段扩展,命令集扩展等技术来定制化SharePoint Online的基础知识。
  • 2018年02月27日 16:34

J2EE WEBWORK FRAMEWORK安全隐患

 TEAM : I.S.T.OAUTHOR : KJ021320转载需注明作者,未经作者同意,不得用于任何形式的商业活动WebWork是由OpenSymphony组织开发的,致力于组件化和代码重用的拉...
  • kj021320
  • kj021320
  • 2007-10-11 21:18:00
  • 1231

Spring - Java/J2EE Application Framework 应用框架 第 12 章 Web框架

第 12 章 Web框架 12.1. Web框架介绍 Spring的web框架是围绕分发器(DispatcherServlet)设计的,DispatcherSe...
  • GarfieldEr007
  • GarfieldEr007
  • 2017-02-15 23:15:46
  • 412

J2EEweb框架汇总

  • 2008年11月11日 19:04
  • 2.62MB
  • 下载

如何开发一个j2ee框架

相信做java开发的,用框架久了的人会发现其实都差不多,可能有些人封装得好点 有些人封装的不好一点。其实原理性的东西都差不多,那么为了深入去了解框架,应该有不少人去看过源码 有看得懂的,有看不懂的...
  • everxs
  • everxs
  • 2015-05-25 09:40:02
  • 682

J2EE:JUnit--Java单元测试框架

JUnit概述 什么是JUnit JUnit是可重复测试的简单框架,基于xUnit(基于测试驱动开发的测试框架) 官网地址:http://junit.org/junit4/ junit.jar...
  • LIZHONGPING00
  • LIZHONGPING00
  • 2017-04-26 09:07:10
  • 474

J2EE Development Frameworks 英文原文

  • 2015年01月06日 09:45
  • 1.96MB
  • 下载

基于J2EE多层架构的Web开发框架研究

 摘要:在经典的J2EE四层体系结构的基础上增加数据持久层,提出了基于J2EE五层体系结构的Web开发框架;分析了基于Struts框架的J2EE架构中实现对象持久性的局限性,从中分离出对象持久层,并将...
  • monicaxiaoy
  • monicaxiaoy
  • 2009-11-04 16:34:00
  • 1755

Spring - Java/J2EE Application Framework 应用框架 第 13 章 集成表现层

第 13 章 集成表现层 13.1. 简介 Spring之所以出色的一个原因就是将表现层从MVC的框架中分离出来。例如,通过配置就可以让Velocity或者XS...
  • GarfieldEr007
  • GarfieldEr007
  • 2017-02-15 23:16:52
  • 296

选择加j2ee还是.net,比较

 毫无疑问,程序员,软件开发商,企业IT经理一直都在密切的关注着J2EE和.NET的发展,但是选择一个在性能,价格,时间上满足他们需求的平台却并不是一件简单的事情。本文试图在技术上做一个简单的比较,希...
  • hy1234
  • hy1234
  • 2007-04-11 16:06:00
  • 535
收藏助手
不良信息举报
您举报文章:J2EE WEBWORK FRAMEWORK安全隐患
举报原因:
原因补充:

(最多只允许输入30个字)