Page 90 - Hands-On Bug Hunting for Penetration Testers
P. 90

SQL, Code Injection, and Scanners                                           Chapter 5

            Now when we use BSBDIOJ later in the chapter, we can invoke it directly, as opposed to
            having to type the full path each time.



            SQLi and Other Code Injection Attacks `

            Accepting Unvalidated Data

            SQLi is a rather old vulnerability. It's been two decades since the first public disclosures of
            the attack started appearing in 1998, detailed in publications such as Phrack, but it persists,
            often in critically damaging ways. SQLi vulnerabilities can allow an attacker to read
            sensitive data, update database information, and sometimes even issue OS commands. As
            OWASP succinctly states, the "flaw depends on the fact that SQL makes no real distinction
            between the control and data planes." This means that SQL commands can modify both the
            data they contain and parts of the underlying system running the software, so when the
            access prerequisites for a feature such as sqlmap's   PT TIFMM flag are present, a SQLi
            flaw can be used to issue system commands.

            Many tools and design patterns exist for preventing SQLi. But the pressure of getting new
            applications to market and iterating quickly on features means that SQLi-vulnerable inputs
            don't get audited, and the procedures to prevent the bug are never put into place.

            As a vulnerability endemic to one of the most common languages for database
            development and as an easily detected, easily exploited, and richly rewarded bug, SQLi is a
            worthy subject for study.


            A Simple SQLi Example

            Let's look at how SQLi breaks down into actual code.

            Take a look at the following query, where the value of  JE would be input supplied by the
            user:
                SELECT title, author FROM posts WHERE id=$id













                                                    [ 75 ]
   85   86   87   88   89   90   91   92   93   94   95