Git Product home page Git Product logo

wpbf's People

Contributors

atarantini avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wpbf's Issues

Request cache POST support

The simple dictionary based cache in Wp module only works for GET. All values passed via POST are ignored.

Stress & Benchmark

Select key pages (home, one post, one page, one tag, one category, one author, all current links in the home, etc) from the blog and request them X times timing each request. Then show a stats of each page and the sum of the time and average.

Simple heuristics to Author's archive page enumeration technique

Enumerating users within the Author's archive page is done parsing the "title" tag, but sometimes the author's archive page is formated different. If the "title" tag is stored and them compared with other "title" pages the difference will be the username.

Move filter_domain()

Move the filter_domain() funcion from the main script to an more adequate place

Plugin detection

Use one of the available methods (ex: request /wp-content/plugins/PLUGIN-NAME and check for 404) with a list of known plugins. The list can be a external plain-text file so the user can update the list manually without editing Python files.

Basic URL fix

Basic URL fix, add "http://" if not added, add "/" at the end of the URL, etc.

Handle exceptions inside threads

When threads have exceptions (ex: Error 500) they usually stop working and the assigned job from the queue is not finished. If all threads experiment some exception the bruteforce become stalled.

Full Path Disclosure

There is a common error in the way that coders of plugins and themes call some funcions (and don't check is the function is available). Calling certain files of plugins/errors we can know the full path where wordpress is installed.

This function should be part of "fingerprint".

Task factory

Factory of tasks, posibly using reflection to automate/simplify task factory calling.

Additional username detection

Some blogs only expose the username in this string:

<link rel="alternate" type="application/rss+xml" title="Blog title &raquo; RSS entries of AUTHOR" href="http://blogurl.com/?feed=rss2&amp;author=3" />

Re-queue http error 500

Some tasks that perform network operations sometimes get 500 or timed-out; we can requeue ths tasks to try again later. If is implemented over WpbfWorker can act like a generic requeue method (only if the task is defined as requeueable).

Check imports

Check that all imported modules are being used for something inside the script

Detect "Login LockDown"

When testing URL and Username, search for "Login LockDown" string in order to detect if the mentioned plugin is running.

Multiple target support

Support for multiple targets adding a new argument and passing a file name that must contain one URL per line. Another option can be a bundled shell script that launches wpbf from a file with one URL per line as a tool for masive, automated and regular testing.

Maybe a new argument to specify a log file where results are stored, or events to trigger when a password/plugin/vuln is found.

Task re-queue (or enqueue within a task)

Sometimes a task fails and can must be requeued or a taks need to issue new tasks.

For example, when trying a login and get a request error we must requeue that task and do login again in order to assure that all words from the list get tested.

Other future implementation can be a tasks launching new tasks, like exploits tasks on specific plugins or additional data about certain type of discovery.

Parseable output in JSON format

Add new parameter (-o output.json) to store results in a parseable file (json or csv):

$ ./wpbf.com -o output.json http://localhost/wordpress/
2013-03-09 18:03:20,462 - INFO - Target URL: http://vulsai.com/
2013-03-09 18:03:20,475 - INFO - Checking URL & username...
2013-03-09 18:03:20,475 - INFO - Enumerating users...
2013-03-09 18:05:53,331 - INFO - Usernames: admin, andres
2013-03-09 18:05:55,216 - INFO - 89 plugins will be tested
2013-03-09 18:05:55,216 - INFO - Writing results to output.json...

Results may be grouped and look like:

{
    "users": [ "admin", "andres" ],
    "plugins": {
        "contact-form-7": { "version": "1.2.3" },
        "akismet": { "version": "0.1.7" }
    },
    "passwords": {
        "admin": "admin",
        "andres": "1234"
    }
}

Refactor how "proxy" argument is treated

The argument "-p / --proxy" is managed in a unusual way (regardin all the other arguments). Normalization of this parameter is needed to mantain the code flat and clear.

More regexp

The code have some text matching with regexps and with "in", some re well writen, but some are a dirty thing. See how to do this matches in a more elegant way.

Log inside wplib

Extend the logger application-wide, this will ensure easy debuging when using external libraries or whatver will be included in the future.

WordPress version detection

Usually the header of the templates have this tag:

<meta name="generator" content="WordPress 3.1.4" />

We can fech the version for there!

Fix keyword filter

Keywords that contain characters listed in "config.ignore_with" must be removed.

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.