RE: SQL injection from within a table - is it possible?

From: Ofer Shezaf (Ofer.Shezaf_at_breach.com)
Date: 01/07/05

  • Next message: Abe Usher: "Using Google Desktop Search for remote system monitoring"
    Date: Fri, 7 Jan 2005 16:32:14 -0500
    To: "Burnett, Robert" <burnettr@Fortrex.com>, "Peter Bair" <peterbair100@hotmail.com>, <pen-test@securityfocus.com>
    
    

    Stored SQL injections are feasible and research has been done in that
    area. The best article I know regarding what is called "second order
    attacks" is
    "Second order code injection attacks" by Gunter Ollmann
    (http://www.nextgenss.com/papers/SecondOrderCodeInjection.pdf)

    The document "Advanced SQL Injection In SQL Server Applications"
    (http://www.nextgenss.com/papers/advanced_sql_injection.pdf) refers
    specifically to second order SQL injections.

    Both documents are by NGSSoftware.

    An interesting aspect of second order SQL injection is that many times
    it can be used to overcome security filters. For example, since second
    order many times implies that the string is processed twice, such
    attacks can many time employ double encoding to overcome tests for
    forbidden characters.

    ~ Ofer

    Ofer Shezaf
    CTO, Breach Security
    Tel: +972.9.956.0036 ext.212
    Cell: +972.54.443.1119
    ofers@breach.com
    http://www.breach.com

    > -----Original Message-----
    > From: Burnett, Robert [mailto:burnettr@Fortrex.com]
    > Sent: Friday, January 07, 2005 5:38 PM
    > To: Peter Bair; pen-test@securityfocus.com
    > Subject: RE: SQL injection from within a table - is it possible?
    >
    > Peter,
    >
    > Building on what Kevin stated, there is a flaw in the scenario you
    > presented in your post. Suppose your username was "bob", and it was
    > stored in a table called "table", in a field called "name".
    >
    > The query:
    >
    > select name from table
    >
    > will NOT become
    >
    > select bob from table
    >
    > It will just be: select name from table. "bob" will be the value
    returned.
    >
    > Now, if you were querying for a specific username, you could do:
    select
    > name from table where name = 'bob', but that requires you to know
    > beforehand that you are looking for "bob".
    >
    > Going back to your initial question about a "stored" SQL Injection
    exploit,
    > I suppose that if an application was pulling a value from the database
    by
    > doing a SELECT query and then blindly injecting that retrieved value
    into
    > a subsequent query, then an exploit could be performed if that stored
    > value was some maliciously crafted SQL code.
    >
    > For example, if you somehow got the value ' OR 'a'='a into the name
    field,
    > and then the application retrieved that value, stored it in the
    variable
    > $username, and then executed the query "SELECT * from table2 WHERE
    > username='$username';", the resulting query is:
    >
    > SELECT * from table2 WHERE username='' OR 'a'='a';
    >
    > And we get all the records in the table returned to us.
    >
    > You get the idea.
    >
    > Thanks.
    >
    > Robert Burnett
    > Fortrex Technologies
    > 5303 Spectrum Drive
    > Frederick, MD 21703
    > Toll Free: 1-877-367-8739
    > Fax: 301-947-3539
    > E-Mail: burnettr@fortrex.com
    >
    >
    >
    > -----Original Message-----
    > From: Peter Bair [mailto:peterbair100@hotmail.com]
    > Sent: Thursday, January 06, 2005 8:00 PM
    > To: pen-test@securityfocus.com
    > Subject: SQL injection from within a table - is it possible?
    >
    >
    > Is it possible to store an SQL injection string into a MSSQL database
    > table, so when the database performs an action like through a stored
    proc,
    > the SQL injection attack takes place?
    >
    > Not through the normal means of SQL injection via a web base means,
    but if
    > you have the means of storing the data into the table directly.
    >
    > Example:
    > An application has a users name in a table. Is it possible to assign
    the
    > users name as the SQL injection string, something like
    > name from table; exec master.xp_cmdshell "ping me"; --
    >
    > so when the database is running a stored procedure with a select
    clause
    > like
    >
    > select name from table
    >
    > it really is becomes
    >
    > select name from table; exec master.xp_cmdshell "ping me" ;-- from
    table
    >
    >
    > Of course using the SQL query analyzer on the database table, all this
    > works ok.
    >
    > But when I insert the SQL injection string into the table, as the
    name,
    > and then query the table nothing happens.
    >
    > Is it possible or have I missed the point here?
    >
    > Thanks Peter.
    >
    ------------------------------------------------------------------------

    --
    > --------------------------
    > 
    > Confidentiality Notice
    > The content of this communication, along with any attachments, is
    covered
    > by federal and state law governing electronic communications and may
    > contain confidential and legally privileged information.  If the
    reader of
    > this message is not the intended recipient, you are hereby notified
    that
    > any dissemination, distribution, use or copying of the information
    > contained herein is strictly prohibited.  If you have received this
    > communication in error, please immediately contact us by telephone at
    > (301) 977-6966 or e-mail info@fortrex.com.  Thank you.
    

  • Next message: Abe Usher: "Using Google Desktop Search for remote system monitoring"

    Relevant Pages

    • Re: database server audit tools
      ... This thing was pretty limited last time I looked at it, and had no database audit capabilities. ... this is a nice SQL injection testing tool. ... >Audit your website security with Acunetix Web Vulnerability Scanner: ... Cross site scripting and other web attacks before hackers do! ...
      (Pen-Test)
    • Re: MS SQL, find list of tables
      ... database has it's own sysobjects table. ... > I'd like to use that in order to get login/passwd in the database. ... Up to 75% of cyber attacks are launched on shopping carts, forms, login pages, dynamic content etc. Firewalls, SSL and locked-down servers are futile against web application hacking. ... Check your website for vulnerabilities to SQL injection, Cross site scripting and other web attacks before hackers do! ...
      (Pen-Test)
    • [NT] Multiple Vulnerabilities in ASPRunner
      ... The following security advisory is sent to the securiteam mailing list, and can be found at the SecuriTeam web site: http://www.securiteam.com ... pages, users can search, sort, edit, delete and add data into a database. ... attacker to perform SQL Injection and XSS attacks as well as gather ... Every Page is vulnerable to SQL Injection attacks. ...
      (Securiteam)
    • RE: [PHP] SQL security
      ... >Doesn't MySQL automatically protect against attacks like SQL injection? ... No - I don't think any database could automatically protect against SQL ...
      (php.general)
    • Re: sql injection: url or form based?
      ... start putting your SQL injection magic in the input boxes to ... Hackers are concentrating their efforts on attacking applications ... Check your website for vulnerabilities to SQL injection, ... Cross site scripting and other web attacks before hackers do! ...
      (Pen-Test)