Upgrade to Pro — share decks privately, control downloads, hide ads and more …

"Web Application Firewalls: Advanced analysis o...

"Web Application Firewalls: Advanced analysis of detection logic mechanisms", Vladimir Ivanov

OWASP Moscow

December 04, 2017
Tweet

More Decks by OWASP Moscow

Other Decks in Technology

Transcript

  1. OWASP Meetup Russia 12 Oct 2016 Web Application Firewalls: Advanced

    analysis of detection logic mechanisms Vladimir Ivanov @httpsonly
  2. OWASP Meetup Russia 12 Oct 2016 MSc Information Security (merit)

    - RHUL (UK) Web App penetration tester at Positive Technologies (ptsecurity.com) Blog (bugbounty writeups): https://httpsonly.blogspot.com /whoam/i
  3. OWASP Meetup Russia 12 Oct 2016 1. Introduction 2. Detection

    logic in WAFs 3. METHOD I: Syntax bypass 4. METHOD II: Unexpected by primary logic bypass 5. Takeaways Agenda
  4. OWASP Meetup Russia 12 Oct 2016 The Standoff: 1. Attackers.

    Mix of various techniques, rarely understand root cause. 2. Defenders. WAFs protect against automative testing, every vendor implements additional functionality. Result: No careful whitebox analysis Motivation
  5. OWASP Meetup Russia 12 Oct 2016 WAF workflow example Stage

    1: Parse HTTP(s) packet from client Stage 2: Chose rule set depending on type of incoming parameter Stage 3: Normalise data Stage 4: Apply detection logic Stage 5: Make detection decision
  6. OWASP Meetup Russia 12 Oct 2016 WAF workflow: Detection logic

    OWASP CRS 2 OWASP CRS 3dev OWASP CRS 3rc PHPIDS Comodo rules QuickDefenceWaf Vultureproject Waf.red ShadowD etc… Tokenizer libinjection Reputation repsheet Score Builder NAXSI Anomaly detection HMM
  7. OWASP Meetup Russia 12 Oct 2016 Regular expression… …is a

    sequence of characters that define a search pattern (с) Wikipedia (?i)(<script[^>]*>.*?) 1 2 3
  8. OWASP Meetup Russia 12 Oct 2016 Sources 500+ regular expressions:

    • OWASP CRS2 (modsecurity) • OWASP CRS3dev (modsecurity) • OWASP CRS3rc1 (modsecurity) • PHPIDS • Comodo WAF • QuickDefense 317 321 94 XSS SQL Other: LFI/RFI, PHP, OS exec, etc
  9. OWASP Meetup Russia 12 Oct 2016 300+ potential bypasses Most

    “vulnerable”: PHPIDS (E = 1,15) Less “vulnerable”: Comodo WAF (E = 0,32) Most “exploitable”: OWASP CRS3-rc (E = 0,89) E = Potential bypasses / Total rules Results
  10. OWASP Meetup Russia 12 Oct 2016 Not only WAFs use

    Reg Exp Detection Logic: • XSS Auditors • Backend parsers • Front-end analyzers Developers, security auditors, bughunters Target audience
  11. OWASP Meetup Russia 12 Oct 2016 Of regular expressions Enumerate

    all possible and invent all impossible mistakes METHOD I: Syntax bypass
  12. OWASP Meetup Russia 12 Oct 2016 What’s wrong with regexp?

    Level: Easy (?i: ) ^ $ {1,3} 1. atTacKpAyloAd 2. attackpayload 3. attackpayloadattackpayloadattackpayloadatt… ! !
  13. OWASP Meetup Russia 12 Oct 2016 What’s wrong with regexp?

    Level: Medium ReDoS Repetitions: + * Blacklisting wildcards in a set 1. 2. 3.
  14. OWASP Meetup Russia 12 Oct 2016 What’s wrong with regexp?

    Level: Advanced Non-standard diapasons 1. POSIX character classes 2. Operators 3. Backlinks, wildcards 4.
  15. OWASP Meetup Russia 12 Oct 2016 2 parts: theoretical "whitepaper"

    and practical "code". Hack regular expressions with regular expressions! + SAST: Assists with whitebox analysis of regular expressions in source code of your projects + Low false positives: Focused on finding high severity security issues + Opensource on Github! - Does not dynamically analyze lexis (yet). Regular expressions: Security cheatsheet
  16. OWASP Meetup Russia 12 Oct 2016 JavaScript checker in real-life

    web app We can make ReDoS on client-side by supplying specially crafted email as input. But what if backend also has same regex for checking?
  17. OWASP Meetup Russia 12 Oct 2016 XSS Auditor: EdgeHTML.dll Regexp

    bypass. Result: alert! Thx @ahack_ru for payload
  18. OWASP Meetup Russia 12 Oct 2016 What’s next? 1. Identify

    WAF vendor and version using “signature” vulnerabilities. 2. Reveal and apply bypasses depending on a situation 3. Craft string which bypasses all regexp-based rules.
  19. OWASP Meetup Russia 12 Oct 2016 ModSecurity 3 SQLi Bypass

    Basic SQLi is given: All SQLi Regexp bypass: ​ -1'OR#foo id=IF#foo (ASCII#foo ((SELECT-version()/1.))<250,1,0) #
  20. OWASP Meetup Russia 12 Oct 2016 What’s next? 1. Identify

    WAF vendor and version using “signature” vulnerabilities. 2. Reveal and apply bypasses depending on a situation 3. Craft string which bypasses all regexp-based rules. 4. … 5. Dig deeper!
  21. OWASP Meetup Russia 12 Oct 2016 https://github.com/attackercan/ CPP-SQL-FUZZER • Receive

    SQL query as input • Fuzz it (mysql.h, SQLAPI.h, ODBC?) • Record every query except syntax errors • Parse output! • Current MySQL.h perfomance: 21M symbols in ~10 mins; speed = 35k queries per second (QPS). • Up to 1.6M QPS!
  22. OWASP Meetup Russia 12 Oct 2016 SQL fuzzer: Newest results

    “Clever fuzzing” + scalable DEMO
  23. OWASP Meetup Russia 12 Oct 2016 • OWASP: Regexp security

    cheatsheet + SAST •SQL Fuzzer: Classified tables https://www.owasp.org/index.php/Regular_Expressi on_Security_Cheatsheet Contribution
  24. OWASP Meetup Russia 12 Oct 2016 1. Help OWASP! Update

    Regular Expression Security Cheatsheet 2. Create regular expression Dynamic analysis tool Call for help
  25. OWASP Meetup Russia 12 Oct 2016 Arseniy Sharoglazov <[email protected]> (Contribution

    to Regex Security Cheatsheet) Dmitry Serebryannikov @dsrbr (Contribution to SQL fuzzer) Andrey Evlanin @xpathmaster All @ptsecurity team ;) Thank you