Chapter
1Web
Application
(In)security
1The Evolution
of
WebApplications
2Common Web
Application
Functions
4BenefitsofWeb
Applications
5Web
Application Security
6
"ThisSite IsSecure" 7
TheCore
Security
Problem: Users CanSubmit
Arbitrary
Input
9Key
ProblemFactors 10The New
Security
Perimeter 12TheFuture ofWeb
Application
Security
14Summary
15Chapter
2 CoreDefense Mechanisms
17Handling
User Access 18Authentication
18Session
Management
19AccessControl
20
Handling
UserInput
21Varietiesof
Input
21Approaches
toInput Handling
23Boundary
Validation 25Multistep
ValidationandCanonicalization 28Handling
Attackers 30Handling
Errors 30Maintaining
AuditLogs
31Alerting
Administrators
33Managing
theApplication
35Summary
36Questions
36Chapter
3Web
Application Technologies
39The HTTPProtocol 39 HTTP
Requests
40 HTTPResponses
41 HTTP Methods 42 URLs 44 REST 44 HTTPHeaders 45 Cookies 47 Status Codes 48 HTTPS 49 HTTP Proxies 49 HTTP Authentication 50 WebFunctionality
51 Server-SideFunctionality
51 Client-SideFunctionality
57State andSessions 66
Encoding
Schemes 66 URLEncoding
67 UnicodeEncoding
67 HTMLEncoding
68 Base64Encoding
69 HexEncoding
69Remoting
and SerializationFrameworks 70
Next
Steps
70Questions
71Chapter
4Mapping
theApplication
73Enumerating
Content andFunctionality
74Web
Spidering
74User-Directed
Spidering
77Discovering
Hidden Content 80Application
Pages
VersusFunctional Paths 93
Discovering
HiddenParameters 96Analyzing
theApplication
97Identifying
Entry
Points for UserInput
98Identifying
Server-SideTechnologies
101Identifying
Server-SideFunctionality
107Mapping
the Attack Surface 111Summary
114Chapters
Bypassing
Client-Side Controls
117Transmitting
Data Via the Client 118HiddenFormFields 118
HTTPCookies 121
URL Parameters 121
The Referer Header 122
Opaque
Data 123The ASP.NET ViewState 124
Capturing
UserData: HTMLForms 127Length
Limits 128Script-Based
Validation 129Disabled Elements 131
Capturing
User Data: Browser Extensions 133CommonBrowser Extension
Technologies
134Approaches
toBrowser Extensions 135Intercepting
Trafficfrom Browser Extensions 135Decompiling
Browser Extensions 139Attaching
aDebugger
151Native Client
Components
153Handling
Client-SideDataSecurely
154Transmitting
Data Via the Client 154Validating
Client-Generated Data 155Logging
andAlerting
156Summary
156Questions
157Chapter
6Attacking
Authentication
159Authentication
Technologies
160Design
Flaws in AuthenticationMechanisms
161Bad Passwords 161
Brute-Forcible
Login
162Verbose Failure
Messages
166Vulnerable Transmission of Credentials 169
Password
Change
Functionality
171Forgotten
PasswordFunctionality
173"Remember Me"
Functionality
176User
Impersonation Functionality
178Incomplete
Validation of Credentials 180Nonunique
Usernames 181Predictable Usernames 182
Predictable Initial Passwords 183
InsecureDistributionofCredentials 184
Implementation
Flaws in Authentication 185Fail-Open
Login
Mechanisms 185Defectsin
Multistage Login
Mechanisms 186Securing
Authentication 191Use
Strong
Credentials 192Handle Credentials
Secretively
192Validate Credentials
Properly
193PreventInformation
Leakage
195Prevent Brute-Force Attacks 196
Prevent Misuse of the Password
Change
Function 199 Prevent Misuse of theAccountRecovery
Function 199Log,
Monitor,andNotify
201Summary
201Questions
202Chapter
7Attacking
Session
Management
205The Need for State 206
Alternativesto Sessions 208
WeaknessesinToken Generation 210
Meaningful
Tokens 210Predictable Tokens 213
Encrypted
Tokens 223WeaknessesinSession Token
Handling
233Disclosure ofTokensonthe Network 234
Disclosure ofTokensin
Logs
237Vulnerable
Mapping
of TokenstoSessions 240Vulnerable SessionTermination 241
Client
Exposure
to TokenHijacking
243Liberal Cookie
Scope
244Securing
SessionManagement
248Generate
Strong
Tokens 248Protect Tokens
Throughout
TheirLifeCycle
250Log,
Monitor,and Alert 253Summary
254Questions
255Chapter
8Attacking
AccessControls
257CommonVulnerabilities 258
Completely Unprotected Functionality
259Identifier-BasedFunctions 261
Multistage
Functions 262StaticFiles 263
Platform
Misconfiguration
264Insecure Access ControlMethods 265
Attacking
AccessControls 266Testing
with DifferentUserAccounts 267Testing Multistage
Processes 271Testing
withLimitedAccess 273Testing
DirectAccesstoMethods 276Testing
RestrictionsonHTTPMethods 278Securing
Access Controls 278A
Multilayered Privilege
Model 280Summary
284Questions
284Chapter
9Attacking
Data Stores 287Injecting
intoInterpreted
Contexts 288Bypassing
aLogin
288Injecting
intoSQL
291Exploiting
aBasicVulnerability
292Injecting
into DifferentStatementTypes
294Finding
SQLInjection
Bugs
298Fingerprinting
theDatabase 303TheUNION
Operator
304Extracting
Useful Data 308Extracting
Data with UNION 308Bypassing
Filters 311Second-OrderSQL
Injection
313Advanced
Exploitation
314Beyond
SQL
Injection: Escalating
theDatabase Attack 325
Using
SQL
Exploitation
Tools 328SQL
Syntax
and ErrorReference 332Preventing
SQLInjection
338Injecting
intoNoSQL
342Injecting
intoMongoDB
343Injecting
intoXPath 344Subverting Application
Logic
345Informed XPath
Injection
346Blind XPath
Injection
347Finding
XPathInjection
Flaws 348Preventing
XPathInjection
349Injecting
into LDAP 349Exploiting
LDAPInjection
351Finding
LDAPInjection
Flaws 353Preventing
LDAPInjection
354Summary
354Questions
354Chapter
10Attacking
Back-EndComponents
357Injecting
OS Commands 358Example
1:Injecting
Via Perl 358Example
2:Injecting
Via ASP 360Injecting Through Dynamic
Execution 362Finding
OS CommandInjection
Flaws 363Preventing
OS CommandInjection
367Preventing Script Injection
Vulnerabilities 368Manipulating
File Paths 368PathTraversal Vulnerabilities 368
File InclusionVulnerabilities 381
Injecting
intoXMLInterpreters
383Injecting
XML External Entities 384Injecting
into SOAP Services 386Finding
andExploiting
SOAPInjection
389Preventing
SOAPInjection
390Injecting
into Back-end HTTPRequests
390Server-sideHTTPRedirection 390
HTTPParameter
Injection
393Injecting
intoMail Services 397E-mailHeader
Manipulation
398SMTPCommand
Injection
399Finding
SMTPInjection
Flaws 400Preventing
SMTPInjection
402Summary
402Questions
403Chapter
11Attacking Application
Logic
405The Natureof
Logic
Flaws 406Real-World
Logic
Flaws 406Example
1:Asking
theOracle 407Example
2:Fooling
aPasswordChange
Function 409Example
3:Proceeding
to Checkout 410Example
4:Rolling
YourOwn Insurance 412Example
5:Breaking
theBank 414Example
6:Beating
aBusiness Limit 416Example
7:Cheating
onBulkDiscounts 418Example
8:Escaping
fromEscaping
419Example
9:Invalidating Input
Validation 420Example
10:Abusing
aSearchFunction 422Example
11:Snarfing Debug
Messages
424Example
12:Racing Against
theLogin
426Avoiding
Logic
Flaws 428Summary
429Questions
430Chapter
12Attacking
Users: Cross-SiteScripting
431Varieties of XSS 433 ReflectedXSS Vulnerabilities 434 StoredXSS Vulnerabilities 438 DOM-Based XSSVulnerabilities 440 XSS AttacksinAction 442 Real-World XSSAttacks 442
Payloads
for XSS Attacks 443Delivery
Mechanisms forXSS Attacks 447Finding
andExploiting
XSS Vulnerabilities 451Finding
andExploiting
Reflected XSSVulnerabilities 452Finding
andExploiting
StoredXSSVulnerabilities 481Finding
andExploiting
DOM-BasedXSS Vulnerabilities 487Preventing
XSS Attacks 492Preventing
Reflected andStored XSS 492Preventing
DOM-Based XSS 496Summary
498Questions
498Chapter
13Attacking
Users:OtherTechniques
501Inducing
User Actions 501Request
Forgery
502UI Redress 511
Capturing
DataCross-Domain 515Capturing
Databy Injecting
HTML 516Capturing
Databy
Injecting
CSS 517JavaScript Hijacking
519The
Same-Origin
Policy
Revisited 524The
Same-Origin
Policy
and Browser Extensions 525The
Same-Origin
Policy
and HTML5 528Crossing
Domains withProxy
ServiceApplications
529Other Client-Side
Injection
Attacks 531HTTP Header
Injection
531Cookie
Injection
536Open
RedirectionVulnerabilities 540Client-Side
SQL
Injection
547Client-SideHTTPParameter Pollution 548
Local
Privacy
Attacks 550PersistentCookies 550
Cached WebContent 551
Browsing History
552Autocomplete
552Flash LocalShared
Objects
553Silverlight
IsolatedStorage
553Internet
Explorer
userData 554HTML5 Local
Storage
Mechanisms 554Preventing
LocalPrivacy
Attacks 554Attacking
ActiveX Controls 555Finding
ActiveX Vulnerabilities 556Preventing
ActiveX Vulnerabilities 558Attacking
the Browser 559Logging Keystrokes
560Enumerating
Currently
UsedApplications
560Port
Scanning
561Attacking
Other Network Hosts 561Exploiting
Non-HTTPServices 562Exploiting
BrowserBugs
563DNSRebinding
563Browser
Exploitation
Frameworks 564Man-in-the-Middle Attacks 566
Summary
568Questions
568Chapter
14Automating
Customized Attacks
571Uses for CustomizedAutomation 572
Enumerating
Valid Identifiers 573TheBasic
Approach
574Detecting
Hits 574Scripting
the Attack 576JAttack
577Harvesting
Useful Data 583Fuzzing
for Common Vulnerabilities 586Putting
ItAllTogether:
Burp
Intruder 590BarrierstoAutomation 602
Session-Handling
Mechanisms 602CAPTCHA Controls 610
Summary
613Questions
613Chapter
15Exploiting
Information
Disclosure 615Exploiting
ErrorMessages
615Script
ErrorMessages
616Stack Traces 617
Informative
Debug Messages
618Server and Database
Messages
619Using
Public Information 623Engineering
Informative ErrorMessages
624Gathering
Published Information 625Using
Inference
626Preventing
InformationLeakage
627UseGeneric Error
Messages
628Protect Sensitive Information 628
MinimizeClient-Side Information
Leakage
629Summary
629Questions
630Chapter
16Attacking
NativeCompiled
Applications
633Buffer Overflow Vulnerabilities 634
Stack Overflows 634
"Off-by-One"
Vulnerabilities 636Detecting
Buffer Overflow Vulnerabilities 639Integer
Vulnerabilities 640Integer
Overflows 640Signedness
Errors 641Detecting Integer
Vulnerabilities 642Format
String
Vulnerabilities 643Detecting
FormatString
Vulnerabilities 644Summary
645Questions
645Chapter
17Attacking Application
Architecture 647Tiered Architectures 647
Attacking
Tiered Architectures 648Securing
TieredArchitectures 654Shared
Hosting
andApplication
Service Providers 656Virtual
Hosting
657Shared
Application
Services 657Attacking
SharedEnvironments 658Securing
Shared Environments 665Summary
667Questions
667Chapter
18Attacking
theApplication
Server 669VulnerableServer
Configuration
670Default Credentials 670
Default Content 671
Directory Listings
677WebDAV Methods 679
The
Application
Server asaProxy
682Misconfigured
VirtualHosting
683Securing
WebServerConfiguration
684Vulnerable Server Software 684
Application
Framework Flaws 685Memory Management
Vulnerabilities 687Encoding
and Canonicalization 689Finding
Web Server Flaws 694Securing
Web Server Software 695Web
Application
Firewalls 697Summary
699Questions
699Chapter
19Finding
Vulnerabilities
in Source Code 701Approaches
toCode Review 702Black-Box Versus White-Box
Testing
702Code Review
Methodology
703Signatures
of Common Vulnerabilities 704SQL
Injection
705PathTraversal 706
Arbitrary
Redirection 707OSCommand
Injection
708Backdoor Passwords 708
NativeSoftware
Bugs
709Source CodeComments 710
The
Java
Platform 711Identifying User-Supplied
Data 711Session Interaction 712
Potentially
Dangerous
APIs 713Configuring
theJava
Environment 716ASP.NET 718
Identifying User-Supplied
Data 718Session Interaction 719
Potentially Dangerous
APIs 720Configuring
theASP.NETEnvironment 723PHP 724
Identifying User-Supplied
Data 724SessionInteraction 727
Potentially Dangerous
APIs 727Configuring
the PHP Environment 732Perl 735
Identifying User-Supplied
Data 735Session Interaction 736
Potentially Dangerous
APIs 736Configuring
the Perl Environment 739JavaScript
740DatabaseCode
Components
741SQL
Injection
741Calls to
Dangerous
Functions 742Tools for Code
Browsing
743Summary
744Questions
744Chapter
20 AWebApplication
Hacker's Toolkit
747Web Browsers 748
Internet
Explorer
748Firefox 749
Chrome 750
Integrated Testing
Suites 751Howthe Tools Work 751
Testing
Work Flow 769Alternativestothe
Intercepting Proxy
771Standalone
Vulnerability
Scanners
773VulnerabilitiesDetected
by
Scanners 774Technical
Challenges
Facedby
Scanners 778Current Products 781
Using
aVulnerability
Scanner 783Other Tools 785
Wikto/Nikto
785Firebug
785Hydra
785 CustomScripts
786Summary
789Chapter
21 AWebApplication
Hacker'sMethodology
791General Guidelines 793
1
Map
theApplication's
Content 7951.1
Explore
VisibleContent 7951.2 Consult Public Resources 796
1.3 Discover Hidden Content 796
1.4 DiscoverDefault Content 797
1.5 Enumerate
Identifier-Specified
Functions 7971.6 Test for
Debug
Parameters 7982
Analyze
theApplication
7982.1
Identify Functionality
7982.2
Identify
DataEntry
Points 7992.3
Identify
theTechnologies
Used 7992.4
Map
the Attack Surface 8003 Test Client-Side Controls 800
3.1 Test Transmission of Data Via the Client 801
3.2 Test Client-Side Controls Over User
Input
801 3.3 Test Browser ExtensionComponents
8024 Test the Authentication Mechanism 805
4.1 Understand the Mechanism 805
4.2 TestPassword
Quality
8064.3 Test for Username Enumeration 806
4.4 Test ResiliencetoPassword
Guessing
807 4.5 TestAny
AccountRecovery
Function 8074.6 Test
Any
Remember Me Function 8084.7 Test
Any Impersonation
Function 8084.8 TestUsername
Uniqueness
8094.9 Test
Predictability
ofAutogenerated
Credentials 809 4.10 Check for UnsafeTransmission of Credentials 810 4.11 Check for UnsafeDistribution of Credentials 8104.12 Testfor Insecure
Storage
8114.13 Testfor
Logic
Flaws 8114.14
Exploit
Any
VulnerabilitiestoGainUnauthorized Access 813 5 TesttheSessionManagement
Mechanism 8145.1 Understand the Mechanism 814
5.2 Test Tokens for
Meaning
8155.4 Checkfor InsecureTransmissionofTokens 817 5.5 Check for DisclosureofTokens in
Logs
817 5.6 CheckMapping
of TokenstoSessions 8185.7 Test Session Termination 818
5.8 Check for Session Fixation 819
5.9 Check for CSRF 820
5.10 Check Cookie
Scope
8206 Test AccessControls 821
6.1 Understandthe Access Control
Requirements
8216.2 Testwith
Multiple
Accounts 8226.3 Test with Limited Access 822
6.4 TestforInsecure AccessControl Methods 823 7 Test for
Input-Based
Vulnerabilities 8247.1 FuzzAll
Request
Parameters 8247.2 Test forSQL
Injection
8277.3 Test for XSS and Other
Response Injection
8297.4 Test forOSCommand
Injection
8327.5 Test for Path Traversal 833
7.6 Test for
Script Injection
8357.7 Test forFileInclusion 835
8 Testfor
Function-Specific
Input
Vulnerabilities 8368.1 Test forSMTP
Injection
8368.2 TestforNative Software Vulnerabilities 837
8.3 Test for SOAP
Injection
8398.4 Testfor LDAP
Injection
8398.5 Testfor XPath
Injection
8408.6 Test for Back-End
Request Injection
8418.7 Test for XXE
Injection
8419 Testfor
Logic
Flaws 8429.1
Identify
theKey
AttackSurface 8429.2 Test
Multistage
Processes 8429.3 Test
Handling
ofIncomplete
Input
8439.4 TestTrust Boundaries 844
9.5 Test Transaction
Logic
84410 Test for Shared
Hosting
Vulnerabilities 845 10.1 TestSegregation
in Shared Infrastructures 845 10.2 TestSegregation
Between ASP-HostedApplications
845 11 Test forApplication
ServerVulnerabilities 84611.1 Test for Default Credentials 846
11.2 Test for DefaultContent 847
11.3 Test for
Dangerous
HTTP Methods 84711.4 Test for
Proxy Functionality
84711.5 Test for Virtual
Hosting Misconfiguration
847 11.6 Testfor Web Server SoftwareBugs
848 11.7 TestforWebApplication
Firewalling
84812 Miscellaneous Checks 849
12.1 Checkfor DOM-Based Attacks 849
12.2 CheckforLocal
Privacy
Vulnerabilities 85012.3 Check forWeak SSL
Ciphers
85112.4 Check
Same-Origin Policy
Configuration
85113 Follow