Giter Site home page Giter Site logo

bishop's Introduction

Bishop

Bishop is a vulnerability scanner that searches websites in the background while you browse, looking for exposed version control systems, misconfigured administrative tools, and more.

It works by searching for files with a given path on the current URL path and all parent paths, applying given regex to the results to check for proof positive of a vulnerable location. If the path returns 200 and matches the regex, it's flagged as vulnerable and alerts you. All rules are run on all directories in a set of time-staggered background XHR requests, so network throughput remains high at all times.

Bishop comes with a set of rules that hunt for the lowest hanging fruit, but the rule system is entirely extensible - rules are regular expressions that are run on specified directories, so if you can turn it into a regex, Bishop will look for it. Try loading Bishop with the demo ruleset and see how it works. The risk classification allows you to set different tiers of vulnerability so applications can be tested to stricter or looser security guidelines.

Bishop is intended SOLELY for legal use on web servers that you control or are permitted to scan, and the developers are not responsible for how you choose to use this software. Be safe and legal with this tool.

Bishop is MIT licensed and open source; contribute at https://github.com/jkingsman/bishop.

Installation

After either installation method, you'll need to setup your inclusion whitelist (see the introduction on first run for more info).

Automatic

Download from the Chrome Web Store.

Image of Chrome Store Badge

Manual

You'll need node and npm set up on your system (which is beyond the scope of this README), and gulp installed (npm install -g gulp if you don't already have it).

  1. Clone this repo:

git clone [email protected]:jkingsman/bishop.git

  1. Move into it:

cd bishop

  1. Install the gulp dependencies:

npm install

  1. Make sure the build directory is empty:

gulp empty

  1. Build it, using any of the following commands:
gulp command result
gulp Lint the code and build the src directory into the dist directory. dist can be imported as an unpacked extension.
gulp zip Lint the code and build the src directory into the dist directory, then zip the dist directory into bishop.zip in the root bishop folder.
gulp watch Build the src directory into the dist directory and rebuild on changes to src.
gulp hint Lint all non-lib js. Doesn't build anything; done as part of gulp and gulp zip.

Adding Rules to the Code

If you have a general rule that you think others could find helpful, feel free to PR it. The fields are pretty self explanatory and match the GUI rule addition interface. The uid field can be left as is; it's just adding the unique ID for the rule. Risk is intended to describe the relative risk that such a vulnerability would indicate, allowing you to include stricter or looser security requirements for different applications.

Notes

  • Bishop is built on sending background XHR requests, many of which will result in 404's. These will show up in your console log, so be aware of that when browsing. If you feel comfortable ignoring 404's, you can check the "Hide network messages" box at the top of the console window.

  • The import formats are as follows:

    • rules

      • [{"description":"a few words descripting it","enabled":true,"name":"The Rule Name","risk":"low","searchString":"the regex to execut","uid":"random hex ID","url":"what URL addition (if any) to run the regex on"}, {...}]
    • sites

      • [{"rule":"matched rule name","uid":"random hex uid","url":matched URL"}, {...}]

License

MIT.


Flattr this

bishop's People

Contributors

jkingsman avatar rodrigograca31 avatar smileytiger1 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  avatar  avatar  avatar

bishop's Issues

Display escaped '\n' instead of actual newline in rules table

I was confused on why a rule was giving a false positive, so I checked options_demo.js and found the actual rule was Index(.|\n)*modified instead of Index(.| )*modified, but the rules table was displaying the latter. There's an actual newline in the HTML, which gets rendered as a space. This should be rendered as '\n' instead.

Queue processing is buggy

The queue will be processed, but the rapid storage access causes Chrome to whine, and there should be a better way to show as sites are processed one by one (just having them disappear and letting the m run in the background is a horrible idea). I'd love to have some kind of status indicator as sites are processed, but that means I need a way to pass callbacks all the way down into the XHR dispatching function... I don't know if there's a clean solution for this; I may just end up tearing out queueing. The volume it processes just doesn't seem feasible.

Opera

Opera is based on Chromium for quite a while now, and other projects such as uBlock supports Opera while supporting Chrome/Chromium. Is bishop for Opera feasible?

Opera Bug

Opera loads and runs the extension fine,

<!DOCTYPE html><html><head><tit... in options gives a security error...? Stemmed from #17.

Allow editing rules

I made a rule and made a mistake in the regex. Instead of being able to edit the rule, it seems like I have to make a new one.

Also, this is probably one of the most useful chrome extensions I've ever installed. Thanks for writing it.

Make popup better

Logo on top
Button to indicate enabled/disabled and change on click (Green/red with power symbol)
Button for options (Yellow with wrench)

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.