GithubHelp home page GithubHelp logo

ronin-rb / ronin-app Goto Github PK

View Code? Open in Web Editor NEW
4.0 2.0 5.0 343 KB

[WIP] A local web interface for Ronin.

Home Page: https://ronin-rb.dev

License: GNU Affero General Public License v3.0

Dockerfile 0.20% Ruby 46.74% Procfile 0.04% JavaScript 0.96% CSS 0.87% Shell 3.32% HTML 47.87%
local webapp roninrb wip masscan network-scanning nmap spider exploit-database payloads-database

ronin-app's People

Contributors

ai-mozi avatar postmodern avatar sweetdevil144 avatar ttilberg avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

ronin-app's Issues

Add systemd service files

Add systemd service files for running ronin-app. foreman export systemd can export the files. They must also depend on the redis.service service.

Add red asterisks to required form fields

Add the typical red asterisk to all required form fields.

Could add this as a CSS class.

.label.is-required::after {
  content: ' *';
  color: red;
}

Would also need to add the usual blurb text " means a required field" to the forms.

Add more `/db/` routes and views

Flush out the /db/ routes and views. Must provide access to all other database models (ex: OpenPort, Port, ASN, Credential, etc) with links to other routes.

  • /db/urls
  • /db/urls/:id
  • /db/url_schemes
  • /db/url_schemes/:id
  • /db/url_query_param_names
  • /db/url_query_param_names/:id
  • /db/mac_addresses
  • /db/mac_address/:id
  • /db/open_ports
  • /db/open_port/:id
  • /db/services
  • /db/service/:id
  • /db/ports
  • /db/port/:id
  • /db/oses
  • /db/oses/:id
  • /db/asns
  • /db/asn/:id
  • /db/passwords
  • /db/password/:id
  • /db/user_names
  • /db/user_name/:id
  • /db/email_addresses
  • /db/email_address/:id
  • /db/credentials
  • /db/credential/:id
  • /db/software
  • /db/software/:id
  • /db/software_vendors
  • /db/software_vendors/:id
  • /db/advisories
  • /db/advisory/:id

Add support for switching the database

Since the app uses ronin-db and [roin-db] supports configuring multiple databases, it should be possible to switch to another database as the app is running. Possibly the current database name would be stored in the session cookie or sent to Sidekiq workers which import data into the database? I'm not sure how we would tell ActiveRecord to use another database, or whether we'd simply call ActiveRecord.establish_connection again to switch to another database?

Add a `/network/dns` route

Add a /network/dns route and form for performing arbitrary DNS queries. It should use JavaScript to send another HTTP request to another route (ex: /network/dns/query), which would send the DNS query using Ronin::Support::Network::DNS::Resolver and return the response object as JSON, which would then be parsed and rendered by the JavaScript.

There should also be an Import checkbox that causes both the DNS query and response as Ronin::DB::DNSQuery and Ronin::DB::DNSRecord records.

Eventually add a NixOS build file for `nix shell`

Add a Nix build file so users can run nix shell and have all of the dependencies installed within a nix environment. I'm not a NixOS user and know little about it, so I'll need help on this one.

Package as a gem

Package ronin-app as a gem. Add gemspec.yml and ronin-app.gemspec files. This will allow easily installing ronin-app as a gem, or being added as a dependency.

Random ActiveRecord timeouts

For some reason ActiveRecord randomly times out when accessing the sqlite3 database. Not sure if we need to configure ActiveRecord to somehow avoid this?

ActiveRecord::ConnectionTimeoutError - could not obtain a connection from the pool within 5.000 seconds (waited 5.003 seconds); all pooled connections were in use:

We need to clear the ActiveRecord connection pool or obtain/release an individual connection for the app routes and the SideKiq workers.

  • App
  • SideKiq workers

Display `Notes` on all `/db/` `show.erb` views

ronin-db-activerecord 0.2.0 added an notes association to IPAddress, HostName, MACAddress, EmailAddress, URL, etc. All /db/ show.erb views should display notes as Notes. Also add a _notes.erb partial template for rendering a notes Array.

Change the Docker config/image to use it's own DB?

Change the Docker config/image to mount ~/.local/share/ronin-db/ as a volume. This can be done using the VOLUME keyword. This should allow users to pull down the ronin-app docker image and quickly run it with docker, and not have to use docker-compose or pass in complex options to docker run.

Add a `/exploits` section

Add routes for listing Ronin::Exploits, loading and displaying an exploit's metadata. Will need to figure out how to execute an exploit from the backend and provide a shell-like interface on the frontend similar to ronin-exploits run's post-exploitation shell.

Add a `/repos` section

Add routes for accessing Ronin::Repos::CacheDir. It should list installed repos, allow installing a repo from a git URI, updating repo(s), or uninstalling a repo.

Add a `/nmap/import` route

Add a route for importing nmap XML files. Also add a Sidekiq worker for importing nmap XML files. The "upload" form should use a <input type="filePath"> input to only upload the file path, which will then be passed to the Sidekiq worker.

Add a `/masscan/import` route

Add a route for importing masscan scan files. Also add a Sidekiq worker for importing masscan scan files. The "upload" form should use a <input type="filePath"> input to only upload the file path, which will then be passed to the Sidekiq worker.

Add a `Workers::Vulns` sidekiq worker class

Add a Workers::Vulns sidekiq worker class that scans a URL for web vulnerabilities using Ronin::Vulns::URLScanner. It must create a report of found vulnerabilities that is somehow passed back to the frontend.

Add a fancy D3 network graph visualization

Add a fancy D3 network graph visualization that can visualize a single IP, Host, or URL, then show related database records as connected nodes. When the user clicks on another node, load that node's related database records and render them as additional connected nodes. This will allow the user to explore the database without loading ALL of the data into the browser at once.

Add a `/payloads` section

Add routes for listing Ronin::Payloads, loading and viewing metadata about a specific payload, or building a payload.

Horizontally center the menu and logo

The menu and logo is currently left-justified and doesn't look correct. They should be horizontally centered.

Note: the app uses Bulma CSS's .hero and .container CSS helper classes for the logo and menu.

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.