Nytro Posted July 18, 2013 Report Posted July 18, 2013 (edited) SQLi Atack defenseContentsChapter 1 What Is SQL Injection?. 1Introduction . 2Understanding How Web Applications Work. 2A Simple Application Architecture. 4A More Complex Architecture. 5Understanding SQL Injection. 6High-Profile Examples. 10Understanding How It Happens. 13Dynamic String Building . 13Incorrectly Handled Escape Characters. 14Incorrectly Handled Types . 15Incorrectly Handled Query Assembly. 17Incorrectly Handled Errors. 18Incorrectly Handled Multiple Submissions . 19Insecure Database Configuration. 21Summary. 24Solutions Fast Track. 24Frequently Asked Questions. 26Chapter 2 Testing for SQL Injection. 29Introduction . 30Finding SQL Injection. 30Testing by Inference. 31Identifying Data Entry. 31GET Requests . 31POST Requests . 32Other Injectable Data . 35Manipulating Parameters . 36Information Workf low. 39Database Errors . 40Commonly Displayed SQL Errors . 41Microsoft SQL Server Errors. 41MySQL Errors . 46Oracle Errors . 49ixx ContentsApplication Response. 51Generic Errors. 51HTTP Code Errors. 54Different Response Sizes . 55Blind Injection Detection. 56Confirming SQL Injection. 60Differentiating Numbers and Strings. 61Inline SQL Injection . 62Injecting Strings Inline. 62Injecting Numeric Values Inline. 65Terminating SQL Injection. 68Database Comment Syntax. 69Using Comments. 70Executing Multiple Statements. 74Time Delays. 79Automating SQL Injection Discovery. 80Tools for Automatically Finding SQL Injection . 81HP WebInspect . 81IBM Rational AppScan . 83HP Scrawlr. 85SQLiX . 87Paros Proxy. 88Summary. 91Solutions Fast Track. 91Frequently Asked Questions. 93Chapter 3 Reviewing Code for SQL Injection . 95Introduction . 96Reviewing Source Code for SQL Injection. 96Dangerous Coding Behaviors . 98Dangerous Functions . 105Following the Data. 109Following Data in PHP. 110Following Data in Java. 114Following Data in C#. 115Reviewing PL/SQL and T-SQL Code. 117Automated Source Code Review. 124Yet Another Source Code Analyzer (YASCA) . 125Pixy. 126AppCodeScan . 127Contents xiLAPSE. 127Security Compass Web Application Analysis Tool (SWAAT). 128Microsoft Source Code Analyzer for SQL Injection. 128Microsoft Code Analysis Tool .NET (CAT.NET). 129Commercial Source Code Review Tools. 129Ounce. 131Source Code Analysis. 131CodeSecure. 132Summary. 133Solutions Fast Track. 133Frequently Asked Questions. 135Chapter 4 Exploiting SQL Injection . 137Introduction . 138Understanding Common Exploit Techniques. 139Using Stacked Queries. 141Identifying the Database. 142Non-Blind Fingerprint. 142Banner Grabbing. 144Blind Fingerprint. 146Extracting Data through UNION Statements. 148Matching Columns. 149Matching Data Types . 151Using Conditional Statements. 156Approach 1: Time-based. 157Approach 2: Error-based. 159Approach 3: Content-based. 161Working with Strings. 161Extending the Attack . 163Using Errors for SQL Injection. 164Error Messages in Oracle . 167Enumerating the Database Schema. 170SQL Server . 171MySQL. 177Oracle. 180Escalating Privileges. 183SQL Server . 184Privilege Escalation on Unpatched Servers . 189Oracle. 190xii ContentsStealing the Password Hashes . 192SQL Server . 192MySQL. 194Oracle. 194Oracle Components. 196APEX. 196Oracle Internet Directory . 197Out-of-Band Communication . 198E-mail. 199Microsoft SQL Server . 199Oracle. 202HTTP/DNS. 203File System. 203SQL Server. 204MySQL. 207Oracle. 208Automating SQL Injection Exploitation. 208Sqlmap. 208Sqlmap Example . 209Bobcat. 211BSQL . 212Other Tools . 214Summary. 215Solutions Fast Track. 215Frequently Asked Questions. 218Chapter 5 Blind SQL Injection Exploitation. 219Introduction . 220Finding and Confirming Blind SQL Injection. 221Forcing Generic Errors. 221Injecting Queries with Side Effects. 222Spitting and Balancing . 222Common Blind SQL Injection Scenarios . 225Blind SQL Injection Techniques. 225Inference Techniques. 226Increasing the Complexity of Inference Techniques. 230Alternative Channel Techniques. 234Using Time-Based Techniques. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235Delaying Database Queries. 235MySQL Delays . 235Contents xiiiGeneric MySQL Binary Search Inference Exploits . 237Generic MySQL Bit-by-Bit Inference Exploits. 237SQL Server Delays. 238Generic SQL Server Binary Search Inference Exploits. 240Generic SQL Server Bit-by-Bit Inference Exploits . 240Oracle Delays . 240Time-Based Inference Considerations. 241Using Response-Based Techniques. 242MySQL Response Techniques. 242SQL Server Response Techniques. 244Oracle Response Techniques. 246Returning More Than One Bit of Information. 247Using Alternative Channels. 249Database Connections. 250DNS Exfiltration . 251E-mail Exfiltration. 255HTTP Exfiltration. 256Automating Blind SQL Injection Exploitation. 258Absinthe . 258BSQL Hacker . 260SQLBrute . 263Sqlninja. 264Squeeza. 265Summary. 267Solutions Fast Track. 267Frequently Asked Questions. 270Chapter 6 Exploiting the Operating System. 271Introduction . 272Accessing the File System. 273Reading Files. 273MySQL. 274Microsoft SQL Server . 280Oracle. 289Writing Files . 291MySQL. 292Microsoft SQL Server . 295Oracle. 300Executing Operating System Commands. 301Direct Execution . 301xiv ContentsOracle. 301DBMS_SCHEDULER. 302PL/SQL Native. 302Other Possibilities. 303Alter System Set Events. 303PL/SQL Native 9i. 303Buffer Overflows. 304Custom Application Code. 304MySQL. 304Microsoft SQL Server . 305Consolidating Access . 309Summary. 312Solutions Fast Track. 312Frequently Asked Questions. 314Endnotes. 315Chapter 7 Advanced Topics . 317Introduction . 318Evading Input Filters . 318Using Case Variation. 319Using SQL Comments. 319Using URL Encoding . 320Using Dynamic Query Execution. 322Using Null Bytes. 323Nesting Stripped Expressions . 324Exploiting Truncation. 324Bypassing Custom Filters . 326Using Non-Standard Entry Points. 327Exploiting Second-Order SQL Injection. 329Finding Second-Order Vulnerabilities. 332Using Hybrid Attacks. 335Leveraging Captured Data. 335Creating Cross-Site Scripting . 335Running Operating System Commands on Oracle . 336Exploiting Authenticated Vulnerabilities. 337Summary. 338Solutions Fast Track. 338Frequently Asked Questions. 340Contents xvChapter 8 Code-Level Defenses. 341Introduction . 342Using Parameterized Statements. 342Parameterized Statements in Java. 344Parameterized Statements in .NET (C#). 345Parameterized Statements in PHP. 347Parameterized Statements in PL/SQL. 348Validating Input. 349Whitelisting. 349Blacklisting. 351Validating Input in Java. 353Validating Input in .NET. 354Validating Input in PHP. 354Encoding Output. 355Encoding to the Database. 355Encoding for Oracle . 356Oracle dbms_assert. 357Encoding for Microsoft SQL Server. 359Encoding for MySQL. 360Canonicalization . 362Canonicalization Approaches. 363Working with Unicode . 364Designing to Avoid the Dangers of SQL Injection. 365Using Stored Procedures. 366Using Abstraction Layers. 367Handling Sensitive Data. 368Avoiding Obvious Object Names. 369Setting Up Database Honeypots . 370Additional Secure Development Resources. 371Summary. 373Solutions Fast Track. 373Frequently Asked Questions. 375Chapter 9 Platform-Level Defenses. 377Introduction . 378Using Runtime Protection. 378Web Application Firewalls. 379Using ModSecurity. 380Configurable Rule Set. 380Request Coverage. 383xvi ContentsRequest Normalization. 383Response Analysis. 384Intrusion Detection Capabilities. 385Intercepting Filters. 386Web Server Filters. 386Application Filters. 389Implementing the Filter Pattern in Scripted Languages . 390Filtering Web Service Messages. 391Non-Editable versus Editable Input Protection. 391URL/Page-Level Strategies. 392Page Overriding . 392URL Rewriting . 393Resource Proxying/Wrapping . 393Aspect-Oriented Programming (AOP) . 393Application Intrusion Detection Systems (IDSs). 394Database Firewall. 394Securing the Database . 395Locking Down the Application Data. 395Use the Least-Privileged Database Login. 395Revoke PUBLIC Permissions. 396Use Stored Procedures. 396Use Strong Cryptography to Protect Stored Sensitive Data . 397Maintaining an Audit Trail. 398Oracle Error Triggers. 398Locking Down the Database Server. 400Additional Lockdown of System Objects. . . . . . . . . . . . . . . . . . . . . . . . 400Restrict Ad Hoc Querying. 401Strengthen Controls Surrounding Authentication . 401Run in the Context of the Least-PrivilegedOperating System Account . 401Ensure That the Database Server Software Is Patched. 402Additional Deployment Considerations. 403Minimize Unnecessary Information Leakage. 403Suppress Error Messages. 403Use an Empty Default Web Site. 406Use Dummy Host Names for Reverse DNS Lookups. 406Use Wildcard SSL Certificates . 407Limit Discovery via Search Engine Hacking. 407Disable Web Services Description Language(WSDL) Information. 408Contents xviiIncrease the Verbosity of Web Server Logs . 409Deploy the Web and Database Servers on Separate Hosts. 409Configure Network Access Control. 409Summary. 410Solutions Fast Track. 410Frequently Asked Questions. 412Chapter 10 References. 415Introduction . 416Structured Query Language (SQL) Primer. 416SQL Queries. 416SELECT Statement. 417UNION Operator. 417INSERT Statement. 418UPDATE Statement. 418DELETE Statement. 418DROP Statement . 420CREATE TABLE Statement . 420ALTER TABLE Statement. 420GROUP BY Statement. 421ORDER BY Clause. 421Limiting the Result Set . 421SQL Injection Quick Reference. 422Identifying the Database Platform. 422Identifying the Database Platform via Time Delay Inference . 423Identifying the Database Platform via SQL Dialect Inference. 423Combining Multiple Rows into a Single Row. 424Microsoft SQL Server Cheat Sheet. 425Enumerating Database ConfigurationInformation and Schema. 425Blind SQL Injection Functions: Microsoft SQL Server . 427Microsoft SQL Server Privilege Escalation . 427OPENROWSET Reauthentication Attack. 428Attacking the Database Server: Microsoft SQL Server. 429System Command Execution via xp_cmdshell . 429xp_cmdshell Alternative. 430Cracking Database Passwords. 430Microsoft SQL Server 2005 Hashes . 431File Read/Write. 431xviii ContentsMySQL Cheat Sheet . 431Enumerating Database Configuration Informationand Schema . 431Blind SQL Injection Functions: MySQL. 432Attacking the Database Server: MySQL . 433System Command Execution. 433Cracking Database Passwords. 434Attacking the Database Directly. 434File Read/Write. 434Oracle Cheat Sheet . 435Enumerating Database Configuration Informationand Schema . 435Blind SQL Injection Functions: Oracle. 436Attacking the Database Server: Oracle. 437Command Execution . 437Reading Local Files. 437Reading Local Files (PL/SQL Injection Only) . 438Writing Local Files (PL/SQL Injection Only). 439Cracking Database Passwords. 440Bypassing Input Validation Filters . 440Quote Filters. 440HTTP Encoding . 442Troubleshooting SQL Injection Attacks. 443SQL Injection on Other Platforms. 446PostgreSQL Cheat Sheet. 446Enumerating Database Configuration Informationand Schema . 447Blind SQL Injection Functions: PostgreSQL. 448Attacking the Database Server: PostgreSQL. 448System Command Execution. 448Local File Access. 449Cracking Database Passwords. 449DB2 Cheat Sheet. 449Enumerating Database Configuration Informationand Schema . 449Blind SQL Injection Functions: DB2. 450Informix Cheat Sheet. 451Enumerating Database Configuration Informationand Schema . 451Blind SQL Injection Functions: Informix. 452Contents xixIngres Cheat Sheet. 452Enumerating Database Configuration Informationand Schema . 452Blind SQL Injection Functions: Ingres . 453Microsoft Access. 453Resources . 453SQL Injection White Papers. 453SQL Injection Cheat Sheets. 454SQL Injection Exploit Tools. 454Password Cracking Tools. 455Solutions Fast Track. 456Index. 459Download:http://rogunix.com/docs/WebSecurity/SQLi%20Atack%20defense.pdf Edited July 18, 2013 by Nytro Quote