Git Product home page Git Product logo

see-surf's Introduction

See-SURF

A Python based scanner to find potential SSRF parameters in a web application.

Motivation

SSRF being one of the critical vulnerabilities out there in web, i see there was no tool which would automate finding potential vulnerable parameters. See-SURF can be added to your arsenal for recon while doing bug hunting/web security testing.

Screenshots

alt text

Tech/framework used

Built with

  • Python3

Features

  1. Matches any GET URL Parameters containing keyword web/url (MORE TO BE ADDED).
    Example google.com/url=https://yahoo.com
    Also,
    checks the parameter values for any URL or IP address passed.
    Example: google.com/q=https://yahoo.com

  2. Matches any POST request INPUT params with "Name" attribute containing keyword web/url(MORE TO BE ADDED)
    Also,
    matches Values and Placeholder attribute containing a URL pattern.
    Example:
    <input type="text" name="url" value="https://google.com" placeholder="https://msn.com">

  3. Multiple conditions to cut down false positives, as crawling pulls up a lot of stuff. Only same domain is crawled for now.

  4. By Default, normal mode is On, with verbose switch you would see the same vulnerable param in different endpoints. Same parameter may not be sanitized at all places. But verbose mode generates a lot of noise.
    Example:
    https://google.com/abc/1/urlToConnect=https://yahoo.com>
    https://google.com/123/urlToConnect=https://yahoo.com

  5. Supply cookies for an authenticated scanning.

  6. Comments on almost every logic so people who would like to contribute can understand easily.

  7. Makes external request with the vulnerable parameter to confirm the possibility of SSRF

How to use?

[-] This would run with default threads=10, no cookies/session and NO verbose mode
python3 see-surf.py -H https://www.google.com

[-] Space separate Cookies can be supplied for an authenticated session crawling
python3 see-surf.py -H https://www.google.com -c cookie_name1=value1 cookie_name2=value2

Recently added feature

[-] Fire up burpsuite collaborator and pass the host with -p parameter Or start a simple python http server and wait for the vulnerable param to execute your request. (Highly Recommended)
Payload will get executed with the param at the end of the string so its easy to identify which one is vulnerable. For example: http://72.72.72.72:8000/vulnerableparam

python3 see-surf.py -H https://www.google.com -c cookie_name1=value1 cookie_name2=value2 -p http://72.72.72.72:8000

alt text

[-] Supplying no. of threads and verbose mode (VERBOSE MODE IS NOT RECOMMENDED IF YOU DON'T WANT TO SPEND LONGER TIME BUT THE POSSIBILITY OF BUG FINDING INCREASES)
python3 see-surf.py -H https://www.google.com -c cookie_name1=value1 cookie_name2=value2 -t 20 -v

By Default, normal mode is On, with verbose switch you would see the same potential vulnerable param in different endpoints. (Same parameter may not be sanitized at all places. But verbose mode generates a lot of noise.)
Example:
https://google.com/abc/1/urlToConnect=https://yahoo.com
https://google.com/123/urlToConnect=https://yahoo.com

Installation

git clone https://github.com/In3tinct/See-SURF.git
cd See-SURF/
pip3 install BeautifulSoup4
pip3 install requests

Tests

A basic framework has been created. More tested would be added to reduce any false positives.

Contribute

  • Report bugs.
  • Suggestions for improvement.
  • Suggestions for future extensions.

Credits

Template - https://gist.github.com/akashnimare/7b065c12d9750578de8e705fb4771d2f
Some regexes from https://www.regextester.com/97040
Stackoverflow and Entire Internet.

Future Extensions

  • Include more places to look for potential params like Javascript files
  • Finding potential params during redirection.
  • More conditions to avoid false positives.
  • Exploitation. (Hitting Bulls eye)

License

GNUV3 © [In3tinct]

Twitter - https://twitter.com/_In3tinct

see-surf's People

Contributors

in3tinct avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.