J2EE WEBWORK FRAMEWORK安全隐患
?
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的話
全文完
轉載于:https://www.cnblogs.com/springside-example/archive/2007/10/11/2529951.html
總結
以上是生活随笔為你收集整理的J2EE WEBWORK FRAMEWORK安全隐患的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么查MATLAB中的newrbf,已经
- 下一篇: 关于XtraGrid的CustomUnb