SlideShare a Scribd company logo
WFUZZ !
for Penetration Testers!
Christian Martorella & Xavier Mendez!
SOURCE Conference 2011!
Barcelona!
!
!
Who we are?

•    Security Consultants at Verizon Business Threat
     and Vulnerability Team EMEA
•    Members of Edge-security.com
What is this presentation
about?

WFUZZ: a Web Application brute forcer / fuzzer
And how this tool can be used in your
Penetration test engagements
What is WFUZZ?

It ́s a web application brute forcer, that allows you to perform
complex brute force attacks in different web application
parts as: parameters, authentication, forms, directories/files,
headers files, etc. 
It has complete set of features, payloads and encodings.
WFUZZ

•    Started a few years ago and have been improving until
     now (and hopefully will continue improving)
•    Has been presented at Blackhat Arsenal US 2011
•    It’s included in the TOP 125 Security tools by Insecure.org
Key features
•    Multiple injection points
•    Advance Payload management (Iterators)
•    Multithreading
•    Encodings
•    Result filtering
•    Proxy and SOCKS support (multiple proxies)
New features

•    Added HEAD method scanning 
•    Fuzzing in HTTP methods
•    Added follow HTTP redirects option
New features
•    Plugin framework, allowing to execute actions on response
     contents, or when a condition are met
•    Multiple filtering (show, hide, filter expression, regex)
•    Attack pause/resume
•    Delay between requests
Extensibility
Payloads, encoders , iterators, plugins and printers.
Payload
   
 Encoders
     
                                                         Printer
                                                            

                 Iterator
       FUZZ Engine
                                                         Printer
                                                            

Payload
                              Plugin
   
                                    
Plugin
                                           
 Encoders
Payloads
A payload is what generates the list of
requests to send in the session.
- file: reads from a file

- stdin: reads from the stdin (cwel)

- list: define a list of objects (1-2-3-4-5)

- hexrand: define a hexa random list (

- range: define a numeric range (1-30)

- names: creates potential user names combinations (john.doe,j.doe,etc)

- hexrange: define a random hexa range

- overflow:
Encoders
Converts information from one format to another
    - urlencode
                    - binary_ascii
               word
    - double_urlencode
             - double_nibble_hexa
          
    - first_nibble_hexa
             - md5
    - html_encoder
                 - none
    - uri_hexadecimal
              - sha1
    - base64
                       - utf8_binary
    - mssql_char
                   - html_encoder_hexa
              MD5
    - uri_double_hexadecimal
       - uri_unicode
    - mysql_char
                   - oracle_char
    - utf8
                         - random_uppercase
    - second_nibble_hexa
           - html_encoder_decimal

                                
                             c47d187067c6
                                                              cf953245f128b
                                                                 5fde62a
Base64 encoder
•    Encoders.py
Iterators
 An iterator allows to process every element
of a container while isolating from the
internal structure of the container.
An Iterator could be created from
combining iterables:
         A1 A2 A3 B1 B2 B3 C1 …
A B C
  
            Product
                       

               Zip
                      A1 B1 C1
                                             
1 2 3
  
               Chain
                                         A B C 1 2 3
Putting it all together
wfuzz.py -z range,0-2,md5 –z list,a-b-c -m product –o
      magictree http://www.myweb.com/FUZZ 


            - Payload: range
            - Encoder: md5
            - Printer: magictree

            - Iterator: product
Need for speed


      60% faster

 Up to 900 request /second
Wfuzz para Penetration Testers
A brute force attack is a method to determine an
 unknown value by using an automated process to
 try a large number of possible values.
What can be bruteforced?
"    Predictable credentials (HTML Forms and HTTP)!
"    Predictable sessions identifier (session id s)!
"    Predictable resource location (directories and files)!
"    Parameters names, values !
"    Cookies!
"    Web Services methods!
Where?

"    Headers!
"    Forms (POST)!
"    URL (GET)!
"    Authentication!
Wfuzz para Penetration Testers
Basic usage 

wfuzz.py -c –z file,wordlist/general/common.txt http://
www.target.com/FUZZ
Basic usage - verbose


wfuzz.py -c –z file,wordlist/general/common.txt -v http://
www.target.com/FUZZ
Basic filtering
wfuzz.py -c -z file,wordlist/general/test.txt --hc 404 http://
target.com/FUZZ
Basic filtering
Don’t underestimate a 404. Use the Baseline!
Advance filtering
    But I want the
    request X but
     with this and
                      Built-in Expression filter
      not this....
    parser 

                        wfuzz.py –filter “c=200 and
                        (w>300 and w<600)”
Range sweeping

wfuzz.py -c -z file,hosts.txt -z list,admin-phpMyAdmin-test
FUZZ/FUZ2Z 

wfuzz.py -c -z range,1-254 -z list,admin- phpMyAdmin-test
http://192.168.0.FUZZ/FUZ2Z
Scanning internal networks
                                                                           servers
                                                                              
Scanning through proxies!
                                                                           servers
                                                                              
                                           Server/w deployed               servers
                    Tester
                       proxy
                      
                                                                           servers
                                                                              
                                                                           servers
                                                                              
 wfuzz -x serverip:53 -c -z range -r 1-254 --hc XXX -t 5 http://10.10.1.FUZZ
 -x set proxy
 --hc is used to hide the XXX error code from the results, as machines w/o webserver will
 fail the request.
#
Using multiple encodings per
payload #

wfuzz.py – z list,..,double_nibble_hexa@second_nibble_hexa
@uri_double http://targetjboss.com/FUZZ/jmx-console
#
Fuzzing using 3 payloads #


wfuzz.py -z list,dir1-dir2 -z file,wordlist/general/common.txt -
z list,jsp-php-asp http://target.com/FUZZ/FUZ2Z.FUZ3Z
#
Username payload#

wfuzz.py -c -z username,John-doe -z list,123456- admin-
password-love -b "user=FUZZ&pass=FUZ2Z" http://
localhost:8888/test/login.php
#
User-Agent brute forcing#
Password cracking
"    Vertical scanning (different password for each user)
"    Horizontal scanning (different usernames for common
     passwords)
"    Diagonal scanning (different username/password each
     round)
"    Three dimension (Horizontal, Vertical or Diagonal +
     Distributing source IP)
"    Four dimensions (Horizontal, Vertical or Diagonal + Time
     Delay + Distributing Source IP)
Password cracking

Diagonal
           Horizontal
•    admin/test
    admin/test
•    guest/guest
   guest/test

•    user/1234x
    user/test
Password cracking Horizontal 


wfuzz –z list,pass1-pass –z list,us1-us2 http://
target.com/user=FUZ2Z &pass=FUZZ
Password cracking#
Three dimensional

wfuzz –z list,pass1-pass –z list,us1-us2 –s 1 http://
target.com/user=FUZ2Z &pass=FUZZ
Password cracking#
Four dimensional

Wfuzz –z list,pass1-pass –z list,us1-us2 –s 1 –p ip:8080-
ip2:8080-ip3:8088 http://target.com/user=FUZ2Z
&pass=FUZZ
Load balancing
              Proxy
             HTTP 1


             Proxy
 Attacker
             Target
             HTTP
               ...


              TOR
#
Permutation payload #


wfuzz.py -c -z permutation,abcdefghijk-2 -z permutation,
1234567890-2 --hc 404 --hl BBB http://localhost:8888/test/
parameter.php? action=FUZZ{a}FUZ2Z{a}
Scripting engine
                Payload
                   
 FUZZ Engine
         Fuzz
                         Fuzz
                     Result
                       
Result
                          



                                  Plugin
                                    
   HTTP
           Plugin
   Engine
         Engine
                                  Plugin
“Parsing” HTTP Response
“Grep” HTTP responses
“Grep” HTTP responses
Evidence collection
Imagine an internal assessment 100s or 1000s of webapps
and very little time?
Under development
Under development
•    Multi step or sequences




      Do X
                     IF      Do Y
                                COND
Using external tools
Magic tree integration
?
Latest news and versions


•    http://code.google.com/p/wfuzz
•    http://edge-security.blogspot.com
References
"   http://www.owasp.org/index.php/Testing_for_Brute_Force_(OWASP-AT-004)

"   http://projects.webappsec.org/Predictable-Resource-Locatio

"   http://projects.webappsec.org/Credential-and-Session-Prediction

"   http://projects.webappsec.org/Brute-Force

"   http://www.technicalinfo.net/papers/StoppingAutomatedAttackTools.html

"   http://gawker.com/5559346

"   http://tacticalwebappsec.blogspot.com/2009/09/distributed-brute-force-attacks-against.html

"   Detecting Malice, Rsnake

More Related Content

PPTX
File inclusion
PDF
Building Advanced XSS Vectors
PPT
Cross Site Request Forgery
PPTX
Mobile Application Security
PDF
Why Task Queues - ComoRichWeb
PDF
ExpressJS-Introduction.pdf
PDF
Offzone | Another waf bypass
PDF
Linux Servers
File inclusion
Building Advanced XSS Vectors
Cross Site Request Forgery
Mobile Application Security
Why Task Queues - ComoRichWeb
ExpressJS-Introduction.pdf
Offzone | Another waf bypass
Linux Servers

What's hot (20)

PDF
Privilege escalation from 1 to 0 Workshop
PPTX
Apache web service
PPSX
Broken Authentication & authorization
PDF
Time based CAPTCHA protected SQL injection through SOAP-webservice
PPTX
NGINX: Basics and Best Practices
KEY
Django Celery
PPTX
Linux privilege escalation
PPTX
Attacking thru HTTP Host header
PDF
Hunting for security bugs in AEM webapps
PDF
Ch 10: Hacking Web Servers
PPTX
Microsoft Offical Course 20410C_02
PPTX
Web and Mobile Application Security
PDF
Hashicorp Vault: Open Source Secrets Management at #OPEN18
PPTX
PPTX
John the ripper & hydra password cracking tool
PPT
Introduction to SSH
PDF
Thick Client Penetration Testing.pdf
Privilege escalation from 1 to 0 Workshop
Apache web service
Broken Authentication & authorization
Time based CAPTCHA protected SQL injection through SOAP-webservice
NGINX: Basics and Best Practices
Django Celery
Linux privilege escalation
Attacking thru HTTP Host header
Hunting for security bugs in AEM webapps
Ch 10: Hacking Web Servers
Microsoft Offical Course 20410C_02
Web and Mobile Application Security
Hashicorp Vault: Open Source Secrets Management at #OPEN18
John the ripper & hydra password cracking tool
Introduction to SSH
Thick Client Penetration Testing.pdf
Ad

Similar to Wfuzz para Penetration Testers (20)

PPS
Hacking Client Side Insecurities
PDF
Build Automation 101
PPT
Assurer - a pluggable server testing/monitoring framework
PPTX
SDOC-9384E354D357952A32C22C63F420335F-12-16-SI.pptx
PDF
Wfuzz for Penetration Testers
PDF
Intrusion Techniques
PPTX
Swift distributed tracing method and tools v2
PDF
Securing APIs
PDF
Kafka and kafka connect
PPTX
Owning computers without shell access dark
PPT
SaltConf14 - Ben Cane - Using SaltStack in High Availability Environments
PPTX
Hunting for APT in network logs workshop presentation
PPTX
Driver Debugging Basics
PDF
Caching with Varnish
PPTX
Monkey man
PDF
SOHOpelessly Broken
PDF
Romulus OWASP
PDF
Spark Summit EU talk by Debasish Das and Pramod Narasimha
PDF
Spark Summit EU talk by Debasish Das and Pramod Narasimha
PPTX
Bug Bounty for - Beginners
Hacking Client Side Insecurities
Build Automation 101
Assurer - a pluggable server testing/monitoring framework
SDOC-9384E354D357952A32C22C63F420335F-12-16-SI.pptx
Wfuzz for Penetration Testers
Intrusion Techniques
Swift distributed tracing method and tools v2
Securing APIs
Kafka and kafka connect
Owning computers without shell access dark
SaltConf14 - Ben Cane - Using SaltStack in High Availability Environments
Hunting for APT in network logs workshop presentation
Driver Debugging Basics
Caching with Varnish
Monkey man
SOHOpelessly Broken
Romulus OWASP
Spark Summit EU talk by Debasish Das and Pramod Narasimha
Spark Summit EU talk by Debasish Das and Pramod Narasimha
Bug Bounty for - Beginners
Ad

More from Source Conference (20)

PPTX
Million Browser Botnet
PDF
iBanking - a botnet on Android
PPTX
I want the next generation web here SPDY QUIC
PPTX
From DNA Sequence Variation to .NET Bits and Bobs
PPTX
Extracting Forensic Information From Zeus Derivatives
PPTX
How to Like Social Media Network Security
PDF
Security Goodness with Ruby on Rails
PDF
Securty Testing For RESTful Applications
PPSX
Esteganografia
PPTX
Men in the Server Meet the Man in the Browser
PDF
Advanced Data Exfiltration The Way Q Would Have Done It
PPTX
Adapting To The Age Of Anonymous
PDF
Are Agile And Secure Development Mutually Exclusive?
PDF
Advanced (persistent) binary planting
PPTX
Legal/technical strategies addressing data risks as perimeter shifts to Cloud
PDF
Who should the security team hire next?
PDF
The Latest Developments in Computer Crime Law
PDF
JSF Security
PPTX
How To: Find The Right Amount Of Security Spend
PPTX
Everything you should already know about MS-SQL post-exploitation
Million Browser Botnet
iBanking - a botnet on Android
I want the next generation web here SPDY QUIC
From DNA Sequence Variation to .NET Bits and Bobs
Extracting Forensic Information From Zeus Derivatives
How to Like Social Media Network Security
Security Goodness with Ruby on Rails
Securty Testing For RESTful Applications
Esteganografia
Men in the Server Meet the Man in the Browser
Advanced Data Exfiltration The Way Q Would Have Done It
Adapting To The Age Of Anonymous
Are Agile And Secure Development Mutually Exclusive?
Advanced (persistent) binary planting
Legal/technical strategies addressing data risks as perimeter shifts to Cloud
Who should the security team hire next?
The Latest Developments in Computer Crime Law
JSF Security
How To: Find The Right Amount Of Security Spend
Everything you should already know about MS-SQL post-exploitation

Recently uploaded (20)

PPTX
Cloud computing and distributed systems.
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Empathic Computing: Creating Shared Understanding
PDF
KodekX | Application Modernization Development
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
Spectroscopy.pptx food analysis technology
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Machine learning based COVID-19 study performance prediction
PDF
Encapsulation theory and applications.pdf
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
Cloud computing and distributed systems.
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
“AI and Expert System Decision Support & Business Intelligence Systems”
Review of recent advances in non-invasive hemoglobin estimation
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Empathic Computing: Creating Shared Understanding
KodekX | Application Modernization Development
Encapsulation_ Review paper, used for researhc scholars
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Spectroscopy.pptx food analysis technology
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Advanced methodologies resolving dimensionality complications for autism neur...
Unlocking AI with Model Context Protocol (MCP)
MIND Revenue Release Quarter 2 2025 Press Release
NewMind AI Weekly Chronicles - August'25 Week I
Machine learning based COVID-19 study performance prediction
Encapsulation theory and applications.pdf
Reach Out and Touch Someone: Haptics and Empathic Computing
Diabetes mellitus diagnosis method based random forest with bat algorithm
20250228 LYD VKU AI Blended-Learning.pptx

Wfuzz para Penetration Testers

  • 1. WFUZZ ! for Penetration Testers! Christian Martorella & Xavier Mendez! SOURCE Conference 2011! Barcelona! ! !
  • 2. Who we are? •  Security Consultants at Verizon Business Threat and Vulnerability Team EMEA •  Members of Edge-security.com
  • 3. What is this presentation about? WFUZZ: a Web Application brute forcer / fuzzer And how this tool can be used in your Penetration test engagements
  • 4. What is WFUZZ? It ́s a web application brute forcer, that allows you to perform complex brute force attacks in different web application parts as: parameters, authentication, forms, directories/files, headers files, etc. It has complete set of features, payloads and encodings.
  • 5. WFUZZ •  Started a few years ago and have been improving until now (and hopefully will continue improving) •  Has been presented at Blackhat Arsenal US 2011 •  It’s included in the TOP 125 Security tools by Insecure.org
  • 6. Key features •  Multiple injection points •  Advance Payload management (Iterators) •  Multithreading •  Encodings •  Result filtering •  Proxy and SOCKS support (multiple proxies)
  • 7. New features •  Added HEAD method scanning •  Fuzzing in HTTP methods •  Added follow HTTP redirects option
  • 8. New features •  Plugin framework, allowing to execute actions on response contents, or when a condition are met •  Multiple filtering (show, hide, filter expression, regex) •  Attack pause/resume •  Delay between requests
  • 9. Extensibility Payloads, encoders , iterators, plugins and printers. Payload Encoders Printer Iterator FUZZ Engine Printer Payload Plugin Plugin Encoders
  • 10. Payloads A payload is what generates the list of requests to send in the session. - file: reads from a file - stdin: reads from the stdin (cwel) - list: define a list of objects (1-2-3-4-5) - hexrand: define a hexa random list ( - range: define a numeric range (1-30) - names: creates potential user names combinations (john.doe,j.doe,etc) - hexrange: define a random hexa range - overflow:
  • 11. Encoders Converts information from one format to another - urlencode - binary_ascii word - double_urlencode - double_nibble_hexa - first_nibble_hexa - md5 - html_encoder - none - uri_hexadecimal - sha1 - base64 - utf8_binary - mssql_char - html_encoder_hexa MD5 - uri_double_hexadecimal - uri_unicode - mysql_char - oracle_char - utf8 - random_uppercase - second_nibble_hexa - html_encoder_decimal c47d187067c6 cf953245f128b 5fde62a
  • 12. Base64 encoder •  Encoders.py
  • 13. Iterators An iterator allows to process every element of a container while isolating from the internal structure of the container. An Iterator could be created from combining iterables: A1 A2 A3 B1 B2 B3 C1 … A B C Product Zip A1 B1 C1 1 2 3 Chain A B C 1 2 3
  • 14. Putting it all together wfuzz.py -z range,0-2,md5 –z list,a-b-c -m product –o magictree http://www.myweb.com/FUZZ - Payload: range - Encoder: md5 - Printer: magictree - Iterator: product
  • 15. Need for speed 60% faster Up to 900 request /second
  • 17. A brute force attack is a method to determine an unknown value by using an automated process to try a large number of possible values.
  • 18. What can be bruteforced? "  Predictable credentials (HTML Forms and HTTP)! "  Predictable sessions identifier (session id s)! "  Predictable resource location (directories and files)! "  Parameters names, values ! "  Cookies! "  Web Services methods!
  • 19. Where? "  Headers! "  Forms (POST)! "  URL (GET)! "  Authentication!
  • 21. Basic usage wfuzz.py -c –z file,wordlist/general/common.txt http:// www.target.com/FUZZ
  • 22. Basic usage - verbose wfuzz.py -c –z file,wordlist/general/common.txt -v http:// www.target.com/FUZZ
  • 23. Basic filtering wfuzz.py -c -z file,wordlist/general/test.txt --hc 404 http:// target.com/FUZZ
  • 24. Basic filtering Don’t underestimate a 404. Use the Baseline!
  • 25. Advance filtering But I want the request X but with this and Built-in Expression filter not this.... parser wfuzz.py –filter “c=200 and (w>300 and w<600)”
  • 26. Range sweeping wfuzz.py -c -z file,hosts.txt -z list,admin-phpMyAdmin-test FUZZ/FUZ2Z wfuzz.py -c -z range,1-254 -z list,admin- phpMyAdmin-test http://192.168.0.FUZZ/FUZ2Z
  • 27. Scanning internal networks servers Scanning through proxies! servers Server/w deployed servers Tester proxy servers servers wfuzz -x serverip:53 -c -z range -r 1-254 --hc XXX -t 5 http://10.10.1.FUZZ -x set proxy --hc is used to hide the XXX error code from the results, as machines w/o webserver will fail the request.
  • 28. # Using multiple encodings per payload # wfuzz.py – z list,..,double_nibble_hexa@second_nibble_hexa @uri_double http://targetjboss.com/FUZZ/jmx-console
  • 29. # Fuzzing using 3 payloads # wfuzz.py -z list,dir1-dir2 -z file,wordlist/general/common.txt - z list,jsp-php-asp http://target.com/FUZZ/FUZ2Z.FUZ3Z
  • 30. # Username payload# wfuzz.py -c -z username,John-doe -z list,123456- admin- password-love -b "user=FUZZ&pass=FUZ2Z" http:// localhost:8888/test/login.php
  • 32. Password cracking "  Vertical scanning (different password for each user) "  Horizontal scanning (different usernames for common passwords) "  Diagonal scanning (different username/password each round) "  Three dimension (Horizontal, Vertical or Diagonal + Distributing source IP) "  Four dimensions (Horizontal, Vertical or Diagonal + Time Delay + Distributing Source IP)
  • 33. Password cracking Diagonal Horizontal •  admin/test admin/test •  guest/guest guest/test •  user/1234x user/test
  • 34. Password cracking Horizontal wfuzz –z list,pass1-pass –z list,us1-us2 http:// target.com/user=FUZ2Z &pass=FUZZ
  • 35. Password cracking# Three dimensional wfuzz –z list,pass1-pass –z list,us1-us2 –s 1 http:// target.com/user=FUZ2Z &pass=FUZZ
  • 36. Password cracking# Four dimensional Wfuzz –z list,pass1-pass –z list,us1-us2 –s 1 –p ip:8080- ip2:8080-ip3:8088 http://target.com/user=FUZ2Z &pass=FUZZ
  • 37. Load balancing Proxy HTTP 1 Proxy Attacker Target HTTP ... TOR
  • 38. # Permutation payload # wfuzz.py -c -z permutation,abcdefghijk-2 -z permutation, 1234567890-2 --hc 404 --hl BBB http://localhost:8888/test/ parameter.php? action=FUZZ{a}FUZ2Z{a}
  • 39. Scripting engine Payload FUZZ Engine Fuzz Fuzz Result Result Plugin HTTP Plugin Engine Engine Plugin
  • 43. Evidence collection Imagine an internal assessment 100s or 1000s of webapps and very little time?
  • 45. Under development •  Multi step or sequences Do X IF Do Y COND
  • 48. ?
  • 49. Latest news and versions •  http://code.google.com/p/wfuzz •  http://edge-security.blogspot.com
  • 50. References " http://www.owasp.org/index.php/Testing_for_Brute_Force_(OWASP-AT-004) " http://projects.webappsec.org/Predictable-Resource-Locatio " http://projects.webappsec.org/Credential-and-Session-Prediction " http://projects.webappsec.org/Brute-Force " http://www.technicalinfo.net/papers/StoppingAutomatedAttackTools.html " http://gawker.com/5559346 " http://tacticalwebappsec.blogspot.com/2009/09/distributed-brute-force-attacks-against.html " Detecting Malice, Rsnake