RE: [LBYTE] Ruslan Communications <BODY>Builder SQL modification

From: Nick Lothian (nlat_private)
Date: Thu Jun 13 2002 - 17:23:52 PDT

  • Next message: sec: "Another cgiemail bug"

    I am unfamiliar with <Body>Builder (and their site is in Russian so I can't
    find a link), but in normal java web development pages named *_jsp.java are
    generated java code from .jsp files. 
    
    The name of the *_jsp.java files is non-standard and varies between servlet
    engine implementations. The behaviour of the servlet engine when these files
    are modified is also non-standard (Some will recompile the file to pickup
    the changes, but others - eg Tomcat 3.2 - will not). 
    
    The recommended fix should be implemented in the .jsp files (if available -
    they are sometimes shipped inside a .war file), not the .java files. Of
    course, if the *.jsp files are unavailable then this may the best possible
    work-around.
    
    Regards,
      Nick Lothian
    
    
    > -----Original Message-----
    > From: Alexander Korchagin [mailto:akorat_private]
    > Sent: Friday, 14 June 2002 1:17 AM
    > To: bugtraqat_private
    > Subject: [LBYTE] Ruslan Communications <BODY>Builder SQL modification
    > 
    > 
    > 
    > Original reference: 
    > http://www.security.nnov.ru/search/news.asp?binid=2092
    > 
    > Title:          <BODY>Builder SQL modification
    > Author:         mam0nt of Limpid Byte http://lbyte.void.ru/
    > Vendor:         Ruslan Communications
    > Vendor URL:     http://ruslan-com.ru/
    > Vendor Status:  Contacted, not replied
    > Released:       June, 13 2002
    > 
    > Background:
    > 
    >  <Body>Builder  is  a  site  building  engine  by  Ruslan 
    > Communications
    >  written  in  Java.  It has administrative access via 
    > http://site/Admin.
    >  All accounts are stored in database and accessed via SQL.
    > 
    > Problem:
    > 
    >  Leak  of  input  validation  from server side allows user to 
    > modify SQL
    >  request  during authentication. It may be used to access 
    > administrative
    >  interface without password or to run any SQL request on backend.
    > 
    > Exploitation:
    > 
    >  Use login='-- and pass='--
    > 
    > Solution:
    > 
    >  Edit _login__jsp.java:
    > 
    >           -- cut --
    >           java.lang.String _jspParam;
    >           _jspParam = request.getParameter("username");
    >           if (_jspParam != null && ! _jspParam.equals("") && 
    > _checkvalue(_jspParam) )
    >            Log.setUsername(_jspParam);
    >           _jspParam = request.getParameter("password");
    >           if (_jspParam != null && ! _jspParam.equals("") && 
    > _checkvalue(_jspParam) )
    >            Log.setPassword(_jspParam);
    >           --cut--
    > 
    >  Add new function called _checkvalue
    > 
    >           public static boolean _checkvalue(java.lang.String _value)
    >           {
    >            int count;
    >            char temp;
    >            for (count=0;count<_value.length();count++)
    >            {
    >             temp=_value.charAt(count);
    >             if (temp=='\'' ) return false;
    >            }
    >             return true;
    >           }
    >                 
    > Vendor:
    > 
    >  Vendor notified via e-mail without feedback.
    > 
    



    This archive was generated by hypermail 2b30 : Fri Jun 14 2002 - 06:22:10 PDT